import * as React from "bloatless-react"; import { Chat, MessageObject } from "../../Model/chatModel"; import { AllObjectsView } from "./allObjectsView"; import { NoteObjectsView } from "./noteObjectsView"; import { ObjectDetailModal } from "./objectDetailModal"; import { translation } from "../../translations"; export const viewTypes = { all: [translation.viewAll, "grid_view"], notes: [translation.viewNotes, "sticky_note_2"], }; export function ChatObjectView(chat: Chat) { // selection and modal const isShowingObjectModal = new React.State(false); const selectedObject = new React.State(undefined); const objectModal = React.createProxyState( [chat.objects, selectedObject], () => { if (selectedObject.value == undefined) return
; return ObjectDetailModal( chat, selectedObject.value, isShowingObjectModal ); } ); // view type const selectedViewType = new React.State("all"); const mainView = React.createProxyState([selectedViewType], () => { function getViewFunction() { switch (selectedViewType.value) { case "notes": return NoteObjectsView; default: return AllObjectsView; } } return getViewFunction()(chat, selectedObject, isShowingObjectModal); }); // methods function createObject() { const newObject = chat.createObjectFromTitle(translation.untitledObject); chat.addObjectAndSend(newObject); selectedObject.value = newObject; isShowingObjectModal.value = true; } return (
{...Object.keys(viewTypes).map((key: any) => ViewTypeToggle(key, selectedViewType) )}
); } function ViewTypeToggle( key: keyof typeof viewTypes, selection: React.State ) { const [label, icon] = viewTypes[key]; function select() { selection.value = key; } const isSelected = React.createProxyState( [selection], () => selection.value == key ); return ( ); }