diff options
| author | kamtschatka <simon.schatka@gmx.at> | 2024-07-01 13:03:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-01 12:03:53 +0100 |
| commit | e6486465decd612f7e437abe904960a47ff359ce (patch) | |
| tree | f36fd7efbcf2a083905061d8c5f1310f36350ced /apps/mobile | |
| parent | ccbff18a9763e458c07f46cb3a331062df14a9b9 (diff) | |
| download | karakeep-e6486465decd612f7e437abe904960a47ff359ce.tar.zst | |
refactor: added the bookmark type to the database (#256)
* refactoring asset types
Extracted out functions to silently delete assets and to update them after crawling
Generalized the mapping of assets to bookmark fields to make extending them easier
* Added the bookmark type to the database
Introduced an enum to have better type safety
cleaned up the code and based some code on the type directly
* add BookmarkType.UNKNWON
* lint and remove unused function
---------
Co-authored-by: MohamedBassem <me@mbassem.com>
Diffstat (limited to 'apps/mobile')
| -rw-r--r-- | apps/mobile/app/dashboard/add-link.tsx | 4 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/add-note.tsx | 7 | ||||
| -rw-r--r-- | apps/mobile/app/sharing.tsx | 6 | ||||
| -rw-r--r-- | apps/mobile/components/bookmarks/BookmarkCard.tsx | 13 | ||||
| -rw-r--r-- | apps/mobile/components/bookmarks/UpdatingBookmarkList.tsx | 3 | ||||
| -rw-r--r-- | apps/mobile/lib/upload.ts | 4 |
6 files changed, 23 insertions, 14 deletions
diff --git a/apps/mobile/app/dashboard/add-link.tsx b/apps/mobile/app/dashboard/add-link.tsx index 5096a9e7..d9773fb4 100644 --- a/apps/mobile/app/dashboard/add-link.tsx +++ b/apps/mobile/app/dashboard/add-link.tsx @@ -6,6 +6,8 @@ import { Input } from "@/components/ui/Input"; import { useToast } from "@/components/ui/Toast"; import { api } from "@/lib/trpc"; +import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; + export default function AddNote() { const [text, setText] = useState(""); const [error, setError] = useState<string | undefined>(); @@ -54,7 +56,7 @@ export default function AddNote() { autoFocus /> <Button - onPress={() => mutate({ type: "link", url: text })} + onPress={() => mutate({ type: BookmarkTypes.LINK, url: text })} label="Add Link" /> </View> diff --git a/apps/mobile/app/dashboard/add-note.tsx b/apps/mobile/app/dashboard/add-note.tsx index 40c97456..6b8f0fef 100644 --- a/apps/mobile/app/dashboard/add-note.tsx +++ b/apps/mobile/app/dashboard/add-note.tsx @@ -5,6 +5,8 @@ import { Button } from "@/components/ui/Button"; import { Input } from "@/components/ui/Input"; import { api } from "@/lib/trpc"; +import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; + export default function AddNote() { const [text, setText] = useState(""); const [error, setError] = useState<string | undefined>(); @@ -45,7 +47,10 @@ export default function AddNote() { placeholder="What's on your mind?" autoFocus /> - <Button onPress={() => mutate({ type: "text", text })} label="Add Note" /> + <Button + onPress={() => mutate({ type: BookmarkTypes.TEXT, text })} + label="Add Note" + /> </View> ); } diff --git a/apps/mobile/app/sharing.tsx b/apps/mobile/app/sharing.tsx index 7339a017..d1d39e5b 100644 --- a/apps/mobile/app/sharing.tsx +++ b/apps/mobile/app/sharing.tsx @@ -7,7 +7,7 @@ import { api } from "@/lib/trpc"; import { useUploadAsset } from "@/lib/upload"; import { z } from "zod"; -import type { ZBookmark } from "@hoarder/shared/types/bookmarks"; +import { BookmarkTypes, ZBookmark } from "@hoarder/shared/types/bookmarks"; type Mode = | { type: "idle" } @@ -45,9 +45,9 @@ function SaveBookmark({ setMode }: { setMode: (mode: Mode) => void }) { const val = z.string().url(); if (val.safeParse(shareIntent.text).success) { // This is a URL, else treated as text - mutate({ type: "link", url: shareIntent.text }); + mutate({ type: BookmarkTypes.LINK, url: shareIntent.text }); } else { - mutate({ type: "text", text: shareIntent.text }); + mutate({ type: BookmarkTypes.TEXT, text: shareIntent.text }); } } else if (!isPending && shareIntent?.files) { uploadAsset({ diff --git a/apps/mobile/components/bookmarks/BookmarkCard.tsx b/apps/mobile/components/bookmarks/BookmarkCard.tsx index 128696a1..8faa8618 100644 --- a/apps/mobile/components/bookmarks/BookmarkCard.tsx +++ b/apps/mobile/components/bookmarks/BookmarkCard.tsx @@ -26,6 +26,7 @@ import { isBookmarkStillLoading, isBookmarkStillTagging, } from "@hoarder/shared-react/utils/bookmarkUtils"; +import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; import { TailwindResolver } from "../TailwindResolver"; import { Divider } from "../ui/Divider"; @@ -161,7 +162,7 @@ function TagList({ bookmark }: { bookmark: ZBookmark }) { function LinkCard({ bookmark }: { bookmark: ZBookmark }) { const { settings } = useAppSettings(); - if (bookmark.content.type !== "link") { + if (bookmark.content.type !== BookmarkTypes.LINK) { throw new Error("Wrong content type rendered"); } @@ -223,7 +224,7 @@ function LinkCard({ bookmark }: { bookmark: ZBookmark }) { } function TextCard({ bookmark }: { bookmark: ZBookmark }) { - if (bookmark.content.type !== "text") { + if (bookmark.content.type !== BookmarkTypes.TEXT) { throw new Error("Wrong content type rendered"); } const content = bookmark.content.text; @@ -262,7 +263,7 @@ function TextCard({ bookmark }: { bookmark: ZBookmark }) { function AssetCard({ bookmark }: { bookmark: ZBookmark }) { const { settings } = useAppSettings(); - if (bookmark.content.type !== "asset") { + if (bookmark.content.type !== BookmarkTypes.ASSET) { throw new Error("Wrong content type rendered"); } const title = bookmark.title ?? bookmark.content.fileName; @@ -322,13 +323,13 @@ export default function BookmarkCard({ let comp; switch (bookmark.content.type) { - case "link": + case BookmarkTypes.LINK: comp = <LinkCard bookmark={bookmark} />; break; - case "text": + case BookmarkTypes.TEXT: comp = <TextCard bookmark={bookmark} />; break; - case "asset": + case BookmarkTypes.ASSET: comp = <AssetCard bookmark={bookmark} />; break; } diff --git a/apps/mobile/components/bookmarks/UpdatingBookmarkList.tsx b/apps/mobile/components/bookmarks/UpdatingBookmarkList.tsx index 54288362..87f115f9 100644 --- a/apps/mobile/components/bookmarks/UpdatingBookmarkList.tsx +++ b/apps/mobile/components/bookmarks/UpdatingBookmarkList.tsx @@ -2,6 +2,7 @@ import { Text } from "react-native"; import { api } from "@/lib/trpc"; import type { ZGetBookmarksRequest } from "@hoarder/shared/types/bookmarks"; +import { BookmarkTypes } from "@hoarder/shared/types/bookmarks"; import FullPageSpinner from "../ui/FullPageSpinner"; import BookmarkList from "./BookmarkList"; @@ -46,7 +47,7 @@ export default function UpdatingBookmarkList({ <BookmarkList bookmarks={data.pages .flatMap((p) => p.bookmarks) - .filter((b) => b.content.type != "unknown")} + .filter((b) => b.content.type != BookmarkTypes.UNKNWON)} header={header} onRefresh={onRefresh} fetchNextPage={fetchNextPage} diff --git a/apps/mobile/lib/upload.ts b/apps/mobile/lib/upload.ts index 0b6db549..b31faa90 100644 --- a/apps/mobile/lib/upload.ts +++ b/apps/mobile/lib/upload.ts @@ -1,6 +1,6 @@ import { useMutation } from "@tanstack/react-query"; -import type { ZBookmark } from "@hoarder/shared/types/bookmarks"; +import { BookmarkTypes, ZBookmark } from "@hoarder/shared/types/bookmarks"; import { zUploadErrorSchema, zUploadResponseSchema, @@ -59,7 +59,7 @@ export function useUploadAsset( const assetId = resp.assetId; const assetType = resp.contentType === "application/pdf" ? "pdf" : "image"; - createBookmark({ type: "asset", assetId, assetType }); + createBookmark({ type: BookmarkTypes.ASSET, assetId, assetType }); }, onError: (e) => { if (options.onError) { |
