Skip to content

Commit

Permalink
feature(mobile): Add support for deleting lists
Browse files Browse the repository at this point in the history
  • Loading branch information
MohamedBassem committed Aug 26, 2024
1 parent fdf055a commit 7593982
Showing 1 changed file with 57 additions and 3 deletions.
60 changes: 57 additions & 3 deletions apps/mobile/app/dashboard/lists/[slug].tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { View } from "react-native";
import { Stack, useLocalSearchParams } from "expo-router";
import { Alert, Platform, View } from "react-native";
import * as Haptics from "expo-haptics";
import { router, Stack, useLocalSearchParams } from "expo-router";
import UpdatingBookmarkList from "@/components/bookmarks/UpdatingBookmarkList";
import CustomSafeAreaView from "@/components/ui/CustomSafeAreaView";
import FullPageSpinner from "@/components/ui/FullPageSpinner";
import PageTitle from "@/components/ui/PageTitle";
import { api } from "@/lib/trpc";
import { MenuView } from "@react-native-menu/menu";
import { Ellipsis } from "lucide-react-native";

export default function ListView() {
const { slug } = useLocalSearchParams();
Expand All @@ -28,7 +31,12 @@ export default function ListView() {
query={{
listId: list.id,
}}
header={<PageTitle title={`${list.icon} ${list.name}`} />}
header={
<View className="flex flex-row items-center justify-between">
<PageTitle title={`${list.icon} ${list.name}`} />
<ListActionsMenu listId={list.id} />
</View>
}
/>
</View>
) : (
Expand All @@ -37,3 +45,49 @@ export default function ListView() {
</CustomSafeAreaView>
);
}

function ListActionsMenu({ listId }: { listId: string }) {
const { mutate } = api.lists.delete.useMutation({
onSuccess: () => {
router.replace("/dashboard/lists");
},
});

const handleDelete = () => {
Alert.alert("Delete List", "Are you sure you want to delete this list?", [
{ text: "Cancel", style: "cancel" },
{
text: "Delete",
onPress: () => {
mutate({ listId });
},
style: "destructive",
},
]);
};

return (
<MenuView
actions={[
{
id: "delete",
title: "Delete List",
attributes: {
destructive: true,
},
image: Platform.select({
ios: "trash",
}),
},
]}
onPressAction={({ nativeEvent }) => {
if (nativeEvent.event === "delete") {
handleDelete();
}
}}
shouldOpenOnLongPress={false}
>
<Ellipsis onPress={() => Haptics.selectionAsync()} color="gray" />
</MenuView>
);
}

0 comments on commit 7593982

Please sign in to comment.