瀏覽代碼

refactor: disable pagination moved to a function

reduces repeated code
Aryan Kothari 9 月之前
父節點
當前提交
cdac0cd1df
共有 3 個文件被更改,包括 15 次插入31 次删除
  1. 4 19
      src/lib/components/chat/Settings/Chats.svelte
  2. 4 12
      src/lib/components/layout/Sidebar.svelte
  3. 7 0
      src/lib/utils/index.ts

+ 4 - 19
src/lib/components/chat/Settings/Chats.svelte

@@ -12,7 +12,7 @@
 		getAllUserChats,
 		getChatList
 	} from '$lib/apis/chats';
-	import { getImportOrigin, convertOpenAIChats } from '$lib/utils';
+	import { getImportOrigin, convertOpenAIChats, disablePagination } from '$lib/utils';
 	import { onMount, getContext } from 'svelte';
 	import { goto } from '$app/navigation';
 	import { toast } from 'svelte-sonner';
@@ -61,12 +61,7 @@
 				await createNewChat(localStorage.token, chat);
 			}
 		}
-		// loading all chats. disable pagination on scrol.
-		scrollPaginationEnabled.set(false);
-		// subsequent queries will calculate page size to rehydrate the ui.
-		// since every chat is already loaded, the calculation should now load all chats.
-		pageSkip.set(0);
-		pageLimit.set(-1);
+		disablePagination();
 		await chats.set(await getChatList(localStorage.token));
 	};
 
@@ -82,12 +77,7 @@
 		await archiveAllChats(localStorage.token).catch((error) => {
 			toast.error(error);
 		});
-		// loading all chats. disable pagination on scrol.
-		scrollPaginationEnabled.set(false);
-		// subsequent queries will calculate page size to rehydrate the ui.
-		// since every chat is already loaded, the calculation should now load all chats.
-		pageSkip.set(0);
-		pageLimit.set(-1);
+		disablePagination();
 		await chats.set(await getChatList(localStorage.token));
 	};
 
@@ -96,12 +86,7 @@
 		await deleteAllChats(localStorage.token).catch((error) => {
 			toast.error(error);
 		});
-		// loading all chats. disable pagination on scrol.
-		scrollPaginationEnabled.set(false);
-		// subsequent queries will calculate page size to rehydrate the ui.
-		// since every chat is already loaded, the calculation should now load all chats.
-		pageSkip.set(0);
-		pageLimit.set(-1);
+		disablePagination();
 		await chats.set(await getChatList(localStorage.token));
 	};
 

+ 4 - 12
src/lib/components/layout/Sidebar.svelte

@@ -20,6 +20,7 @@
 	import { onMount, getContext, tick } from 'svelte';
 
 	const i18n = getContext('i18n');
+	import { disablePagination } from '$lib/utils';
 
 	import { updateUserSettings } from '$lib/apis/users';
 	import {
@@ -434,12 +435,7 @@
 						placeholder={$i18n.t('Search')}
 						bind:value={search}
 						on:focus={async () => {
-							// loading all chats. disable pagination on scrol.
-							scrollPaginationEnabled.set(false);
-							// subsequent queries will calculate page size to rehydrate the ui.
-							// since every chat is already loaded, the calculation should now load all chats.
-							pageSkip.set(0);
-							pageLimit.set(-1);
+							disablePagination();
 							await chats.set(await getChatList(localStorage.token)); // when searching, load all chats
 
 							enrichChatsWithContent($chats);
@@ -453,9 +449,7 @@
 					<button
 						class="px-2.5 text-xs font-medium bg-gray-50 dark:bg-gray-900 dark:hover:bg-gray-800 transition rounded-full"
 						on:click={async () => {
-							scrollPaginationEnabled.set(false);
-							pageSkip.set(0);
-							pageLimit.set(-1);
+							disablePagination();
 
 							await chats.set(
 								await getChatList(localStorage.token, $pageSkip * $pageLimit, $pageLimit)
@@ -472,9 +466,7 @@
 								if (chatIds.length === 0) {
 									// no chats found in the tag
 									await tags.set(await getAllChatTags(localStorage.token));
-									scrollPaginationEnabled.set(false);
-									pageSkip.set(0);
-									pageLimit.set(-1);
+									disablePagination();
 									chatIds = await getChatList(
 										localStorage.token,
 										$pageSkip * $pageLimit,

+ 7 - 0
src/lib/utils/index.ts

@@ -1,6 +1,7 @@
 import { v4 as uuidv4 } from 'uuid';
 import sha256 from 'js-sha256';
 import { WEBUI_BASE_URL } from '$lib/constants';
+import { scrollPaginationEnabled, pageLimit, pageSkip } from '$lib/stores';
 
 //////////////////////////
 // Helper functions
@@ -779,3 +780,9 @@ export const bestMatchingLanguage = (supportedLanguages, preferredLanguages, def
 	console.log(languages, preferredLanguages, match, defaultLocale);
 	return match || defaultLocale;
 };
+
+export const disablePagination = () => {
+	scrollPaginationEnabled.set(false);
+	pageLimit.set(-1);
+	pageSkip.set(0);
+};