FIX: improves share/invite behavior on mobile and especially iOS (#7416)

This commit is contained in:
Joffrey JAFFEUX 2019-04-23 17:07:31 +02:00 committed by GitHub
parent dc60128355
commit d4e788c136
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 33 deletions

View File

@ -1,5 +1,4 @@
import showModal from "discourse/lib/show-modal";
import { nativeShare } from "discourse/lib/pwa-utils";
import { registerTopicFooterButton } from "discourse/lib/register-topic-footer-button";
export default {
@ -13,44 +12,40 @@ export default {
label: "topic.share.title",
title: "topic.share.help",
action() {
const modal = () => {
const panels = [
{
id: "share",
title: "topic.share.extended_title",
model: {
topic: this.get("topic")
}
const panels = [
{
id: "share",
title: "topic.share.extended_title",
model: {
topic: this.get("topic")
}
];
}
];
if (this.get("canInviteTo") && !this.get("inviteDisabled")) {
let invitePanelTitle;
if (this.get("canInviteTo") && !this.get("inviteDisabled")) {
let invitePanelTitle;
if (this.get("isPM")) {
invitePanelTitle = "topic.invite_private.title";
} else if (this.get("invitingToTopic")) {
invitePanelTitle = "topic.invite_reply.title";
} else {
invitePanelTitle = "user.invited.create";
}
panels.push({
id: "invite",
title: invitePanelTitle,
model: {
inviteModel: this.get("topic")
}
});
if (this.get("isPM")) {
invitePanelTitle = "topic.invite_private.title";
} else if (this.get("invitingToTopic")) {
invitePanelTitle = "topic.invite_reply.title";
} else {
invitePanelTitle = "user.invited.create";
}
showModal("share-and-invite", {
modalClass: "share-and-invite",
panels
panels.push({
id: "invite",
title: invitePanelTitle,
model: {
inviteModel: this.get("topic")
}
});
};
}
nativeShare({ url: this.get("topic.shareUrl") }).then(null, modal);
showModal("share-and-invite", {
modalClass: "share-and-invite",
panels
});
},
dropdown() {
return this.site.mobileView;

View File

@ -8,7 +8,7 @@ export function nativeShare(data) {
.share(data)
.then(resolve)
.catch(e => {
if (e.message === "Share canceled") {
if (e.name === "AbortError") {
// closing share panel do nothing
} else {
reject();