UNPKG

650 BPlain TextView Raw
1import { UnavailabilityError } from '@unimodules/core';
2
3type ShareOptions = { title?: string; text?: string; url?: string };
4
5export default {
6 get name(): string {
7 return 'ExpoSharing';
8 },
9 async isAvailableAsync(): Promise<boolean> {
10 if (typeof navigator === 'undefined') {
11 return false;
12 }
13
14 return !!navigator.share;
15 },
16 async shareAsync(url: string, options: ShareOptions = {}): Promise<void> {
17 // NOTE: `navigator.share` is only available via HTTPS
18 if (navigator.share) {
19 await navigator.share({ ...options, url });
20 } else {
21 throw new UnavailabilityError('navigator', 'share');
22 }
23 },
24};