Spaces:
Paused
Paused
Apply settings without reloading the page (#682)
Browse files* Invalidate conversation list when settings update
* improve trimming on conv titles
* Update src/routes/+layout.server.ts
Co-authored-by: Mishig <mishig.davaadorj@coloradocollege.edu>
---------
Co-authored-by: Mishig <mishig.davaadorj@coloradocollege.edu>
- src/lib/stores/settings.ts +3 -0
- src/routes/+layout.server.ts +15 -6
src/lib/stores/settings.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
| 1 |
import { browser } from "$app/environment";
|
|
|
|
| 2 |
import { base } from "$app/paths";
|
|
|
|
| 3 |
import { getContext, setContext } from "svelte";
|
| 4 |
import { type Writable, writable, get } from "svelte/store";
|
| 5 |
|
|
@@ -53,6 +55,7 @@ export function createSettingsStore(initialValue: Omit<SettingsStore, "recentlyS
|
|
| 53 |
recentlySaved: false,
|
| 54 |
}));
|
| 55 |
}, 3000);
|
|
|
|
| 56 |
}, 300);
|
| 57 |
// debounce server calls by 300ms
|
| 58 |
}
|
|
|
|
| 1 |
import { browser } from "$app/environment";
|
| 2 |
+
import { invalidate } from "$app/navigation";
|
| 3 |
import { base } from "$app/paths";
|
| 4 |
+
import { UrlDependency } from "$lib/types/UrlDependency";
|
| 5 |
import { getContext, setContext } from "svelte";
|
| 6 |
import { type Writable, writable, get } from "svelte/store";
|
| 7 |
|
|
|
|
| 55 |
recentlySaved: false,
|
| 56 |
}));
|
| 57 |
}, 3000);
|
| 58 |
+
invalidate(UrlDependency.ConversationList);
|
| 59 |
}, 300);
|
| 60 |
// debounce server calls by 300ms
|
| 61 |
}
|
src/routes/+layout.server.ts
CHANGED
|
@@ -70,12 +70,21 @@ export const load: LayoutServerLoad = async ({ locals, depends }) => {
|
|
| 70 |
updatedAt: 1,
|
| 71 |
createdAt: 1,
|
| 72 |
})
|
| 73 |
-
.map((conv) =>
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
.toArray(),
|
| 80 |
settings: {
|
| 81 |
searchEnabled: !!(
|
|
|
|
| 70 |
updatedAt: 1,
|
| 71 |
createdAt: 1,
|
| 72 |
})
|
| 73 |
+
.map((conv) => {
|
| 74 |
+
// remove emojis if settings say so
|
| 75 |
+
if (settings?.hideEmojiOnSidebar) {
|
| 76 |
+
conv.title = conv.title.replace(/\p{Emoji}/gu, "");
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
// remove invalid unicode and trim whitespaces
|
| 80 |
+
conv.title = conv.title.replace(/\uFFFD/gu, "").trimStart();
|
| 81 |
+
return {
|
| 82 |
+
id: conv._id.toString(),
|
| 83 |
+
title: settings?.hideEmojiOnSidebar ? conv.title.replace(/\p{Emoji}/gu, "") : conv.title,
|
| 84 |
+
model: conv.model ?? defaultModel,
|
| 85 |
+
updatedAt: conv.updatedAt,
|
| 86 |
+
};
|
| 87 |
+
})
|
| 88 |
.toArray(),
|
| 89 |
settings: {
|
| 90 |
searchEnabled: !!(
|