From a67031b11a7c38ae1ac6a4f222fa7064ce533416 Mon Sep 17 00:00:00 2001 From: mbaharip <62494292+mbahArip@users.noreply.github.com> Date: Sat, 18 May 2024 15:17:45 +0700 Subject: [PATCH] Clean up and redo Config & Theme --- data/mockFiles.ts | 70 - public/fonts/Exo2-Bold.ttf | Bin 126804 -> 0 bytes public/fonts/Exo2-Regular.ttf | Bin 126624 -> 0 bytes public/images/setup/google-cloud-1.png | Bin 60601 -> 0 bytes public/next.svg | 1 - public/setup/googleCloud.md | 0 public/vercel.svg | 1 - src/app/@explorer.tsx | 189 --- src/app/@file.grid.tsx | 342 ----- src/app/@file.list.tsx | 330 ---- src/app/@header.breadcrumb.tsx | 185 --- src/app/@header.title.tsx | 26 - src/app/@header.tsx | 44 - src/app/@not-found.tsx | 45 - src/app/@preview.audio.tsx | 132 -- src/app/@preview.image.tsx | 130 -- src/app/@preview.layout.tsx | 107 -- src/app/@preview.rich.tsx | 128 -- src/app/@preview.unknown.tsx | 52 - src/app/@preview.video.tsx | 130 -- src/app/@readme.tsx | 38 - src/app/@rich-header.tsx | 53 - src/app/[...rest]/deploy/@form.api-config.tsx | 533 ------- src/app/[...rest]/deploy/@form.env-config.tsx | 359 ----- .../[...rest]/deploy/@form.input-config.tsx | 120 -- .../[...rest]/deploy/@form.input-theme.tsx | 181 --- .../[...rest]/deploy/@form.site-config.tsx | 418 ----- src/app/[...rest]/deploy/@form.theme.tsx | 235 --- src/app/[...rest]/deploy/@theme-preview.tsx | 369 ----- src/app/[...rest]/deploy/docs.tsx | 1356 ----------------- src/app/[...rest]/deploy/index.tsx | 198 +-- src/app/[...rest]/page.tsx | 121 +- src/app/api/download/[encryptedId]/route.ts | 33 +- src/app/api/internal/encrypt/route.ts | 8 +- src/app/api/og/[encryptedId]/route.ts | 9 +- src/app/api/raw/[...rest]/route.ts | 36 +- src/app/api/stream/[encryptedId]/helper.ts | 24 - src/app/api/stream/[encryptedId]/route.ts | 33 +- src/app/api/thumb/[encryptedId]/route.ts | 20 +- src/app/error.tsx | 30 +- src/app/globals.css | 5 + src/app/layout.tsx | 36 +- src/app/loading.tsx | 20 +- src/app/not-found.tsx | 6 +- src/app/page.tsx | 48 +- .../Explorer/Actions.tsx} | 374 ++--- src/components/Explorer/FilePath.tsx | 156 ++ src/components/Explorer/Grid.tsx | 270 ++++ src/components/Explorer/Layout.tsx | 130 ++ src/components/Explorer/List.tsx | 260 ++++ src/components/Explorer/Readme.tsx | 63 + src/components/Explorer/index.tsx | 6 + src/components/Global/ButtonLoading.tsx | 46 + .../{Icon/index.tsx => Global/Icon.tsx} | 0 src/components/Global/Loader.tsx | 30 + .../Global/Markdown.tsx} | 122 +- src/components/Global/Status.tsx | 31 + src/components/Global/index.tsx | 5 + .../Guide/Configuration/ApiForm.tsx | 342 +++++ .../Guide/Configuration/EnvironmentForm.tsx | 232 +++ src/components/Guide/Configuration/Header.tsx | 62 + src/components/Guide/Configuration/Input.tsx | 232 +++ src/components/Guide/Configuration/Layout.tsx | 300 ++++ .../Guide/Configuration/SiteForm.tsx | 226 +++ src/components/Guide/Configuration/index.tsx | 9 + src/components/Guide/Theme/FormInputs.tsx | 201 +++ src/components/Guide/Theme/Input.tsx | 207 +++ src/components/Guide/Theme/Layout.tsx | 427 ++++++ src/components/Guide/Theme/Preview.tsx | 304 ++++ src/components/Guide/Theme/index.tsx | 5 + src/components/Guide/index.tsx | 2 + .../Layout/Footer.tsx} | 2 +- .../Layout/Navbar.tsx} | 122 +- src/components/Layout/NotFound.tsx | 37 + .../Layout/Password.tsx} | 61 +- src/components/Layout/ResponsiveDropdown.tsx | 222 +++ .../Layout/ThemeProvider.tsx} | 13 +- src/components/Layout/ToTop.tsx | 47 + src/components/Layout/index.tsx | 6 + src/components/Preview/Audio.tsx | 98 ++ .../Preview/Document.tsx} | 161 +- src/components/Preview/Image.tsx | 106 ++ .../Preview/Information.tsx} | 182 +-- src/components/Preview/Layout.tsx | 119 ++ .../Preview/Manga.tsx} | 183 +-- src/components/Preview/Rich.tsx | 92 ++ src/components/Preview/Unknown.tsx | 18 + src/components/Preview/Video.tsx | 96 ++ src/components/Preview/index.tsx | 10 + src/components/ui/alert.tsx | 63 +- src/components/ui/breadcrumb.tsx | 138 +- src/components/ui/button.tsx | 35 +- src/components/ui/card.tsx | 124 +- src/components/ui/carousel.tsx | 328 ++-- src/components/ui/dialog.tsx | 95 +- src/components/ui/drawer.tsx | 84 +- src/components/ui/dropdown-menu.tsx | 122 +- src/components/ui/input.tsx | 39 +- src/components/ui/label.tsx | 23 +- src/components/ui/menubar.tsx | 170 +-- src/components/ui/popover.tsx | 24 +- src/components/ui/progress.tsx | 21 +- src/components/ui/select.tsx | 87 +- src/components/ui/separator.tsx | 39 +- src/components/ui/sheet.tsx | 94 +- src/components/ui/skeleton.tsx | 11 +- src/components/ui/slider.tsx | 25 +- src/components/ui/table.tsx | 191 ++- src/components/ui/tabs.tsx | 30 +- src/components/ui/textarea.tsx | 37 +- src/components/ui/toast.tsx | 80 +- src/components/ui/tooltip.tsx | 22 +- src/config/gIndex.config.ts | 34 +- src/data/docs/getting-started.ts | 9 + src/data/docs/index.ts | 4 + src/data/docs/migration.ts | 22 + src/data/docs/new-user.ts | 81 + src/data/docs/shared-drive.ts | 16 + src/data/template/configuration.ts | 339 +++++ src/data/template/index.ts | 2 + src/data/template/theme.ts | 96 ++ src/hooks/useLoading.ts | 23 + src/hooks/useLocalStorage.ts | 2 + src/hooks/useMediaQuery.ts | 2 + src/styles/globals.css | 39 - src/styles/highlight.css | 472 ------ src/styles/markdown.css | 107 -- src/{ => types}/schema.ts | 2 +- src/utils/bytesFormat.ts | 2 +- src/{utils.ts => utils/cn.ts} | 0 src/utils/downloadBlob.ts | 17 + .../hash.ts => encryptionHelper.ts} | 0 src/utils/fileLoadHelper.ts | 40 + src/utils/footerFormatter.ts | 12 +- src/utils/gdriveInstance.ts | 10 - src/utils/isDev.ts | 4 +- src/utils/parseConfigFile.ts | 17 +- src/utils/previewHelper.ts | 31 +- 138 files changed, 6530 insertions(+), 8553 deletions(-) delete mode 100644 data/mockFiles.ts delete mode 100644 public/fonts/Exo2-Bold.ttf delete mode 100644 public/fonts/Exo2-Regular.ttf delete mode 100644 public/images/setup/google-cloud-1.png delete mode 100644 public/next.svg delete mode 100644 public/setup/googleCloud.md delete mode 100644 public/vercel.svg delete mode 100644 src/app/@explorer.tsx delete mode 100644 src/app/@file.grid.tsx delete mode 100644 src/app/@file.list.tsx delete mode 100644 src/app/@header.breadcrumb.tsx delete mode 100644 src/app/@header.title.tsx delete mode 100644 src/app/@header.tsx delete mode 100644 src/app/@not-found.tsx delete mode 100644 src/app/@preview.audio.tsx delete mode 100644 src/app/@preview.image.tsx delete mode 100644 src/app/@preview.layout.tsx delete mode 100644 src/app/@preview.rich.tsx delete mode 100644 src/app/@preview.unknown.tsx delete mode 100644 src/app/@preview.video.tsx delete mode 100644 src/app/@readme.tsx delete mode 100644 src/app/@rich-header.tsx delete mode 100644 src/app/[...rest]/deploy/@form.api-config.tsx delete mode 100644 src/app/[...rest]/deploy/@form.env-config.tsx delete mode 100644 src/app/[...rest]/deploy/@form.input-config.tsx delete mode 100644 src/app/[...rest]/deploy/@form.input-theme.tsx delete mode 100644 src/app/[...rest]/deploy/@form.site-config.tsx delete mode 100644 src/app/[...rest]/deploy/@form.theme.tsx delete mode 100644 src/app/[...rest]/deploy/@theme-preview.tsx delete mode 100644 src/app/[...rest]/deploy/docs.tsx delete mode 100644 src/app/api/stream/[encryptedId]/helper.ts rename src/{app/@header.button.tsx => components/Explorer/Actions.tsx} (56%) create mode 100644 src/components/Explorer/FilePath.tsx create mode 100644 src/components/Explorer/Grid.tsx create mode 100644 src/components/Explorer/Layout.tsx create mode 100644 src/components/Explorer/List.tsx create mode 100644 src/components/Explorer/Readme.tsx create mode 100644 src/components/Explorer/index.tsx create mode 100644 src/components/Global/ButtonLoading.tsx rename src/components/{Icon/index.tsx => Global/Icon.tsx} (100%) create mode 100644 src/components/Global/Loader.tsx rename src/{app/@markdown.tsx => components/Global/Markdown.tsx} (58%) create mode 100644 src/components/Global/Status.tsx create mode 100644 src/components/Global/index.tsx create mode 100644 src/components/Guide/Configuration/ApiForm.tsx create mode 100644 src/components/Guide/Configuration/EnvironmentForm.tsx create mode 100644 src/components/Guide/Configuration/Header.tsx create mode 100644 src/components/Guide/Configuration/Input.tsx create mode 100644 src/components/Guide/Configuration/Layout.tsx create mode 100644 src/components/Guide/Configuration/SiteForm.tsx create mode 100644 src/components/Guide/Configuration/index.tsx create mode 100644 src/components/Guide/Theme/FormInputs.tsx create mode 100644 src/components/Guide/Theme/Input.tsx create mode 100644 src/components/Guide/Theme/Layout.tsx create mode 100644 src/components/Guide/Theme/Preview.tsx create mode 100644 src/components/Guide/Theme/index.tsx create mode 100644 src/components/Guide/index.tsx rename src/{app/@footer.tsx => components/Layout/Footer.tsx} (97%) rename src/{app/@navbar.tsx => components/Layout/Navbar.tsx} (86%) create mode 100644 src/components/Layout/NotFound.tsx rename src/{app/@password.tsx => components/Layout/Password.tsx} (70%) create mode 100644 src/components/Layout/ResponsiveDropdown.tsx rename src/{app/theme-provider.tsx => components/Layout/ThemeProvider.tsx} (83%) create mode 100644 src/components/Layout/ToTop.tsx create mode 100644 src/components/Layout/index.tsx create mode 100644 src/components/Preview/Audio.tsx rename src/{app/@preview.doc.tsx => components/Preview/Document.tsx} (51%) create mode 100644 src/components/Preview/Image.tsx rename src/{app/@preview.action.tsx => components/Preview/Information.tsx} (75%) create mode 100644 src/components/Preview/Layout.tsx rename src/{app/@preview.manga.tsx => components/Preview/Manga.tsx} (64%) create mode 100644 src/components/Preview/Rich.tsx create mode 100644 src/components/Preview/Unknown.tsx create mode 100644 src/components/Preview/Video.tsx create mode 100644 src/components/Preview/index.tsx create mode 100644 src/data/docs/getting-started.ts create mode 100644 src/data/docs/index.ts create mode 100644 src/data/docs/migration.ts create mode 100644 src/data/docs/new-user.ts create mode 100644 src/data/docs/shared-drive.ts create mode 100644 src/data/template/configuration.ts create mode 100644 src/data/template/index.ts create mode 100644 src/data/template/theme.ts create mode 100644 src/hooks/useLoading.ts delete mode 100644 src/styles/globals.css delete mode 100644 src/styles/highlight.css delete mode 100644 src/styles/markdown.css rename src/{ => types}/schema.ts (99%) rename src/{utils.ts => utils/cn.ts} (100%) create mode 100644 src/utils/downloadBlob.ts rename src/utils/{encryptionHelper/hash.ts => encryptionHelper.ts} (100%) create mode 100644 src/utils/fileLoadHelper.ts diff --git a/data/mockFiles.ts b/data/mockFiles.ts deleted file mode 100644 index 6b435f9..0000000 --- a/data/mockFiles.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { IGDriveFiles } from "types/api/files"; -import { APIFilesResponse } from "types/api/response"; - -const mockFiles: APIFilesResponse = { - timestamp: Date.now(), - responseTime: 0, - folders: [], - files: [], - nextPageToken: "nextpageToken", - readmeExists: true, - bannerExists: true, - passwordExists: false, -}; -const mockFilesProtected: APIFilesResponse = { - timestamp: Date.now(), - responseTime: 0, - folders: [], - files: [], - nextPageToken: "nextpageToken", - readmeExists: true, - bannerExists: true, - passwordExists: true, -}; - -for (let i = 0; i < 10; i++) { - const folder: IGDriveFiles = { - mimeType: "application/vnd.google-apps.folder", - encryptedId: `encryptedId${i + 1}`, - name: `folder${i + 1}`, - trashed: false, - modifiedTime: new Date().toISOString(), - }; - const file: IGDriveFiles = { - mimeType: "application/vnd.google-apps.file", - encryptedId: `encryptedId${i + 1}`, - name: `file${i + 1}`, - trashed: false, - modifiedTime: new Date().toISOString(), - fileExtension: "txt", - encryptedWebContentLink: "encryptedWebContentLink", - size: Math.floor(Math.random() * 1000000000), - thumbnailLink: "/og.png", - imageMediaMetadata: - Math.random() > 0.5 - ? { - width: 1920, - height: 1080, - rotation: 0, - } - : null, - videoMediaMetadata: - Math.random() > 0.5 - ? { - width: 1920, - height: 1080, - durationMillis: 100000, - } - : null, - }; - - mockFiles.folders.push(folder); - mockFiles.files.push(file); - - folder.name = `folder${i + 1}protected`; - file.name = `file${i + 1}protected`; - mockFilesProtected.folders.push(folder); - mockFilesProtected.files.push(file); -} - -export { mockFiles, mockFilesProtected }; diff --git a/public/fonts/Exo2-Bold.ttf b/public/fonts/Exo2-Bold.ttf deleted file mode 100644 index 8404285371700ce42124db4890a125af06f2bb88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126804 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

uKY;ZZ0dyHZMVCb_otb6nBk}Y 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 diff --git a/public/fonts/Exo2-Regular.ttf b/public/fonts/Exo2-Regular.ttf deleted file mode 100644 index 63bc4bb005edaf09aba4dada657b63907ff88aee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126624 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

FNu8!baMkEwW!0p~^%}6I${^G< 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

1<1)T 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 dslR \ No newline at end of file diff --git a/public/setup/googleCloud.md b/public/setup/googleCloud.md deleted file mode 100644 index e69de29..0000000 diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index d2f8422..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/@explorer.tsx b/src/app/@explorer.tsx deleted file mode 100644 index 9acdbc8..0000000 --- a/src/app/@explorer.tsx +++ /dev/null @@ -1,189 +0,0 @@ -"use client"; - -import Link from "next/link"; -import { usePathname } from "next/navigation"; -import { useContext, useEffect, useMemo, useState } from "react"; -import toast from "react-hot-toast"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Button } from "~/components/ui/button"; -import { Separator } from "~/components/ui/separator"; - -import { LayoutContext } from "~/context/layoutContext"; - -import config from "~/config/gIndex.config"; - -import FileGrid from "./@file.grid"; -import FileList from "./@file.list"; -import { GetFiles } from "./actions"; - -type Props = { - files: z.infer[]; - nextPageToken?: string; - root?: boolean; -}; -export default function FileBrowser({ files, nextPageToken, root }: Props) { - const { layout } = useContext(LayoutContext); - const pathname = usePathname(); - const prevPath = useMemo(() => { - const path = pathname - .split("/") - .slice(0, -1) - .join("/") - .replace(/\/+/g, "/"); - - return new URL(path, config.basePath).pathname; - }, [pathname]); - - const [fileList, setFileList] = - useState[]>(files); - const [nextToken, setNextToken] = useState(nextPageToken); - const [loadMoreLoading, setLoadMoreLoading] = useState(false); - - const [loading, setLoading] = useState(true); - - useEffect(() => { - setLoading(false); - }, []); - - const onLoadMore = async () => { - setLoadMoreLoading(true); - try { - if (!nextToken) throw new Error("No more files to load"); - const data = await GetFiles({ pageToken: nextToken }); - const uniqueData = [...fileList, ...data.files].filter( - (item, index, array) => - index === array.findIndex((i) => i.encryptedId === item.encryptedId), - ); - setFileList(uniqueData); - // const uniqueData = new Set([...fileList, ...data.files]); - // setFileList([...uniqueData]); - setNextToken(data.nextPageToken); - } catch (error) { - const e = error as Error; - console.error(e.message); - toast.error(e.message); - } finally { - setLoadMoreLoading(false); - } - }; - - if (loading) { - return ( -

- ); - } - - return ( -
- {!root && ( - - )} - {!fileList.length && ( -
- - - There are no files in this folder - -
- )} - {layout === "list" && ( -
- {fileList.map((file) => ( -
- - -
- ))} -
- )} - {layout === "grid" && ( -
- {fileList.map((file) => ( -
- -
- ))} -
- )} - - {nextToken && ( - - )} -
- ); -} diff --git a/src/app/@file.grid.tsx b/src/app/@file.grid.tsx deleted file mode 100644 index 7359d8b..0000000 --- a/src/app/@file.grid.tsx +++ /dev/null @@ -1,342 +0,0 @@ -"use client"; - -import Link from "next/link"; -import { usePathname } from "next/navigation"; -import nProgress from "nprogress"; -import { useMemo, useState } from "react"; -import toast from "react-hot-toast"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Button } from "~/components/ui/button"; -import { - Drawer, - DrawerClose, - DrawerContent, - DrawerDescription, - DrawerFooter, - DrawerHeader, - DrawerTitle, - DrawerTrigger, -} from "~/components/ui/drawer"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "~/components/ui/dropdown-menu"; - -import useMediaQuery from "~/hooks/useMediaQuery"; -import bytesToReadable from "~/utils/bytesFormat"; -import { durationToReadable } from "~/utils/durationFormat"; -import { getPreviewIcon } from "~/utils/previewHelper"; - -import config from "~/config/gIndex.config"; - -import { CreateDownloadToken } from "./actions"; - -type Props = { - data: z.infer; - disabled?: boolean; -}; -export default function FileGrid({ data, disabled }: Props) { - const pathname = usePathname(); - const filePath = useMemo(() => { - // const currentPath = pathname.startsWith("/e") ? pathname : `/e${pathname}`; - // Set to pathname to remove the /e prefix - const path = [pathname, encodeURIComponent(data.name)] - .join("/") - .replace(/\/+/g, "/"); - - return new URL(path, config.basePath).pathname; - }, [data, pathname]); - - const [thumbnailURL, setThumbnailURL] = useState( - `/api/thumb/${data.encryptedId}?size=2`, - ); - const [actionOpen, setActionOpen] = useState(false); - const isDesktop = useMediaQuery("(min-width: 768px)"); - - const onCopy = async (e: React.MouseEvent) => { - e.stopPropagation(); - try { - toast.promise( - navigator.clipboard.writeText( - new URL(filePath, config.basePath).toString(), - ), - { - loading: "Copying link...", - success: "Link copied!", - error: "Failed to copy link", - }, - ); - } catch (error) { - const e = error as Error; - console.error(e.message); - } - }; - const onDownload = async (e: React.MouseEvent) => { - e.stopPropagation(); - toast.loading("Creating download token...", { - id: `download-${data.encryptedId}`, - }); - try { - const token = await CreateDownloadToken(); - if (!token) throw new Error("Failed to create download token"); - toast.success("Opening download link...", { - id: `download-${data.encryptedId}`, - }); - - const timeout = setTimeout(() => { - clearTimeout(timeout); - window.open(`/api/download/${data.encryptedId}?token=${token}`); - }, 1000); - } catch (error) { - const e = error as Error; - console.error(e.message); - toast.error(e.message, { - id: `download-${data.encryptedId}`, - }); - } - }; - - return ( -
- {isDesktop ? ( - - - - - - - - Copy link - - {data.mimeType.includes("folder") ? null : ( - - - Download - - )} - - - ) : ( - - - - - - - Actions - - What would you like to do with this file? - - -
- - - - {data.mimeType.includes("folder") ? null : ( - - - - )} -
- - - - - - -
-
- )} - { - if (disabled) { - e.preventDefault(); - e.stopPropagation(); - await new Promise((resolve) => setTimeout(resolve, 500)); - nProgress.done(true); - } - }} - href={filePath} - className={cn( - "h-full w-full", - "rounded-[var(--radius)]", - "flex flex-col content-stretch justify-stretch gap-3", - "hover:bg-muted/50", - "transition", - "border border-border", - )} - > -
- {/* If it's media, show thumbnail */} -
- {data.thumbnailLink && - (data.mimeType.startsWith("video") || - data.mimeType.startsWith("image")) ? ( - <> - {data.name} { - if (thumbnailURL.includes("size=2")) { - setThumbnailURL(`/api/thumb/${data.encryptedId}`); - } - }} - className='rounded-top-[var(--radius)] absolute -z-0 h-32 w-full flex-shrink-0 flex-grow-0 object-cover opacity-50' - /> - {data.name} { - if (thumbnailURL.includes("size=2")) { - setThumbnailURL(`/api/thumb/${data.encryptedId}`); - } - }} - className='relative z-0 h-32 w-full flex-shrink-0 flex-grow-0 object-contain backdrop-blur' - /> - - {data.mimeType.startsWith("video") && ( - <> - -
- {durationToReadable( - data.videoMediaMetadata?.durationMillis || 0, - )} -
- - )} - - ) : ( - - )} -
- - {/* File data */} -
- - {config.siteConfig.showFileExtension - ? data.name - : data.fileExtension - ? data.name.replace(new RegExp(`.${data.fileExtension}$`), "") - : data.name} - -
- - {data.mimeType.includes("folder") - ? "folder" - : data.fileExtension || "unknown"} - - {!data.mimeType.includes("folder") && ( - <> - {config.siteConfig.showFileExtension ? null : ( - - )} - - {bytesToReadable(data.size || 0)} - - - )} -
-
- - {new Date(data.modifiedTime).toLocaleDateString()} - -
-
-
- -
- ); -} diff --git a/src/app/@file.list.tsx b/src/app/@file.list.tsx deleted file mode 100644 index 2108656..0000000 --- a/src/app/@file.list.tsx +++ /dev/null @@ -1,330 +0,0 @@ -"use client"; - -import Link from "next/link"; -import { usePathname } from "next/navigation"; -import nProgress from "nprogress"; -import { useMemo, useState } from "react"; -import toast from "react-hot-toast"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Button } from "~/components/ui/button"; -import { - Drawer, - DrawerClose, - DrawerContent, - DrawerDescription, - DrawerFooter, - DrawerHeader, - DrawerTitle, - DrawerTrigger, -} from "~/components/ui/drawer"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "~/components/ui/dropdown-menu"; - -import useMediaQuery from "~/hooks/useMediaQuery"; -import bytesToReadable from "~/utils/bytesFormat"; -import { durationToReadable } from "~/utils/durationFormat"; -import { getPreviewIcon } from "~/utils/previewHelper"; - -import config from "~/config/gIndex.config"; - -import { CreateDownloadToken } from "./actions"; - -type Props = { - data: z.infer; - disabled?: boolean; -}; -export default function FileList({ data, disabled }: Props) { - const pathname = usePathname(); - - const filePath = useMemo(() => { - const path = [pathname, encodeURIComponent(data.name)] - .join("/") - .replace(/\/+/g, "/"); - - return new URL(path, config.basePath).pathname; - }, [data, pathname]); - - const [thumbnailURL, setThumbnailURL] = useState( - `/api/thumb/${data.encryptedId}?size=2`, - ); - const [actionOpen, setActionOpen] = useState(false); - const isDesktop = useMediaQuery("(min-width: 768px)"); - - const onCopy = async (e: React.MouseEvent) => { - e.stopPropagation(); - try { - toast.promise( - navigator.clipboard.writeText( - new URL(filePath, config.basePath).toString(), - ), - { - loading: "Copying link...", - success: "Link copied!", - error: "Failed to copy link", - }, - ); - } catch (error) { - const e = error as Error; - console.error(e.message); - } - }; - const onDownload = async (e: React.MouseEvent) => { - e.stopPropagation(); - toast.loading("Creating download token...", { - id: `download-${data.encryptedId}`, - }); - try { - const token = await CreateDownloadToken(); - if (!token) throw new Error("Failed to create download token"); - toast.success("Opening download link...", { - id: `download-${data.encryptedId}`, - }); - - const timeout = setTimeout(() => { - clearTimeout(timeout); - window.open(`/api/download/${data.encryptedId}?token=${token}`); - }, 1000); - } catch (error) { - const e = error as Error; - console.error(e.message); - toast.error(e.message, { - id: `download-${data.encryptedId}`, - }); - } - }; - - return ( -
-
- {isDesktop ? ( - - - - - - - - Copy link - - {data.mimeType.includes("folder") ? null : ( - - - Download - - )} - - - ) : ( - - - - - - - Actions - - What would you like to do with this file? - - -
- - - - {data.mimeType.includes("folder") ? null : ( - - - - )} -
- - - - - - -
-
- )} -
- { - if (disabled) { - e.preventDefault(); - e.stopPropagation(); - await new Promise((resolve) => setTimeout(resolve, 500)); - nProgress.done(true); - } - }} - href={filePath} - className={cn( - "relative", - // "w-full", - "px-1.5 py-1 pr-10", // since action button is size-8 - "rounded-[var(--radius)]", - "flex flex-grow items-center justify-between gap-3", - "hover:bg-muted/50", - "transition", - )} - > -
- {/* If it's media, show thumbnail */} -
- {data.thumbnailLink && - (data.mimeType.startsWith("video") || - data.mimeType.startsWith("image")) ? ( - <> - {data.name} { - if (thumbnailURL.includes("size=2")) { - setThumbnailURL(`/api/thumb/${data.encryptedId}`); - } - }} - className='size-16 flex-shrink-0 flex-grow-0 rounded-[var(--radius)] object-cover tablet:size-20' - /> - - {data.mimeType.startsWith("video") && ( - <> - -
- {durationToReadable( - data.videoMediaMetadata?.durationMillis || 0, - )} -
- - )} - - ) : ( - - )} -
- - {/* File data */} -
- - {config.siteConfig.showFileExtension - ? data.name - : data.fileExtension - ? data.name.replace(new RegExp(`.${data.fileExtension}$`), "") - : data.name} - -
- - {data.mimeType.includes("folder") - ? "folder" - : data.fileExtension || "unknown"} - - {!data.mimeType.includes("folder") && ( - <> - {config.siteConfig.showFileExtension ? null : ( - - )} - - {bytesToReadable(data.size || 0)} - - - )} -
-
- - {new Date(data.modifiedTime).toLocaleDateString()} - -
-
-
- -
- ); -} diff --git a/src/app/@header.breadcrumb.tsx b/src/app/@header.breadcrumb.tsx deleted file mode 100644 index d371315..0000000 --- a/src/app/@header.breadcrumb.tsx +++ /dev/null @@ -1,185 +0,0 @@ -"use client"; - -import { DropdownMenuTrigger } from "@radix-ui/react-dropdown-menu"; -import Link from "next/link"; -import { Fragment, useState } from "react"; -import { z } from "zod"; -import { Schema_Breadcrumb } from "~/schema"; - -import Icon from "~/components/Icon"; -import { - Breadcrumb, - BreadcrumbEllipsis, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from "~/components/ui/breadcrumb"; -import { Button } from "~/components/ui/button"; -import { - Drawer, - DrawerClose, - DrawerContent, - DrawerFooter, - DrawerHeader, - DrawerTitle, - DrawerTrigger, -} from "~/components/ui/drawer"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, -} from "~/components/ui/dropdown-menu"; -import { Separator } from "~/components/ui/separator"; -import { Skeleton } from "~/components/ui/skeleton"; - -import useMediaQuery from "~/hooks/useMediaQuery"; - -import config from "~/config/gIndex.config"; - -type Props = { - data: z.infer[]; - loading?: boolean; -}; -export default function HeaderBreadcrumb({ data, loading }: Props) { - const [open, setOpen] = useState(false); - const isDesktop = useMediaQuery("(min-width: 768px)"); - - if (loading) return ; - - return ( -
- - - - - -
- - ~ -
- -
-
- {!!data.length ? ( - <> - - - {data.length > config.siteConfig.breadcrumbMax ? ( - <> - {isDesktop ? ( - - - - - - {data - .slice(0, -config.siteConfig.breadcrumbMax + 1) - .map((item, _, array) => ( - - - item.href) - .join("/")}`} - className='w-full' - > - {item.label} - - - - ))} - - - ) : ( - - - - - - - - Navigate to parent directories - - - -
- {data - .slice(0, -config.siteConfig.breadcrumbMax + 1) - .map((item, _, array) => ( - - - item.href) - .join("/")}`} - className='w-full py-1.5' - > - {item.label} - - - - ))} -
- - - - - - -
-
- )} - - - - ) : null} - - {data.slice(-config.siteConfig.breadcrumbMax + 1).map((item) => ( - - - {item.href ? ( - <> - - item.href) - .join("/") - .replace(/\/\//g, "/")}`} - > - {item.label} - - - - ) : ( - - {item.label} - - )} - - {item.href && } - - ))} - - ) : null} -
-
-
- ); -} diff --git a/src/app/@header.title.tsx b/src/app/@header.title.tsx deleted file mode 100644 index 3a9da84..0000000 --- a/src/app/@header.title.tsx +++ /dev/null @@ -1,26 +0,0 @@ -"use client"; - -import { PropsWithChildren } from "react"; - -import { Skeleton } from "~/components/ui/skeleton"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "~/components/ui/tooltip"; - -export default function HeaderTitle({ - children, - loading, -}: PropsWithChildren<{ loading?: boolean }>) { - if (loading) return ; - - return ( - - -

{children}

-
- {children} -
- ); -} diff --git a/src/app/@header.tsx b/src/app/@header.tsx deleted file mode 100644 index 9ef6071..0000000 --- a/src/app/@header.tsx +++ /dev/null @@ -1,44 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -import { z } from "zod"; -import { Schema_Breadcrumb } from "~/schema"; -import { cn } from "~/utils"; - -import HeaderBreadcrumb from "./@header.breadcrumb"; - -type Props = { - name: string; - breadcrumb?: z.infer[]; -}; -export default function Header({ name, breadcrumb }: Props) { - const [loading, setLoading] = useState(true); - - useEffect(() => { - setLoading(false); - }, []); - - return ( -
-
- {/* {name} */} - - - {/* */} -
-
- ); -} diff --git a/src/app/@not-found.tsx b/src/app/@not-found.tsx deleted file mode 100644 index 9b73830..0000000 --- a/src/app/@not-found.tsx +++ /dev/null @@ -1,45 +0,0 @@ -"use client"; - -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Button } from "~/components/ui/button"; - -import useRouter from "~/hooks/usePRouter"; - -export default function NotFoundComponent() { - const router = useRouter(); - return ( -
- - - The file you are looking for does not exist - - -
- - -
-
- ); -} diff --git a/src/app/@preview.audio.tsx b/src/app/@preview.audio.tsx deleted file mode 100644 index ba5d2dc..0000000 --- a/src/app/@preview.audio.tsx +++ /dev/null @@ -1,132 +0,0 @@ -"use client"; - -import dynamic from "next/dynamic"; -import { useEffect, useState } from "react"; -import "react-h5-audio-player/lib/styles.css"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; - -import { CreateDownloadToken } from "./actions"; - -// import "./r5-style.css"; - -const Plyr = dynamic(() => import("plyr-react"), { - ssr: false, - loading: () => ( -
- -

Loading player...

-
- ), -}); - -type Props = { - file: z.infer; -}; -export default function PreviewAudio({ file }: Props) { - const [audioSrc, setAudioSrc] = useState(""); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(""); - - useEffect(() => { - (async () => { - try { - if (!file.encryptedWebContentLink) { - setError("No audio to preview"); - return; - } - const token = await CreateDownloadToken(); - setAudioSrc(`/api/stream/${file.encryptedId}?token=${token}`); - } catch (error) { - const e = error as Error; - console.error(e); - setError(e.message); - } finally { - setLoading(false); - } - })(); - }, [file]); - - return ( -
- {loading ? ( -
- -

Loading player...

-
- ) : error ? ( -
- - {error} -
- ) : ( -
- -
- )} -
- ); -} diff --git a/src/app/@preview.image.tsx b/src/app/@preview.image.tsx deleted file mode 100644 index 0d60d27..0000000 --- a/src/app/@preview.image.tsx +++ /dev/null @@ -1,130 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Alert, AlertDescription, AlertTitle } from "~/components/ui/alert"; - -import config from "~/config/gIndex.config"; - -import { CreateDownloadToken } from "./actions"; - -type Props = { - file: z.infer; -}; -export default function PreviewImage({ file }: Props) { - const [imgSrc, setImgSrc] = useState( - `/api/thumb/${file.encryptedId}?size=4`, - ); - const [imgLoaded, setImgLoaded] = useState(false); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(""); - - useEffect(() => { - (async () => { - try { - if (!file.encryptedWebContentLink) { - setError("No image to preview"); - return; - } - const token = await CreateDownloadToken(); - - const streamURL = new URL( - `/api/thumb/${file.encryptedId}?size=1000`, - config.basePath, - ); - streamURL.searchParams.set("token", token); - fetch(streamURL, { - headers: { - Range: `bytes=0-${(file.size || 1) - 1}`, - }, - }) - .then((res) => { - if (!res.ok) { - throw new Error("Could not load image"); - } - return res.blob(); - }) - .then((blob) => { - const urlobject = URL.createObjectURL(blob); - setImgSrc(urlobject); - const timeout = setTimeout(() => { - setImgLoaded(true); - clearTimeout(timeout); - }, 150); // Add a delay to show the image - }); - } catch (error) { - const e = error as Error; - console.error(e); - setError(e.message); - } finally { - setLoading(false); - } - })(); - }, [file]); - - return ( -
- {loading ? ( -
- -

Loading image...

-
- ) : error ? ( -
- - {error} -
- ) : ( -
- {file.name} { - console.error(e); - setError( - "Could not preview this image, try downloading the file", - ); - }} - /> - - -
- -
- Preview Only - - This image is a preview and may not be the full resolution. - Please download the file for the full resolution. - -
-
-
-
- )} -
- ); -} diff --git a/src/app/@preview.layout.tsx b/src/app/@preview.layout.tsx deleted file mode 100644 index 01119cf..0000000 --- a/src/app/@preview.layout.tsx +++ /dev/null @@ -1,107 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Card, CardContent } from "~/components/ui/card"; - -import { getFileType } from "~/utils/previewHelper"; - -import config from "~/config/gIndex.config"; - -import PreviewAction from "./@preview.action"; -import PreviewAudio from "./@preview.audio"; -import PreviewDoc from "./@preview.doc"; -import PreviewImage from "./@preview.image"; -import PreviewManga from "./@preview.manga"; -import PreviewRich from "./@preview.rich"; -import PreviewUnknown from "./@preview.unknown"; -import PreviewVideo from "./@preview.video"; -import RichHeader from "./@rich-header"; - -type Props = { - data: z.infer; - fileType: "unknown" | ReturnType; -}; -export default function FilePreviewLayout({ data, fileType }: Props) { - const [view, setView] = useState<"markdown" | "raw">("markdown"); - - return ( -
- - - - {config.apiConfig.streamMaxSize && - Number(data.size || 0) > config.apiConfig.streamMaxSize ? ( -
- -

Preview not available

-

- Looks like this file size exceed the preview size limit -

-
- ) : ( - /** - * TODO: Might need a better way to handle large files preview - * like manga, pdf, etc - * - * For now it's downloading the whole file and then previewing it - * which is not a good implementation - */ -
- {fileType === "image" ? ( - - ) : fileType === "audio" ? ( - - ) : fileType === "video" ? ( - - ) : fileType === "code" ? ( - - ) : fileType === "text" ? ( - - ) : fileType === "markdown" ? ( - - ) : fileType === "document" ? ( - - ) : fileType === "pdf" ? ( - - ) : fileType === "manga" ? ( - - ) : ( - - )} -
- )} -
-
- -
- ); -} diff --git a/src/app/@preview.rich.tsx b/src/app/@preview.rich.tsx deleted file mode 100644 index 1d56239..0000000 --- a/src/app/@preview.rich.tsx +++ /dev/null @@ -1,128 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Button } from "~/components/ui/button"; - -import Markdown from "./@markdown"; -import { GetContent } from "./actions"; - -type Props = { - file: z.infer; - view: "markdown" | "raw"; - code?: boolean; -}; -export default function PreviewRich({ file, code, view }: Props) { - const [fetchedContent, setFetchedContent] = useState(""); - const [content, setContent] = useState(""); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(""); - - const [expand, setExpand] = useState(false); - - useEffect(() => { - (async () => { - try { - const text = await GetContent(file.encryptedId); - if (!text) { - setError("Looks like there is no content to preview"); - return; - } - // setFetchedContent(text); - // if (code) { - // setContent(`\`\`\`${file.fileExtension}\n${text}\`\`\``); - // } else { - setContent(text.trim()); - // } - } catch (error) { - const e = error as Error; - console.error(e); - setError(e.message); - } finally { - setLoading(false); - } - })(); - }, [file, code]); - - return ( -
- {loading ? ( -
- -

Loading content...

-
- ) : error ? ( -
- - {error} -
- ) : ( -
-
- -
-
- -
-
- )} -
- ); -} diff --git a/src/app/@preview.unknown.tsx b/src/app/@preview.unknown.tsx deleted file mode 100644 index b044810..0000000 --- a/src/app/@preview.unknown.tsx +++ /dev/null @@ -1,52 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; - -export default function PreviewUnknown() { - const [loading, setLoading] = useState(true); - - useEffect(() => { - setLoading(false); - }, []); - - return ( -
- {loading ? ( -
- -

Loading content...

-
- ) : ( -
- -

Preview not available

-

- This file type is not supported for preview, try downloading the - file instead. -

-
- )} -
- ); -} diff --git a/src/app/@preview.video.tsx b/src/app/@preview.video.tsx deleted file mode 100644 index 1a4e634..0000000 --- a/src/app/@preview.video.tsx +++ /dev/null @@ -1,130 +0,0 @@ -"use client"; - -import dynamic from "next/dynamic"; -import { useEffect, useState } from "react"; -import { z } from "zod"; -import { Schema_File } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; - -import { CreateDownloadToken } from "./actions"; - -const Plyr = dynamic(() => import("plyr-react"), { - ssr: false, - loading: () => ( -
- -

Loading player...

-
- ), -}); - -type Props = { - file: z.infer; -}; -export default function PreviewVideo({ file }: Props) { - const [videoSrc, setVideoSrc] = useState(""); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(""); - - useEffect(() => { - (async () => { - try { - if (!file.encryptedWebContentLink) { - setError("No video to preview"); - return; - } - const token = await CreateDownloadToken(); - setVideoSrc(`/api/stream/${file.encryptedId}?token=${token}`); - } catch (error) { - const e = error as Error; - console.error(e); - setError(e.message); - } finally { - setLoading(false); - } - })(); - }, [file]); - - return ( -
- {loading ? ( -
- -

Loading video...

-
- ) : error ? ( -
- - {error} -
- ) : ( -
- -
- )} -
- ); -} diff --git a/src/app/@readme.tsx b/src/app/@readme.tsx deleted file mode 100644 index 8990720..0000000 --- a/src/app/@readme.tsx +++ /dev/null @@ -1,38 +0,0 @@ -"use client"; - -import { useState } from "react"; - -import { Card, CardContent } from "~/components/ui/card"; - -import Markdown from "./@markdown"; -import RichHeader from "./@rich-header"; - -type Props = { - content: string; - title: string; -}; -export default function Readme({ content, title }: Props) { - const [view, setView] = useState<"markdown" | "raw">("markdown"); - - return ( -
- - - - - - -
- ); -} diff --git a/src/app/@rich-header.tsx b/src/app/@rich-header.tsx deleted file mode 100644 index 3c984f5..0000000 --- a/src/app/@rich-header.tsx +++ /dev/null @@ -1,53 +0,0 @@ -"use client"; - -import { Button } from "~/components/ui/button"; -import { CardHeader } from "~/components/ui/card"; -import { Separator } from "~/components/ui/separator"; - -import { getFileType } from "~/utils/previewHelper"; - -type Props = { - title: string; - view: "markdown" | "raw"; - onViewChange: (value: "markdown" | "raw") => void; - fileType: ReturnType | "unknown"; -}; -export default function RichHeader({ - title, - view, - onViewChange, - fileType, -}: Props) { - return ( - -
- {/* */} -

- {title} -

- {/*
*/} - {["markdown", "code", "text"].includes(fileType) && ( -
- - -
- )} -
- -
- ); -} diff --git a/src/app/[...rest]/deploy/@form.api-config.tsx b/src/app/[...rest]/deploy/@form.api-config.tsx deleted file mode 100644 index 48f9ba3..0000000 --- a/src/app/[...rest]/deploy/@form.api-config.tsx +++ /dev/null @@ -1,533 +0,0 @@ -"use client"; - -import toast from "react-hot-toast"; -import { z } from "zod"; -import { - ConfigurationCategory, - ConfigurationKeys, - ConfigurationValue, - Schema_App_Configuration, -} from "~/schema"; - -import { Button } from "~/components/ui/button"; -import { Input } from "~/components/ui/input"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "~/components/ui/select"; -import { Separator } from "~/components/ui/separator"; - -import { decryptData } from "~/utils/encryptionHelper/hash"; -import { parseConfigFile } from "~/utils/parseConfigFile"; - -import ConfigInput from "./@form.input-config"; - -type Props = { - state: { - get: z.input; - set: < - T extends ConfigurationCategory = ConfigurationCategory, - K extends ConfigurationKeys = ConfigurationKeys, - >( - category: T, - key: K, - value: ConfigurationValue, - ) => void; - }; - error: { - get: Partial, string>>; - set: >(key: T, value: string) => void; - }; - onReset: (category: ConfigurationCategory) => void; -}; -export default function ApiConfig({ - state: { get, set }, - error, - onReset, -}: Props) { - return ( -
{ - e.preventDefault(); - onReset("api"); - }} - > -
-

API

-
- - -
-
- - - -
- > - key='rootFolder' - title='Root Folder ID' - description={`Starting point of the drive, will be used as the root folder to display files and folders. -This ID will be encrypted in the config file.`} - error={error.get.rootFolder} - required - > - { - if (error.get.rootFolder) { - error.set("rootFolder", ""); - } - set("api", "rootFolder", e.target.value); - }} - onBlur={async () => { - try { - const value = get.api.rootFolder; - error.set("rootFolder", ""); - - if (!value) throw new Error("Root Folder ID is required"); - } catch (err) { - const e = err as Error; - error.set("rootFolder", e.message); - } - }} - /> - - - > - key='isTeamDrive' - title='Use Team Drive' - description={`If you are using Shared Drive, you NEED to enable this option.`} - error={error.get.isTeamDrive} - required - > - - - - {get.api.isTeamDrive && ( - > - key='sharedDrive' - title='Shared Drive ID' - description={`The Drive ID of the Shared Drive. -This ID will be encrypted in the config file`} - error={error.get.sharedDrive} - required={get.api.isTeamDrive} - > - { - if (error.get.sharedDrive) { - error.set("sharedDrive", ""); - } - set("api", "sharedDrive", e.target.value); - }} - onBlur={async () => { - try { - const value = get.api.sharedDrive; - const isTeamDrive = get.api.isTeamDrive; - error.set("sharedDrive", ""); - - if (!isTeamDrive) return; - if (!value) - throw new Error( - "Shared Drive ID is required if using Team Drive", - ); - } catch (err) { - const e = err as Error; - error.set("sharedDrive", e.message); - } - }} - /> - - )} - -
- > - key='itemsPerPage' - title='Items Per Page' - description={`Set how many items to display per page in the file list. -It's recommended to set this to a reasonable number, since it will affect the load time of the page. - -Default is 50.`} - error={error.get.itemsPerPage} - required - > - { - if (error.get.itemsPerPage) { - error.set("itemsPerPage", ""); - } - set("api", "itemsPerPage", parseInt(e.target.value)); - }} - onBlur={async () => { - try { - const value = get.api.itemsPerPage; - error.set("itemsPerPage", ""); - - if (value <= 0) - throw new Error("Items Per Page must be more than 0"); - } catch (err) { - const e = err as Error; - error.set("itemsPerPage", e.message); - } - }} - /> - - - > - key='searchResult' - title='Search Result' - description={`Set how many items to display in the search result. -It's recommended to set this to a small number, since it will affect the load time of the page. - -Default is 5.`} - error={error.get.searchResult} - required - > - { - if (error.get.searchResult) { - error.set("searchResult", ""); - } - set("api", "searchResult", parseInt(e.target.value)); - }} - onBlur={async () => { - try { - const value = get.api.searchResult; - error.set("searchResult", ""); - - if (value <= 0) - throw new Error("Search Result must be more than 0"); - } catch (err) { - const e = err as Error; - error.set("searchResult", e.message); - } - }} - /> - -
- - > - key='proxyThumbnail' - title='Proxy Thumbnail' - description={`Proxy the thumbnail image via API route. - -If your files thumbnail are not accessible, you can set this to true. -This will fetch the thumbnail image via API route, but it will increase the load on your server.`} - error={error.get.proxyThumbnail} - required - > - - - - > - key='allowDownloadProtectedFile' - title='Allow Download Protected File' - description={`Allow users to download password protected files. - -If set to true, users will be able to download the file without entering password as long as they have the link -If set to false, the download link will have a temporary token attached to it, the token will expire after certain duration (default is 6 hours)`} - error={error.get.allowDownloadProtectedFile} - required - > - - - - > - key='temporaryTokenDuration' - title='Temporary Token Duration (in hours)' - description={`Duration of the temporary token used for protected files download link.`} - error={error.get.temporaryTokenDuration} - required - > - { - if (error.get.temporaryTokenDuration) { - error.set("temporaryTokenDuration", ""); - } - set("api", "temporaryTokenDuration", parseInt(e.target.value)); - }} - onBlur={async () => { - try { - const value = get.api.temporaryTokenDuration; - error.set("temporaryTokenDuration", ""); - - if (value <= 0) - throw new Error( - "Temporary Token Duration must be more than 0", - ); - } catch (err) { - const e = err as Error; - error.set("temporaryTokenDuration", e.message); - } - }} - /> - - - > - key='maxFileSize' - title='Max Direct Download Size (in MB)' - description={`Max file size that can be downloaded directly from the server, instead of download link from Google Drive. -Please refer to your deploy platform for the maximum response size limit. -If you are using Vercel, the maximum response size is around 4 - 4.5MB. - -Set to 0 to disable the limit.`} - error={error.get.maxFileSize} - required - > - { - if (error.get.maxFileSize) { - error.set("maxFileSize", ""); - } - set("api", "maxFileSize", parseInt(e.target.value) * 1024 * 1024); - }} - onBlur={async () => { - try { - const value = get.api.maxFileSize; - error.set("maxFileSize", ""); - - if (value < 0) - throw new Error( - "Max file size must be more than or equal to 0", - ); - } catch (err) { - const e = err as Error; - error.set("maxFileSize", e.message); - } - }} - /> - - - > - key='streamMaxSize' - title='Max Stream Size (in MB)' - description={`For previewing large files, the file will be streamed in chunks. -There are response limit in some deploy platform like Vercel, also Google Drive will return 403 error if we tried using fetch to download large file on client. - -Make sure it's within reasonable size, since it will count towards your server bandwidth usage. -This will also affect the maximum file size that can be previewed. Especially for media files like video, audio, and images. -(Manga preview will automatically limited to the first 5MB) - -Default is 100MB, set to 0 to disable the limit.`} - error={error.get.streamMaxSize} - required - > - { - if (error.get.maxFileSize) { - error.set("streamMaxSize", ""); - } - set( - "api", - "streamMaxSize", - parseInt(e.target.value) * 1024 * 1024, - ); - }} - onBlur={async () => { - try { - const value = get.api.streamMaxSize; - error.set("streamMaxSize", ""); - - if (value < 0) - throw new Error( - "Max stream size must be more than or equal to 0", - ); - } catch (err) { - const e = err as Error; - error.set("streamMaxSize", e.message); - } - }} - /> - -
- - ); -} diff --git a/src/app/[...rest]/deploy/@form.env-config.tsx b/src/app/[...rest]/deploy/@form.env-config.tsx deleted file mode 100644 index c7244a0..0000000 --- a/src/app/[...rest]/deploy/@form.env-config.tsx +++ /dev/null @@ -1,359 +0,0 @@ -"use client"; - -import { useState } from "react"; -import toast from "react-hot-toast"; -import { z } from "zod"; -import { - ConfigState, - ConfigurationCategory, - ConfigurationKeys, - ConfigurationValue, - Schema_App_Configuration, - Schema_ServiceAccount, -} from "~/schema"; - -import { GenerateAESKey, VerifyAESKey } from "~/app/actions"; -import { Button } from "~/components/ui/button"; -import { Input } from "~/components/ui/input"; -import { Separator } from "~/components/ui/separator"; - -import ConfigInput from "./@form.input-config"; - -type Props = { - state: { - get: z.input; - set: < - T extends ConfigurationCategory = ConfigurationCategory, - K extends ConfigurationKeys = ConfigurationKeys, - >( - category: T, - key: K, - value: ConfigurationValue, - ) => void; - }; - error: { - get: Partial, string>>; - set: >( - key: T, - value: string, - ) => void; - }; - onReset: (category: ConfigurationCategory) => void; -}; -export default function EnvironmentConfig({ - state: { get, set }, - error, - onReset, -}: Props) { - const [encryptionState, setEncryptionState] = useState("idle"); - const [gdServiceState, setGdServiceState] = useState("idle"); - const [revealPassword, setRevealPassword] = useState(false); - - return ( -
{ - e.preventDefault(); - onReset("environment"); - }} - > -
-

Environment

-
- - -
-
- - - -
- > - key='ENCRYPTION_KEY' - title='Encryption Key' - description='The encryption key for the site, must be a alphanumeric string without spaces' - error={error.get.ENCRYPTION_KEY} - required - action={{ - label: "Generate", - async onClick(e) { - e.preventDefault(); - setEncryptionState("loading"); - error.set("ENCRYPTION_KEY", ""); - - try { - const keyStr = await GenerateAESKey(); - const valid = await VerifyAESKey("This is a test", keyStr); - if (!valid) - throw new Error("Invalid key generated, please try again"); - - set("environment", "ENCRYPTION_KEY", keyStr); - } catch (err) { - const e = err as Error; - console.error(e); - error.set("ENCRYPTION_KEY", e.message); - toast.error(e.message); - } finally { - setEncryptionState("idle"); - } - }, - state: encryptionState, - }} - > - { - if (error.get.ENCRYPTION_KEY) { - error.set("ENCRYPTION_KEY", ""); - } - set("environment", "ENCRYPTION_KEY", e.target.value); - }} - onBlur={async () => { - try { - const value = get.environment.ENCRYPTION_KEY; - error.set("ENCRYPTION_KEY", ""); - - if (!value) throw new Error("Encryption key is required"); - - if (value.includes(" ")) - throw new Error("Encryption key must not contain spaces"); - - const valid = await VerifyAESKey("This is a test", value); - if (!valid) - throw new Error( - "The encryption key is invalid, please generate a new one", - ); - } catch (err) { - const e = err as Error; - error.set("ENCRYPTION_KEY", e.message); - } - }} - /> - - - > - key='GD_SERVICE_B64' - title='Google Drive Service Account' - description={`The base64 encoded Google Drive Service Account JSON file -To avoid error when inputting, please use the "Load JSON" button to load the file directly`} - error={error.get.GD_SERVICE_B64} - required - action={{ - label: "Load JSON", - async onClick(e) { - e.preventDefault(); - setGdServiceState("loading"); - - try { - const fileInput = document.createElement("input"); - fileInput.type = "file"; - fileInput.accept = ".json"; - fileInput.onchange = async (fileEvent) => { - const file = (fileEvent.target as HTMLInputElement) - .files?.[0]; - if (!file) return toast.error("No file selected"); - - const reader = new FileReader(); - reader.onload = async (readerEvent) => { - const result = readerEvent.target?.result as string; - if (!result) return toast.error("Failed to read file"); - - const objectFile = JSON.parse(result); - const parse = Schema_ServiceAccount.safeParse(objectFile); - if (!parse.success) - return toast.error( - "Invalid Service Account JSON, please select a valid Google Drive Service Account JSON file", - ); - - set("environment", "GD_SERVICE_B64", btoa(result)); - error.set("GD_SERVICE_B64", ""); - - toast.success( - "Google Drive Service Account JSON file loaded", - ); - fileInput.value = ""; - }; - reader.readAsText(file); - }; - fileInput.click(); - } catch (err) { - const e = err as Error; - console.error(e); - error.set("GD_SERVICE_B64", e.message); - toast.error(e.message); - } finally { - setGdServiceState("idle"); - } - }, - state: gdServiceState, - }} - > - { - if (error.get.GD_SERVICE_B64) { - error.set("GD_SERVICE_B64", ""); - } - set("environment", "GD_SERVICE_B64", e.target.value); - }} - /> - - - > - key='NEXT_PUBLIC_DOMAIN' - title='Domain' - description={`The domain for the site, without the protocol -(e.g. drive-demo.mbaharip.com or mbaharip.com)`} - error={error.get.NEXT_PUBLIC_DOMAIN} - > - { - if (error.get.NEXT_PUBLIC_DOMAIN) { - error.set("NEXT_PUBLIC_DOMAIN", ""); - } - set("environment", "NEXT_PUBLIC_DOMAIN", e.target.value); - }} - onBlur={async () => { - try { - error.set("NEXT_PUBLIC_DOMAIN", ""); - } catch (err) { - const e = err as Error; - error.set("NEXT_PUBLIC_DOMAIN", e.message); - } - }} - /> - - - > - key='SITE_PASSWORD' - title='Site Password' - description='The password to access the site' - error={error.get.SITE_PASSWORD} - required={get.site.privateIndex} - action={{ - label: revealPassword ? "Hide" : "Reveal", - onClick(e) { - e.preventDefault(); - setRevealPassword((prev) => !prev); - }, - state: "idle", - }} - > - { - if (error.get.SITE_PASSWORD) { - error.set("SITE_PASSWORD", ""); - } - set("environment", "SITE_PASSWORD", e.target.value); - }} - onBlur={async () => { - try { - error.set("SITE_PASSWORD", ""); - if (get.site.privateIndex && !get.environment.SITE_PASSWORD) { - throw new Error( - "Site Password is required when Private Index is enabled", - ); - } - } catch (err) { - const e = err as Error; - console.error(e); - error.set("SITE_PASSWORD", e.message); - } - }} - /> - -
- - ); -} diff --git a/src/app/[...rest]/deploy/@form.input-config.tsx b/src/app/[...rest]/deploy/@form.input-config.tsx deleted file mode 100644 index 880bc01..0000000 --- a/src/app/[...rest]/deploy/@form.input-config.tsx +++ /dev/null @@ -1,120 +0,0 @@ -"use client"; - -import { PropsWithChildren } from "react"; -import { ConfigState } from "~/schema"; -import { cn } from "~/utils"; - -import Icon from "~/components/Icon"; -import { Button } from "~/components/ui/button"; -import { Label } from "~/components/ui/label"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "~/components/ui/tooltip"; - -type Props = { - key: T extends string ? T : string; - title: string; - description?: string; - required?: boolean; - action?: { - label: string; - onClick: (e: React.MouseEvent) => void; - state: ConfigState; - }; - error?: string; -}; -export default function ConfigInput(props: PropsWithChildren>) { - return ( -
-
- - {!props.required && ( - (optional) - )} - {props.description && ( - - e.preventDefault()} - className='cursor-default' - > - - - -

- {props.description} -

-
-
- )} -
- -
-
- {props.children} -
- {props.action && ( - - )} -
- -
- - {props.error} - -
-
- ); -} diff --git a/src/app/[...rest]/deploy/@form.input-theme.tsx b/src/app/[...rest]/deploy/@form.input-theme.tsx deleted file mode 100644 index 3553ca3..0000000 --- a/src/app/[...rest]/deploy/@form.input-theme.tsx +++ /dev/null @@ -1,181 +0,0 @@ -"use client"; - -import { PopoverTrigger } from "@radix-ui/react-popover"; -import React, { PropsWithChildren } from "react"; -import { HslColor, HslColorPicker } from "react-colorful"; -import { z } from "zod"; -import { Schema_Theme } from "~/schema"; - -import Icon from "~/components/Icon"; -import { Input } from "~/components/ui/input"; -import { Label } from "~/components/ui/label"; -import { Popover, PopoverContent } from "~/components/ui/popover"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "~/components/ui/tooltip"; - -type Props = { - key: keyof z.infer; - title: string; - description?: string; - value: HslColor; - onChange: (color: HslColor) => void; - children?: React.ReactNode; -}; -export default function ThemeInput(props: PropsWithChildren) { - // const [value, setValue] = useState(props.value); - // const [debouncedValue, setDebouncedValue] = useState(props.value); - - // useEffect(() => { - // setValue(props.value); - - // // eslint-disable-next-line react-hooks/exhaustive-deps - // }, [props.value]); - - // useEffect(() => { - // const timeout = setTimeout(() => { - // setDebouncedValue(value); - // }, 250); - // return () => clearTimeout(timeout); - - // // eslint-disable-next-line react-hooks/exhaustive-deps - // }, [value]); - - // useEffect(() => { - // props.onChange(debouncedValue); - - // // eslint-disable-next-line react-hooks/exhaustive-deps - // }, [debouncedValue]); - - return ( -
-
- {props.title} - {props.description && ( - - e.preventDefault()} - className='cursor-default' - > - - - -

- {props.description} -

-
-
- )} -
- -
- {props.children ? ( - props.children - ) : ( - <> - - hsl({props.value.h}, {props.value.s}%, {props.value.l}%) - - - -
-
-
- - - -
-
- - { - const value = props.value; - props.onChange({ - h: Number(e.target.value), - s: value.s, - l: value.l, - }); - }} - /> -
-
- - { - const value = props.value; - props.onChange({ - h: value.h, - s: Number(e.target.value), - l: value.l, - }); - }} - /> -
-
- - { - const value = props.value; - props.onChange({ - h: value.h, - s: value.s, - l: Number(e.target.value), - }); - }} - /> -
-
-
- - - )} -
-
- ); -} diff --git a/src/app/[...rest]/deploy/@form.site-config.tsx b/src/app/[...rest]/deploy/@form.site-config.tsx deleted file mode 100644 index 84d5f57..0000000 --- a/src/app/[...rest]/deploy/@form.site-config.tsx +++ /dev/null @@ -1,418 +0,0 @@ -import toast from "react-hot-toast"; -import { z } from "zod"; -import { - ConfigurationCategory, - ConfigurationKeys, - ConfigurationValue, - Schema_App_Configuration, -} from "~/schema"; - -import { Button } from "~/components/ui/button"; -import { Input } from "~/components/ui/input"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "~/components/ui/select"; -import { Separator } from "~/components/ui/separator"; - -import { parseConfigFile } from "~/utils/parseConfigFile"; - -import config from "~/config/gIndex.config"; - -import ConfigInput from "./@form.input-config"; - -type Props = { - state: { - get: z.input; - set: < - T extends ConfigurationCategory = ConfigurationCategory, - K extends ConfigurationKeys = ConfigurationKeys, - >( - category: T, - key: K, - value: ConfigurationValue, - ) => void; - }; - error: { - get: Partial, string>>; - set: >(key: T, value: string) => void; - }; - onReset: (category: ConfigurationCategory) => void; -}; -export default function SiteConfig({ - state: { get, set }, - error, - onReset, -}: Props) { - return ( -
{ - e.preventDefault(); - onReset("site"); - }} - > -
-

Site

-
- - -
-
- - - -
-
-
-
- favicon - {get.site.siteName} -
- -
- favicon - - {get.site - .siteNameTemplate!.replace("%s", "Page Title") - .replace("%t", get.site.siteName)} - -
-
- -
- -
-
- > - key='siteName' - title='Index Site Name' - error={error.get.siteName} - required - > - { - if (error.get.siteName) { - error.set("siteName", ""); - } - set("site", "siteName", e.target.value); - }} - onBlur={async () => { - try { - const value = get.site.siteName; - error.set("siteName", ""); - - if (!value) throw new Error("Site name is required"); - } catch (err) { - const e = err as Error; - error.set("siteName", e.message); - } - }} - /> - - - > - key='siteNameTemplate' - title='Site Name Template' - description={`The template for the site name. - -Usable variables: -%s - Page Title -%t - Site Name`} - error={error.get.siteNameTemplate} - > - { - if (error.get.siteNameTemplate) { - error.set("siteNameTemplate", ""); - } - set("site", "siteNameTemplate", e.target.value); - }} - onBlur={async () => { - try { - const value = get.site.siteNameTemplate; - error.set("siteNameTemplate", ""); - } catch (err) { - const e = err as Error; - error.set("siteNameTemplate", e.message); - } - }} - /> - - - > - key='siteDescription' - title='Site Description' - error={error.get.siteDescription} - required - > - { - if (error.get.siteDescription) { - error.set("siteDescription", ""); - } - set("site", "siteDescription", e.target.value); - }} - onBlur={async () => { - try { - const value = get.site.siteDescription; - error.set("siteDescription", ""); - - if (!value) throw new Error("Site description is required"); - } catch (err) { - const e = err as Error; - error.set("siteDescription", e.message); - } - }} - /> - - -
- > - key='siteAuthor' - title='Site Author' - error={error.get.siteAuthor} - description={`Will be used for metadata, and also affect the footer variable`} - > - { - if (error.get.siteAuthor) { - error.set("siteAuthor", ""); - } - set("site", "siteAuthor", e.target.value); - }} - onBlur={async () => { - try { - const value = get.site.siteAuthor; - error.set("siteAuthor", ""); - } catch (err) { - const e = err as Error; - error.set("siteAuthor", e.message); - } - }} - /> - - - > - key='twitterHandle' - title='Twitter Handle' - error={error.get.twitterHandle} - description={`Will be used for metadata, and also affect the footer variable`} - > - { - if (error.get.twitterHandle) { - error.set("twitterHandle", ""); - } - set("site", "twitterHandle", e.target.value); - }} - onBlur={async () => { - try { - const value = get.site.twitterHandle; - error.set("twitterHandle", ""); - } catch (err) { - const e = err as Error; - error.set("twitterHandle", e.message); - } - }} - /> - -
-
- -
- Opengraph Preview -
- - {(get.site.siteNameTemplate || "%s") - .replace("%s", "Page Title") - .replace("%t", get.site.siteName)} - - - {get.environment.NEXT_PUBLIC_DOMAIN || "http://localhost:3000"} - - - {get.site.siteDescription} - -
-
-
- - - - > - key='privateIndex' - title='Private Index' - description={`Lock the whole site behind a password -Will use the site password set in the "Environment" category`} - error={error.get.privateIndex} - required - > - - - - > - key='showFileExtension' - title='Show File Extension' - description={`Show file extension in file explorer - -e.g. "file.mp4" instead of "file"`} - error={error.get.showFileExtension} - required - > - - -
- - ); -} diff --git a/src/app/[...rest]/deploy/@form.theme.tsx b/src/app/[...rest]/deploy/@form.theme.tsx deleted file mode 100644 index 97cd3cd..0000000 --- a/src/app/[...rest]/deploy/@form.theme.tsx +++ /dev/null @@ -1,235 +0,0 @@ -"use client"; - -import { z } from "zod"; -import { Schema_Theme, ThemeKeys } from "~/schema"; - -import { Input } from "~/components/ui/input"; -import { Separator } from "~/components/ui/separator"; -import { Slider } from "~/components/ui/slider"; - -import { parseThemeValue } from "~/utils/parseConfigFile"; - -import ThemeInput from "./@form.input-theme"; - -type Props = { - currentTheme: "light" | "dark"; - state: { - get: { - light: z.input; - dark: z.input; - }; - set: (theme: "light" | "dark", key: ThemeKeys, value: string) => void; - }; -}; -export default function ThemeForm({ - currentTheme, - state: { get, set }, -}: Props) { - return ( -
- { - set(currentTheme, "background", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "foreground", `${val.h} ${val.s} ${val.l}`); - }} - /> - - - - { - set(currentTheme, "card", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "card-foreground", `${val.h} ${val.s} ${val.l}`); - }} - /> - - { - set(currentTheme, "popover", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "popover-foreground", `${val.h} ${val.s} ${val.l}`); - }} - /> - - - - { - set(currentTheme, "primary", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "primary-foreground", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "secondary", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set( - currentTheme, - "secondary-foreground", - `${val.h} ${val.s} ${val.l}`, - ); - }} - /> - { - set(currentTheme, "accent", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "accent-foreground", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "muted", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "muted-foreground", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "destructive", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set( - currentTheme, - "destructive-foreground", - `${val.h} ${val.s} ${val.l}`, - ); - }} - /> - - - - { - set(currentTheme, "border", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "input", `${val.h} ${val.s} ${val.l}`); - }} - /> - { - set(currentTheme, "ring", `${val.h} ${val.s} ${val.l}`); - }} - /> - {}} - > -
- { - const value = val[0] / 16; - set("light", "radius", `${value}rem`); - set("dark", "radius", `${value}rem`); - }} - /> - { - const value = parseFloat(e.currentTarget.value) / 16; - set("light", "radius", `${value}rem`); - set("dark", "radius", `${value}rem`); - }} - type='number' - className='w-16 min-w-0 ' - min={0} - max={24} - /> -
-
-
- ); -} diff --git a/src/app/[...rest]/deploy/@theme-preview.tsx b/src/app/[...rest]/deploy/@theme-preview.tsx deleted file mode 100644 index ea8e9ea..0000000 --- a/src/app/[...rest]/deploy/@theme-preview.tsx +++ /dev/null @@ -1,369 +0,0 @@ -"use client"; - -import nProgress from "nprogress"; -import { CSSProperties, PropsWithChildren } from "react"; -import toast from "react-hot-toast"; -import { z } from "zod"; -import { Schema_Theme } from "~/schema"; - -import FileGrid from "~/app/@file.grid"; -import FileList from "~/app/@file.list"; -import { Button } from "~/components/ui/button"; -import { - Card, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "~/components/ui/card"; -import { - Dialog, - DialogClose, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "~/components/ui/dialog"; -import { - Drawer, - DrawerClose, - DrawerContent, - DrawerDescription, - DrawerFooter, - DrawerHeader, - DrawerTitle, - DrawerTrigger, -} from "~/components/ui/drawer"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from "~/components/ui/dropdown-menu"; -import { Input } from "~/components/ui/input"; -import { - Popover, - PopoverContent, - PopoverTrigger, -} from "~/components/ui/popover"; -import { Separator } from "~/components/ui/separator"; -import { - Sheet, - SheetClose, - SheetContent, - SheetDescription, - SheetFooter, - SheetHeader, - SheetTitle, - SheetTrigger, -} from "~/components/ui/sheet"; -import { Textarea } from "~/components/ui/textarea"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, -} from "~/components/ui/tooltip"; - -type Props = { - theme: z.input; -}; -export default function ThemePreview({ theme }: Props) { - return ( -
- - - - - - - - - - - - - Title - Description - - - Content - Footer - - - - - -