MCPcopy
hub / github.com/anomalyco/opencode / view

Function view

packages/app/src/context/layout.tsx:782–932  ·  view source on GitHub ↗
(sessionKey: string | Accessor<string>)

Source from the content-addressed store, hash-verified

780 },
781 },
782 view(sessionKey: string | Accessor<string>) {
783 const key = createSessionKeyReader(sessionKey, ensureKey)
784 const s = createMemo(() => store.sessionView[key()] ?? { scroll: {} })
785 const terminalOpened = createMemo(() => store.terminal?.opened ?? false)
786 const reviewPanelOpened = createMemo(() => store.review?.panelOpened ?? DEFAULT_REVIEW_PANEL_OPENED)
787 const reviewPanelSource = createMemo(() => (reviewPanelOpened() ? ephemeral.reviewPanelSource : "other"))
788
789 function setTerminalOpened(next: boolean) {
790 const current = store.terminal
791 if (!current) {
792 setStore("terminal", { height: DEFAULT_TERMINAL_HEIGHT, opened: next })
793 return
794 }
795
796 const value = current.opened ?? false
797 if (value === next) return
798 setStore("terminal", "opened", next)
799 }
800
801 function setReviewPanelOpened(next: boolean, source: ReviewPanelSource) {
802 const nextSource = next ? source : "other"
803 const current = store.review
804 if (!current) {
805 batch(() => {
806 setStore("review", { diffStyle: "split" as ReviewDiffStyle, panelOpened: next })
807 setEphemeral("reviewPanelSource", nextSource)
808 })
809 return
810 }
811
812 const value = current.panelOpened ?? DEFAULT_REVIEW_PANEL_OPENED
813 if (value === next) {
814 if (ephemeral.reviewPanelSource !== nextSource) setEphemeral("reviewPanelSource", nextSource)
815 return
816 }
817 batch(() => {
818 setStore("review", "panelOpened", next)
819 setEphemeral("reviewPanelSource", nextSource)
820 })
821 }
822
823 return {
824 scroll(tab: string) {
825 return scroll.scroll(key(), tab)
826 },
827 setScroll(tab: string, pos: SessionScroll) {
828 scroll.setScroll(key(), tab, pos)
829 },
830 todoCollapsed: {
831 get: () => s().todoCollapsed ?? false,
832 set(collapsed: boolean) {
833 const session = key()
834 const current = store.sessionView[session]
835 if (!current) {
836 setStore("sessionView", session, { scroll: {}, todoCollapsed: collapsed })
837 } else {
838 setStore("sessionView", session, "todoCollapsed", collapsed)
839 }

Callers 15

SlotFunction · 0.85
EditBodyFunction · 0.85
EditFunction · 0.85
DiffFunction · 0.85
DiffViewerFunction · 0.85
runFunction · 0.85
openFunction · 0.85
SessionContextUsageFunction · 0.85
openContextFunction · 0.85
restoreScrollFunction · 0.85
handleScrollFunction · 0.85
toggleTerminalFunction · 0.85

Calls 2

createSessionKeyReaderFunction · 0.90
keyFunction · 0.70

Tested by

no test coverage detected