From 40b3efacaa4a0f2e29011464735f4256ba7129ce Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Tue, 5 Jun 2018 01:18:57 +0200 Subject: [PATCH] FIX: sharing popup not showing on macos/chrome Despite `navigator.share` being defined the call was failing with this error: ``` sharing DOMException: Internal error: could not connect to Web Share interface. ``` --- .../discourse/components/share-popup.js.es6 | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/discourse/components/share-popup.js.es6 b/app/assets/javascripts/discourse/components/share-popup.js.es6 index 54ffeaa21fa..5705f3be594 100644 --- a/app/assets/javascripts/discourse/components/share-popup.js.es6 +++ b/app/assets/javascripts/discourse/components/share-popup.js.es6 @@ -83,10 +83,7 @@ export default Ember.Component.extend({ _webShare(url) { // We can pass title and text too, but most share targets do their own oneboxing - navigator.share({ - url: url - }) - .catch((error) => console.warn('Error sharing', error)); + return navigator.share({ url }); }, didInsertElement() { @@ -118,7 +115,13 @@ export default Ember.Component.extend({ // use native webshare only when the user clicks on the "chain" icon // navigator.share needs HTTPS, returns undefined on HTTP if (navigator.share && !$currentTarget.hasClass('post-date')) { - this._webShare(url); + this._webShare(url) + .catch(error => { + console.warn('Error sharing', error); + + // if navigator fails for unexpected reason fallback to popup + this._showUrl($currentTarget, url); + }); } else { this._showUrl($currentTarget, url); }