@@ -6,14 +6,16 @@ import type { Tag } from '@web-archive/shared/types'
66import { cn } from '@web-archive/shared/utils'
77import { useRequest } from 'ahooks'
88import { ChevronDown , Pencil , TagIcon , Trash } from 'lucide-react'
9- import { useContext , useState } from 'react'
9+ import { useContext , useEffect , useState } from 'react'
1010import toast from 'react-hot-toast'
1111import { useTranslation } from 'react-i18next'
1212import EditTagDialog from './edit-tag-dialog'
1313import { deleteTag } from '~/data/tag'
1414import TagContext from '~/store/tag'
15+ import { queryAllPageIds } from '~/data/page'
1516
1617interface SidebarTagMenuProps {
18+ selectedFolder : number | null
1719 selectedTag : number | null
1820 setSelectedTag : ( tag : number | null ) => void
1921}
@@ -61,7 +63,7 @@ function TagBadge({ tag, isSelected, onClick, onDelete, onEdit }: TagBadgeProps)
6163 )
6264}
6365
64- function SidebarTagMenu ( { selectedTag, setSelectedTag } : SidebarTagMenuProps ) {
66+ function SidebarTagMenu ( { selectedTag, setSelectedTag, selectedFolder } : SidebarTagMenuProps ) {
6567 const { t } = useTranslation ( )
6668 const { tagCache : tags , refreshTagCache } = useContext ( TagContext )
6769 const [ isTagsCollapseOpen , setIsTagsCollapseOpen ] = useState ( false )
@@ -92,6 +94,19 @@ function SidebarTagMenu({ selectedTag, setSelectedTag }: SidebarTagMenuProps) {
9294 setEditTag ( tag )
9395 }
9496
97+ const [ showTagList , setShowTagList ] = useState ( tags )
98+ useEffect ( ( ) => {
99+ if ( ! selectedFolder ) {
100+ setShowTagList ( tags )
101+ return
102+ }
103+ queryAllPageIds ( selectedFolder ) . then ( ( data ) => {
104+ const newTags = tags . filter ( ( tag ) => {
105+ return tag . pageIds . some ( pageId => data . includes ( pageId ) )
106+ } )
107+ setShowTagList ( newTags )
108+ } )
109+ } , [ selectedFolder , tags ] )
95110 return (
96111 < SidebarMenu >
97112 < EditTagDialog editTag = { editTag } afterSubmit = { refreshTagCache } open = { editTagDialogOpen } setOpen = { setEditTagDialogOpen } > </ EditTagDialog >
@@ -113,7 +128,7 @@ function SidebarTagMenu({ selectedTag, setSelectedTag }: SidebarTagMenuProps) {
113128 onContextMenu = { e => e . preventDefault ( ) }
114129 >
115130 < div className = "space-y-2" >
116- { tags ?. map ( tag => (
131+ { showTagList ?. map ( tag => (
117132 < TagBadge
118133 key = { tag . id }
119134 tag = { tag }
0 commit comments