39 lines
772 B
TypeScript
39 lines
772 B
TypeScript
import { ui } from "#lib/stores/ui.svelte.js";
|
|
|
|
export type StorageListing = "files" | "chats";
|
|
|
|
interface Resume {
|
|
count: number;
|
|
top: number;
|
|
}
|
|
|
|
function createStorageUi() {
|
|
let listing = $state<StorageListing>("files");
|
|
let chatId = $state<number | null>(null);
|
|
let resume: Resume | null = null;
|
|
|
|
return {
|
|
get chatId() {
|
|
return chatId;
|
|
},
|
|
get listing() {
|
|
return listing;
|
|
},
|
|
set listing(next: StorageListing) {
|
|
listing = next;
|
|
},
|
|
openChat(id: number, from: Resume) {
|
|
chatId = id;
|
|
resume = from;
|
|
ui.openPanel("storage-chat");
|
|
},
|
|
takeResume(): Resume | null {
|
|
const taken = resume;
|
|
resume = null;
|
|
return taken;
|
|
},
|
|
};
|
|
}
|
|
|
|
export const storageUi = createStorageUi();
|