Skip to content

Commit e2c8d4f

Browse files
feat: hide subfolder snippets (#371)
1 parent 094f038 commit e2c8d4f

File tree

10 files changed

+42
-4
lines changed

10 files changed

+42
-4
lines changed

src/main/menu/main.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,16 @@ const viewMenu: MenuItemConstructorOptions[] = [
333333
}
334334
}
335335
]
336+
},
337+
{
338+
label: i18n.t('menu:view.hideSubfolderSnippets'),
339+
type: 'checkbox',
340+
checked: store.app.get('hideSubfolderSnippets'),
341+
click: () => {
342+
BrowserWindow.getFocusedWindow()?.webContents.send(
343+
'main-menu:hide-subfolder-snippets'
344+
)
345+
}
336346
}
337347
]
338348

src/main/services/i18n/locales/en/menu.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
"dateModified": "Date Modified",
5050
"dateCreated": "Date Created",
5151
"name": "Name"
52-
}
52+
},
53+
"hideSubfolderSnippets": "Hide Subfolder Snippets"
5354
},
5455
"edit": {
5556
"label": "Edit",

src/main/services/i18n/locales/ru/menu.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
"dateModified": "Дате модификации",
5050
"dateCreated": "Дате создания",
5151
"name": "Имени"
52-
}
52+
},
53+
"hideSubfolderSnippets": "Скрыть сниппеты в подпапках"
5354
},
5455
"edit": {
5556
"label": "Изменить",

src/main/store/module/app.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default new Store<AppStore>({
99
bounds: {},
1010
sidebarWidth: 180,
1111
snippetListWidth: 250,
12-
sort: 'updatedAt'
12+
sort: 'updatedAt',
13+
hideSubfolderSnippets: false
1314
}
1415
})

src/renderer/App.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ const init = async () => {
8585
}
8686
8787
snippetStore.sort = store.app.get('sort')
88+
snippetStore.hideSubfolderSnippets = store.app.get('hideSubfolderSnippets')
8889
8990
if (theme) {
9091
appStore.setTheme(theme)
@@ -228,6 +229,11 @@ ipc.on('main-menu:sort-snippets', (event, sort) => {
228229
snippetStore.setSort(sort)
229230
})
230231
232+
ipc.on('main-menu:hide-subfolder-snippets', () => {
233+
snippetStore.hideSubfolderSnippets = !snippetStore.hideSubfolderSnippets
234+
store.app.set('hideSubfolderSnippets', snippetStore.hideSubfolderSnippets)
235+
})
236+
231237
ipc.on('main-menu:add-description', async () => {
232238
await onAddDescription()
233239
})

src/renderer/components/snippets/SnippetList.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
>
1313
<PerfectScrollbar>
1414
<SnippetListItem
15-
v-for="(i, index) in snippetStore.snippets"
15+
v-for="(i, index) in snippetStore.snippetsByFilter"
1616
:id="i.id"
1717
:key="i.id"
1818
:data-id="i.id"

src/renderer/store/snippets.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,29 @@ export const useSnippetStore = defineStore('snippets', {
2727
fragment: 0,
2828
searchQuery: undefined,
2929
sort: 'updatedAt',
30+
hideSubfolderSnippets: false,
3031
isContextState: false,
3132
isMarkdownPreview: false,
3233
isScreenshotPreview: false,
3334
isCodePreview: false
3435
}),
3536

3637
getters: {
38+
snippetsByFilter: state => {
39+
const folderStore = useFolderStore()
40+
41+
if (folderStore.selectedAlias) {
42+
return state.snippets
43+
}
44+
45+
if (state.hideSubfolderSnippets) {
46+
return state.snippets.filter(
47+
i => i.folderId === folderStore.selectedId
48+
)
49+
}
50+
51+
return state.snippets
52+
},
3753
selectedId: state => state.selected?.id,
3854
selectedIds: state => state.selectedMultiple.map(i => i.id),
3955
selectedIndex: state =>

src/shared/types/main/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type MainMenuAction =
4545
| 'preview-markdown'
4646
| 'search'
4747
| 'sort-snippets'
48+
| 'hide-subfolder-snippets'
4849
| 'font-size-increase'
4950
| 'font-size-decrease'
5051
| 'font-size-reset'

src/shared/types/main/store.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface AppStore {
1313
sidebarWidth: number
1414
snippetListWidth: number
1515
sort: SnippetsSort
16+
hideSubfolderSnippets?: boolean
1617
version?: string
1718
}
1819

src/shared/types/renderer/store/snippets.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface State {
1212
fragment: number
1313
searchQuery?: string
1414
sort: SnippetsSort
15+
hideSubfolderSnippets: boolean
1516
isContextState: boolean
1617
isMarkdownPreview: boolean
1718
isScreenshotPreview: boolean

0 commit comments

Comments
 (0)