This commit is contained in:
Timothy Jaeryang Baek 2025-10-02 13:26:41 -05:00
parent d9fdbb627f
commit abe70d1793

View file

@ -56,23 +56,16 @@
let version; let version;
onMount(async () => { const clearChatInputStorage = () => {
if ($user === undefined || $user === null) {
await goto('/auth');
return;
}
if (!['user', 'admin'].includes($user?.role)) {
return;
}
const chatInputKeys = Object.keys(localStorage).filter((key) => key.startsWith('chat-input')); const chatInputKeys = Object.keys(localStorage).filter((key) => key.startsWith('chat-input'));
if (chatInputKeys.length > 0) { if (chatInputKeys.length > 0) {
chatInputKeys.forEach((key) => { chatInputKeys.forEach((key) => {
localStorage.removeItem(key); localStorage.removeItem(key);
}); });
} }
};
const loadChatsFromDB = async () => { const checkLocalDBChats = async () => {
try { try {
// Check if IndexedDB exists // Check if IndexedDB exists
DB = await openDB('Chats', 1); DB = await openDB('Chats', 1);
@ -92,14 +85,18 @@
} }
}; };
const loadUserSettings = async (): Promise<Parameters<(typeof settings)['set']>[0]> => { const setUserSettings = async (cb) => {
const userSettings = await getUserSettings(localStorage.token).catch((error) => { const userSettings = await getUserSettings(localStorage.token).catch((error) => {
console.error(error); console.error(error);
return null; return null;
}); });
if (userSettings) { if (userSettings) {
return userSettings.ui; await settings.set(userSettings.ui);
if (cb) {
await cb();
}
} }
try { try {
@ -110,18 +107,16 @@
} }
}; };
const loadModels = async () => { const setModels = async () => {
models.set( models.set(
await getModels( await getModels(
localStorage.token, localStorage.token,
$config?.features?.enable_direct_connections $config?.features?.enable_direct_connections ? ($settings?.directConnections ?? null) : null
? ($settings?.directConnections ?? null)
: null
) )
); );
}; };
const loadToolServers = async () => { const setToolServers = async () => {
let toolServersData = await getToolServersData($settings?.toolServers ?? []); let toolServersData = await getToolServersData($settings?.toolServers ?? []);
toolServersData = toolServersData.filter((data) => { toolServersData = toolServersData.filter((data) => {
if (!data || data.error) { if (!data || data.error) {
@ -137,25 +132,32 @@
toolServers.set(toolServersData); toolServers.set(toolServersData);
}; };
const loadBanners = async () => { const setBanners = async () => {
const bannersData = await getBanners(localStorage.token); const bannersData = await getBanners(localStorage.token);
banners.set(bannersData); banners.set(bannersData);
}; };
const loadTools = async () => { const setTools = async () => {
const toolsData = await getTools(localStorage.token); const toolsData = await getTools(localStorage.token);
tools.set(toolsData); tools.set(toolsData);
}; };
// Parallel loading onMount(async () => {
if ($user === undefined || $user === null) {
await goto('/auth');
return;
}
if (!['user', 'admin'].includes($user?.role)) {
return;
}
clearChatInputStorage();
await Promise.all([ await Promise.all([
loadChatsFromDB(), checkLocalDBChats(),
loadBanners(), setBanners(),
loadTools(), setTools(),
loadUserSettings().then((loadedSettings) => { setUserSettings(async () => {
settings.set(loadedSettings); await Promise.all([setModels(), setToolServers()]);
// The following functions are dependent on the settings
return Promise.all([loadModels(), loadToolServers()]);
}) })
]); ]);