From 93afb75619a02aa741b464634911b994620092be Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Sun, 28 Jul 2024 20:03:15 -0700 Subject: feat(mobile): Add ability to manage lists --- apps/mobile/app/_layout.tsx | 50 +++++---- apps/mobile/app/sharing.tsx | 40 +++++-- apps/mobile/components/bookmarks/BookmarkCard.tsx | 20 ++++ .../components/bookmarks/ListPickerModal.tsx | 117 +++++++++++++++++++++ apps/mobile/package.json | 5 +- 5 files changed, 201 insertions(+), 31 deletions(-) create mode 100644 apps/mobile/components/bookmarks/ListPickerModal.tsx (limited to 'apps') diff --git a/apps/mobile/app/_layout.tsx b/apps/mobile/app/_layout.tsx index a5aafb8c..f56aa810 100644 --- a/apps/mobile/app/_layout.tsx +++ b/apps/mobile/app/_layout.tsx @@ -3,6 +3,7 @@ import "expo-dev-client"; import { useEffect } from "react"; import { View } from "react-native"; +import { GestureHandlerRootView } from "react-native-gesture-handler"; import { useRouter } from "expo-router"; import { Stack } from "expo-router/stack"; import { ShareIntentProvider, useShareIntent } from "expo-share-intent"; @@ -10,6 +11,7 @@ import { StatusBar } from "expo-status-bar"; import { StyledStack } from "@/components/navigation/stack"; import { Providers } from "@/lib/providers"; import { cn } from "@/lib/utils"; +import { BottomSheetModalProvider } from "@gorhom/bottom-sheet"; import { useColorScheme } from "nativewind"; export default function RootLayout() { @@ -28,28 +30,32 @@ export default function RootLayout() { return ( - - - - - - - + + + + + + + + + + + ); diff --git a/apps/mobile/app/sharing.tsx b/apps/mobile/app/sharing.tsx index d1d39e5b..ee7bd609 100644 --- a/apps/mobile/app/sharing.tsx +++ b/apps/mobile/app/sharing.tsx @@ -1,10 +1,13 @@ -import { useEffect, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { ActivityIndicator, Text, View } from "react-native"; import { useRouter } from "expo-router"; import { useShareIntentContext } from "expo-share-intent"; +import ListPickerModal from "@/components/bookmarks/ListPickerModal"; +import { Button } from "@/components/ui/Button"; import useAppSettings from "@/lib/settings"; import { api } from "@/lib/trpc"; import { useUploadAsset } from "@/lib/upload"; +import { BottomSheetModal } from "@gorhom/bottom-sheet"; import { z } from "zod"; import { BookmarkTypes, ZBookmark } from "@hoarder/shared/types/bookmarks"; @@ -80,18 +83,39 @@ export default function Sharing() { const router = useRouter(); const [mode, setMode] = useState({ type: "idle" }); + let autoCloseTimeoutId: NodeJS.Timeout | null = null; + const addToListSheetRef = useRef(null); + let comp; switch (mode.type) { case "idle": { comp = ; break; } + case "alreadyExists": case "success": { - comp = Hoarded!; - break; - } - case "alreadyExists": { - comp = Already Hoarded!; + comp = ( + + router.replace("dashboard")} + /> + + {mode.type === "alreadyExists" ? "Already Hoarded!" : "Hoarded!"} + +