aboutsummaryrefslogtreecommitdiffstats
path: root/packages/web/lib
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-03-13 21:43:44 +0000
committerMohamed Bassem <me@mbassem.com>2024-03-14 16:40:45 +0000
commit04572a8e5081b1e4871e273cde9dbaaa44c52fe0 (patch)
tree8e993acb732a50d1306d4d6953df96c165c57f57 /packages/web/lib
parent2df08ed08c065e8b91bc8df0266bd4bcbb062be4 (diff)
downloadkarakeep-04572a8e5081b1e4871e273cde9dbaaa44c52fe0.tar.zst
structure: Create apps dir and copy tooling dir from t3-turbo repo
Diffstat (limited to 'packages/web/lib')
-rw-r--r--packages/web/lib/bookmarkUtils.tsx22
-rw-r--r--packages/web/lib/hooks/bookmark-search.ts73
-rw-r--r--packages/web/lib/providers.tsx75
-rw-r--r--packages/web/lib/trpc.tsx5
-rw-r--r--packages/web/lib/utils.ts6
5 files changed, 0 insertions, 181 deletions
diff --git a/packages/web/lib/bookmarkUtils.tsx b/packages/web/lib/bookmarkUtils.tsx
deleted file mode 100644
index a2828c29..00000000
--- a/packages/web/lib/bookmarkUtils.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { ZBookmark } from "@hoarder/trpc/types/bookmarks";
-
-const MAX_LOADING_MSEC = 30 * 1000;
-
-export function isBookmarkStillCrawling(bookmark: ZBookmark) {
- return (
- bookmark.content.type == "link" &&
- !bookmark.content.crawledAt &&
- Date.now().valueOf() - bookmark.createdAt.valueOf() < MAX_LOADING_MSEC
- );
-}
-
-export function isBookmarkStillTagging(bookmark: ZBookmark) {
- return (
- bookmark.taggingStatus == "pending" &&
- Date.now().valueOf() - bookmark.createdAt.valueOf() < MAX_LOADING_MSEC
- );
-}
-
-export function isBookmarkStillLoading(bookmark: ZBookmark) {
- return isBookmarkStillTagging(bookmark) || isBookmarkStillCrawling(bookmark);
-}
diff --git a/packages/web/lib/hooks/bookmark-search.ts b/packages/web/lib/hooks/bookmark-search.ts
deleted file mode 100644
index 738e1bd8..00000000
--- a/packages/web/lib/hooks/bookmark-search.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-import { useEffect, useState } from "react";
-import { api } from "@/lib/trpc";
-import { useRouter, useSearchParams } from "next/navigation";
-import { keepPreviousData } from "@tanstack/react-query";
-
-function useSearchQuery() {
- const searchParams = useSearchParams();
- const searchQuery = searchParams.get("q") || "";
- return { searchQuery };
-}
-
-export function useDoBookmarkSearch() {
- const router = useRouter();
- const { searchQuery } = useSearchQuery();
- const [timeoutId, setTimeoutId] = useState<NodeJS.Timeout | undefined>();
-
- useEffect(() => {
- return () => {
- if (!timeoutId) {
- return;
- }
- clearTimeout(timeoutId);
- };
- }, [timeoutId]);
-
- const doSearch = (val: string) => {
- setTimeoutId(undefined);
- router.replace(`/dashboard/search?q=${val}`);
- };
-
- const debounceSearch = (val: string) => {
- if (timeoutId) {
- clearTimeout(timeoutId);
- }
- const id = setTimeout(() => {
- doSearch(val);
- }, 200);
- setTimeoutId(id);
- };
-
- return {
- doSearch,
- debounceSearch,
- searchQuery,
- };
-}
-
-export function useBookmarkSearch() {
- const { searchQuery } = useSearchQuery();
-
- const { data, isPending, isPlaceholderData, error } =
- api.bookmarks.searchBookmarks.useQuery(
- {
- text: searchQuery,
- },
- {
- placeholderData: keepPreviousData,
- gcTime: 0,
- },
- );
-
- if (error) {
- throw error;
- }
-
- return {
- searchQuery,
- error,
- data,
- isPending,
- isPlaceholderData,
- };
-}
diff --git a/packages/web/lib/providers.tsx b/packages/web/lib/providers.tsx
deleted file mode 100644
index 5c4649b5..00000000
--- a/packages/web/lib/providers.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-"use client";
-
-import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
-import React, { useState } from "react";
-import { api } from "./trpc";
-import { loggerLink } from "@trpc/client";
-import { httpBatchLink } from "@trpc/client";
-import superjson from "superjson";
-import { SessionProvider } from "next-auth/react";
-import { Session } from "next-auth";
-
-function makeQueryClient() {
- return new QueryClient({
- defaultOptions: {
- queries: {
- // With SSR, we usually want to set some default staleTime
- // above 0 to avoid refetching immediately on the client
- staleTime: 60 * 1000,
- },
- },
- });
-}
-
-let browserQueryClient: QueryClient | undefined = undefined;
-
-function getQueryClient() {
- if (typeof window === "undefined") {
- // Server: always make a new query client
- return makeQueryClient();
- } else {
- // Browser: make a new query client if we don't already have one
- // This is very important so we don't re-make a new client if React
- // supsends during the initial render. This may not be needed if we
- // have a suspense boundary BELOW the creation of the query client
- if (!browserQueryClient) browserQueryClient = makeQueryClient();
- return browserQueryClient;
- }
-}
-
-export default function Providers({
- children,
- session,
-}: {
- children: React.ReactNode;
- session: Session | null;
-}) {
- const queryClient = getQueryClient();
-
- const [trpcClient] = useState(() =>
- api.createClient({
- links: [
- loggerLink({
- enabled: (op) =>
- process.env.NODE_ENV === "development" ||
- (op.direction === "down" && op.result instanceof Error),
- }),
- httpBatchLink({
- // TODO: Change this to be a full URL exposed as a client side setting
- url: `/api/trpc`,
- transformer: superjson,
- }),
- ],
- }),
- );
-
- return (
- <SessionProvider session={session}>
- <api.Provider client={trpcClient} queryClient={queryClient}>
- <QueryClientProvider client={queryClient}>
- {children}
- </QueryClientProvider>
- </api.Provider>
- </SessionProvider>
- );
-}
diff --git a/packages/web/lib/trpc.tsx b/packages/web/lib/trpc.tsx
deleted file mode 100644
index 79a2a9fe..00000000
--- a/packages/web/lib/trpc.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-"use client";
-import type { AppRouter } from "@hoarder/trpc/routers/_app";
-import { createTRPCReact } from "@trpc/react-query";
-
-export const api = createTRPCReact<AppRouter>();
diff --git a/packages/web/lib/utils.ts b/packages/web/lib/utils.ts
deleted file mode 100644
index 365058ce..00000000
--- a/packages/web/lib/utils.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { type ClassValue, clsx } from "clsx";
-import { twMerge } from "tailwind-merge";
-
-export function cn(...inputs: ClassValue[]) {
- return twMerge(clsx(inputs));
-}