Files
beavergram/frontend/src/lib/stores/storage.svelte.ts
T

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();