diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-11 13:34:31 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-03-11 13:34:53 +0000 |
| commit | fbcc85ad822a9870ebebfdbd6bbbaa41ef1dff4c (patch) | |
| tree | fe7d9659c46eaf5d06e58f76e5b28942bdffcd43 /packages | |
| parent | c87db85815d84ddf907d0a1d26226a2ab911181b (diff) | |
| download | karakeep-fbcc85ad822a9870ebebfdbd6bbbaa41ef1dff4c.tar.zst | |
mobile: An ugly but function share button
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/mobile/app/[bookmark]/[slug].tsx | 9 | ||||
| -rw-r--r-- | packages/mobile/app/_layout.tsx | 2 | ||||
| -rw-r--r-- | packages/mobile/app/error.tsx | 9 | ||||
| -rw-r--r-- | packages/mobile/app/sharing.tsx | 47 |
4 files changed, 66 insertions, 1 deletions
diff --git a/packages/mobile/app/[bookmark]/[slug].tsx b/packages/mobile/app/[bookmark]/[slug].tsx new file mode 100644 index 00000000..2ca88701 --- /dev/null +++ b/packages/mobile/app/[bookmark]/[slug].tsx @@ -0,0 +1,9 @@ +import { View, Text } from "react-native"; + +export default function Bookmark() { + return ( + <View className="flex-1 items-center justify-center gap-4"> + <Text className="text-4xl">Hoarded!</Text> + </View> + ); +} diff --git a/packages/mobile/app/_layout.tsx b/packages/mobile/app/_layout.tsx index d3cbbee1..bd269060 100644 --- a/packages/mobile/app/_layout.tsx +++ b/packages/mobile/app/_layout.tsx @@ -16,7 +16,7 @@ export default function RootLayout() { useEffect(() => { if (hasShareIntent) { router.replace({ - pathname: "shareintent", + pathname: "sharing", params: { shareIntent: JSON.stringify(shareIntent) }, }); resetShareIntent(); diff --git a/packages/mobile/app/error.tsx b/packages/mobile/app/error.tsx new file mode 100644 index 00000000..a6a18023 --- /dev/null +++ b/packages/mobile/app/error.tsx @@ -0,0 +1,9 @@ +import { View, Text } from "react-native"; + +export default function Error() { + return ( + <View className="flex-1 items-center justify-center gap-4"> + <Text className="text-4xl">Error!</Text> + </View> + ); +} diff --git a/packages/mobile/app/sharing.tsx b/packages/mobile/app/sharing.tsx new file mode 100644 index 00000000..948fed05 --- /dev/null +++ b/packages/mobile/app/sharing.tsx @@ -0,0 +1,47 @@ +import { useLocalSearchParams, useRouter } from "expo-router"; +import { ShareIntent } from "expo-share-intent"; +import { useEffect, useMemo } from "react"; +import { View, Text } from "react-native"; + +import { api } from "@/lib/trpc"; + +export default function Sharing() { + const router = useRouter(); + const params = useLocalSearchParams(); + + const shareIntent = useMemo(() => { + if (params && params.shareIntent) { + if (typeof params.shareIntent === "string") { + return JSON.parse(params.shareIntent) as ShareIntent; + } + } + return null; + }, [params]); + + const { mutate, isPending } = api.bookmarks.createBookmark.useMutation({ + onSuccess: (d) => { + router.replace(`bookmark/${d.id}`); + }, + onError: () => { + router.replace("error"); + }, + }); + + useEffect(() => { + if (!isPending && shareIntent?.text) { + mutate({ type: "link", url: shareIntent.text }); + } + }, []); + + useEffect(() => { + if (!shareIntent) { + router.replace("/"); + } + }, []); + + return ( + <View className="flex-1 items-center justify-center gap-4"> + <Text className="text-4xl">Hoarding ...</Text> + </View> + ); +} |
