44 lines
1.0 KiB
JavaScript
44 lines
1.0 KiB
JavaScript
import { Promise } from "rsvp";
|
|
|
|
export function nativeShare(data) {
|
|
const caps = Discourse.__container__.lookup("capabilities:main");
|
|
return new Promise((resolve, reject) => {
|
|
if (!(caps.isIOS || caps.isAndroid || caps.isWinphone)) {
|
|
reject();
|
|
return;
|
|
}
|
|
if (
|
|
window.location.protocol === "https:" &&
|
|
typeof window.navigator.share !== "undefined"
|
|
) {
|
|
window.navigator
|
|
.share(data)
|
|
.then(resolve)
|
|
.catch(e => {
|
|
if (e.name === "AbortError") {
|
|
// closing share panel do nothing
|
|
} else {
|
|
reject();
|
|
}
|
|
});
|
|
} else {
|
|
reject();
|
|
}
|
|
});
|
|
}
|
|
|
|
export function getNativeContact(properties, multiple) {
|
|
const caps = Discourse.__container__.lookup("capabilities:main");
|
|
return new Promise((resolve, reject) => {
|
|
if (!caps.hasContactPicker) {
|
|
reject();
|
|
return;
|
|
}
|
|
|
|
navigator.contacts
|
|
.select(properties, { multiple })
|
|
.then(resolve)
|
|
.catch(reject);
|
|
});
|
|
}
|