MCPcopy Create free account
hub / github.com/ZenNotes/zennotes / ArchiveView

Function ArchiveView

packages/app-core/src/components/ArchiveView.tsx:31–518  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

29}
30
31export function ArchiveView(): JSX.Element {
32 const vault = useStore((s) => s.vault)
33 const notes = useStore((s) => s.notes)
34 const folders = useStore((s) => s.folders)
35 const refreshNotes = useStore((s) => s.refreshNotes)
36 const selectNote = useStore((s) => s.selectNote)
37 const closeActiveNote = useStore((s) => s.closeActiveNote)
38 const openNoteInTab = useStore((s) => s.openNoteInTab)
39 const moveNote = useStore((s) => s.moveNote)
40 const tabsEnabled = useStore((s) => s.tabsEnabled)
41 const selectedPath = useStore((s) => s.selectedPath)
42 const renameNote = useStore((s) => s.renameNote)
43 const keymapOverrides = useStore((s) => s.keymapOverrides)
44 const vimMode = useStore((s) => s.vimMode)
45 const setFocusedPanel = useStore((s) => s.setFocusedPanel)
46 const systemFolderLabels = useStore((s) => s.systemFolderLabels)
47 const workspaceMode = useStore((s) => s.workspaceMode)
48 const amActive = useStore(isArchiveViewActive)
49 const folderLabels = useMemo(
50 () => resolveSystemFolderLabels(systemFolderLabels),
51 [systemFolderLabels]
52 )
53 const canRevealInFileManager =
54 window.zen.getAppInfo().runtime === 'desktop' && workspaceMode !== 'remote'
55 const absolutePathLabel =
56 workspaceMode === 'remote' ? 'Copy Server Path' : 'Copy Absolute Path'
57
58 const [filter, setFilter] = useState('')
59 const [cursorIndex, setCursorIndex] = useState(0)
60 const [menu, setMenu] = useState<{ x: number; y: number; path: string } | null>(null)
61 const filterRef = useRef<HTMLInputElement>(null)
62 const rootRef = useRef<HTMLDivElement>(null)
63 const gPending = useRef(0)
64 const gTimer = useRef<ReturnType<typeof setTimeout>>()
65
66 const archived = useMemo(
67 () =>
68 notes
69 .filter((note) => note.folder === 'archive')
70 .sort((a, b) => b.updatedAt - a.updatedAt),
71 [notes]
72 )
73
74 const filtered = useMemo(() => {
75 const q = filter.trim().toLowerCase()
76 if (!q) return archived
77 return archived.filter(
78 (note) =>
79 note.title.toLowerCase().includes(q) ||
80 note.excerpt.toLowerCase().includes(q) ||
81 note.path.toLowerCase().includes(q)
82 )
83 }, [archived, filter])
84
85 const safeCursor = Math.min(cursorIndex, Math.max(0, filtered.length - 1))
86 const current = filtered[safeCursor] ?? null
87
88 useEffect(() => {

Callers

nothing calls this directly

Calls 15

confirmMoveToTrashFunction · 0.90
promptAppFunction · 0.90
buildMoveNotePromptFunction · 0.90
parseMoveNoteTargetFunction · 0.90
moveNoteToTrashFunction · 0.85
getAppInfoMethod · 0.80
clipboardWriteTextMethod · 0.80
openNoteWindowMethod · 0.80
revealNoteMethod · 0.80
cssEscapeFunction · 0.70
formatDateFunction · 0.70

Tested by

no test coverage detected