diff --git a/package.json b/package.json index 1097658e..2a7249f4 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "@capacitor/keyboard": "^8.0.0", "@capacitor/preferences": "^8.0.0", "@capacitor/push-notifications": "^8.0.0", + "@capacitor/share": "^8.0.1", "@capawesome/capacitor-android-dark-mode-support": "^8.0.0", "@capawesome/capacitor-badge": "^8.0.0", "@getalby/lightning-tools": "^6.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a6e25e0..1473dd50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: '@capacitor/push-notifications': specifier: ^8.0.0 version: 8.0.0(@capacitor/core@8.0.1) + '@capacitor/share': + specifier: ^8.0.1 + version: 8.0.1(@capacitor/core@8.0.1) '@capawesome/capacitor-android-dark-mode-support': specifier: ^8.0.0 version: 8.0.0(@capacitor/core@8.0.1) @@ -838,6 +841,11 @@ packages: peerDependencies: '@capacitor/core': '>=8.0.0' + '@capacitor/share@8.0.1': + resolution: {integrity: sha512-3cSBKBCJVon54rKDROP2rqGyeGks4pBh9TbaEk9S375Kbek/ZHe72N50zIa0Vn9Eac/SuhwgehO/mmA4CsUOiw==} + peerDependencies: + '@capacitor/core': '>=8.0.0' + '@capacitor/synapse@1.0.4': resolution: {integrity: sha512-/C1FUo8/OkKuAT4nCIu/34ny9siNHr9qtFezu4kxm6GY1wNFxrCFWjfYx5C1tUhVGz3fxBABegupkpjXvjCHrw==} @@ -6021,6 +6029,10 @@ snapshots: dependencies: '@capacitor/core': 8.0.1 + '@capacitor/share@8.0.1(@capacitor/core@8.0.1)': + dependencies: + '@capacitor/core': 8.0.1 + '@capacitor/synapse@1.0.4': {} '@capawesome/capacitor-android-dark-mode-support@8.0.0(@capacitor/core@8.0.1)': diff --git a/src/app/components/SpaceInvite.svelte b/src/app/components/SpaceInvite.svelte index 94edb2c2..d748798e 100644 --- a/src/app/components/SpaceInvite.svelte +++ b/src/app/components/SpaceInvite.svelte @@ -3,7 +3,9 @@ import {sleep} from "@welshman/lib" import {request} from "@welshman/net" import {displayRelayUrl, getTagValue, RELAY_INVITE} from "@welshman/util" + import {Share} from "@capacitor/share" import LinkRound from "@assets/icons/link-round.svg?dataurl" + import Upload from "@assets/icons/upload.svg?dataurl" import Copy from "@assets/icons/copy.svg?dataurl" import Spinner from "@lib/components/Spinner.svelte" import Field from "@lib/components/Field.svelte" @@ -27,6 +29,17 @@ const back = () => history.back() const copyInvite = () => clip(invite) + const shareInvite = async () => { + if (!canShare) return + + try { + await Share.share({url: invite}) + } catch (e) { + console.error(e) + } + } + + let canShare = $state(false) let claim = $state("") let loading = $state(true) let invite = $state("") @@ -38,6 +51,13 @@ }) onMount(async () => { + try { + const {value} = await Share.canShare() + canShare = value + } catch { + canShare = false + } + try { const [[event]] = await Promise.all([ request({ @@ -76,16 +96,28 @@
Oops! It looks like you're not a member of this relay.
{:else}