Skip to content

Commit 738acee

Browse files
committed
refactor: use consistent directory layout
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent 1772f17 commit 738acee

10 files changed

Lines changed: 128 additions & 97 deletions

File tree

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import type { IFileListFilterChip } from '../lib/fileListFilters.ts'
6+
import type { IFileListFilterChip } from '../../lib/filters/listFilters.ts'
77

88
import { subscribe } from '@nextcloud/event-bus'
99
import { beforeEach, describe, expect, test, vi } from 'vitest'
10-
import { FileListFilter, getFileListFilters, registerFileListFilter, unregisterFileListFilter } from '../lib/fileListFilters.ts'
10+
import { FileListFilter, getFileListFilters, registerFileListFilter, unregisterFileListFilter } from '../../lib/filters/index.ts'
1111

1212
class TestFilter extends FileListFilter {
1313
public testUpdated() {
1414
this.filterUpdated()
1515
}
1616

17-
public testUpdateChips(chips) {
17+
public testUpdateChips(chips: IFileListFilterChip[]) {
1818
this.updateChips(chips)
1919
}
2020
}
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import type { Folder } from '../lib/node/index.ts'
6+
import type { IFolder, IView } from '../../lib/index.ts'
77

88
import { beforeEach, describe, expect, test, vi } from 'vitest'
9-
import { getFileListHeaders, Header, registerFileListHeaders } from '../lib/fileListHeaders.ts'
10-
import logger from '../lib/utils/logger.ts'
9+
import { getFileListHeaders, Header, registerFileListHeaders } from '../../lib/index.ts'
10+
import logger from '../../lib/utils/logger.ts'
1111

1212
describe('FileListHeader init', () => {
1313
beforeEach(() => {
@@ -34,7 +34,7 @@ describe('FileListHeader init', () => {
3434

3535
expect(header.id).toBe('test')
3636
expect(header.order).toBe(1)
37-
expect(header.enabled!({} as Folder, {})).toBe(true)
37+
expect(header.enabled!({} as IFolder, {} as IView)).toBe(true)
3838

3939
registerFileListHeaders(header)
4040

@@ -178,9 +178,9 @@ describe('FileListHeader exec', () => {
178178
expect(header.render).toBe(render)
179179
expect(header.updated).toBe(updated)
180180

181-
header.enabled!({} as Folder, {})
182-
header.render(null as any as HTMLElement, {} as Folder, {})
183-
header.updated({} as Folder, {})
181+
header.enabled!({} as IFolder, {} as IView)
182+
header.render(null as any as HTMLElement, {} as IFolder, {} as IView)
183+
header.updated({} as IFolder, {} as IView)
184184

185185
expect(enabled).toHaveBeenCalled()
186186
expect(render).toHaveBeenCalled()
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import type { NewMenuEntry } from '../lib/newMenu/index.ts'
6+
import type { NewMenuEntry } from '../../lib/newMenu/index.ts'
77

88
import { afterEach, describe, expect, test, vi } from 'vitest'
9-
import { addNewFileMenuEntry, getNewFileMenu, getNewFileMenuEntries } from '../lib/newMenu/index.ts'
10-
import { NewMenu, NewMenuEntryCategory } from '../lib/newMenu/NewMenu.ts'
11-
import { Folder } from '../lib/node/index.ts'
12-
import { Permission } from '../lib/permissions.ts'
13-
import logger from '../lib/utils/logger.ts'
9+
import { addNewFileMenuEntry, getNewFileMenu, getNewFileMenuEntries } from '../../lib/newMenu/index.ts'
10+
import { NewMenu, NewMenuEntryCategory } from '../../lib/newMenu/NewMenu.ts'
11+
import { Folder } from '../../lib/node/index.ts'
12+
import { Permission } from '../../lib/permissions.ts'
13+
import logger from '../../lib/utils/logger.ts'
1414

1515
describe('NewFileMenu init', () => {
1616
test('Initializing NewFileMenu', () => {

lib/filters/functions.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*!
2+
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3+
* SPDX-License-Identifier: AGPL-3.0-or-later
4+
*/
5+
6+
import type { IFileListFilter } from './listFilters.ts'
7+
8+
import { emit } from '@nextcloud/event-bus'
9+
10+
/**
11+
* Register a new filter on the file list
12+
*
13+
* This only must be called once to register the filter,
14+
* when the filter state changes you need to call `filterUpdated` on the filter instead.
15+
*
16+
* @param filter The filter to register on the file list
17+
*/
18+
export function registerFileListFilter(filter: IFileListFilter): void {
19+
if (!window._nc_filelist_filters) {
20+
window._nc_filelist_filters = new Map<string, IFileListFilter>()
21+
}
22+
if (window._nc_filelist_filters.has(filter.id)) {
23+
throw new Error(`File list filter "${filter.id}" already registered`)
24+
}
25+
window._nc_filelist_filters.set(filter.id, filter)
26+
emit('files:filter:added', filter)
27+
}
28+
29+
/**
30+
* Remove a registered filter from the file list
31+
*
32+
* @param filterId The unique ID of the filter to remove
33+
*/
34+
export function unregisterFileListFilter(filterId: string): void {
35+
if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {
36+
window._nc_filelist_filters.delete(filterId)
37+
emit('files:filter:removed', filterId)
38+
}
39+
}
40+
41+
/**
42+
* Get all registered file list filters
43+
*/
44+
export function getFileListFilters(): IFileListFilter[] {
45+
if (!window._nc_filelist_filters) {
46+
return []
47+
}
48+
return [...window._nc_filelist_filters.values()]
49+
}

lib/filters/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*!
2+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
3+
* SPDX-License-Identifier: AGPL-3.0-or-later
4+
*/
5+
6+
export type * from './listFilters.ts'
7+
8+
export { FileListFilter } from './listFilters.ts'
9+
export { getFileListFilters, registerFileListFilter, unregisterFileListFilter } from './functions.ts'
Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import type { INode } from './node/index.ts'
6+
import type { INode } from '../node/index.ts'
77

8-
import { emit } from '@nextcloud/event-bus'
98
import { TypedEventTarget } from 'typescript-event-target'
109

1110
/**
@@ -145,44 +144,3 @@ export class FileListFilter extends TypedEventTarget<IFileListFilterEvents> impl
145144
this.dispatchTypedEvent('update:filter', new CustomEvent('update:filter') as FilterUpdateEvent)
146145
}
147146
}
148-
149-
/**
150-
* Register a new filter on the file list
151-
*
152-
* This only must be called once to register the filter,
153-
* when the filter state changes you need to call `filterUpdated` on the filter instead.
154-
*
155-
* @param filter The filter to register on the file list
156-
*/
157-
export function registerFileListFilter(filter: IFileListFilter): void {
158-
if (!window._nc_filelist_filters) {
159-
window._nc_filelist_filters = new Map<string, IFileListFilter>()
160-
}
161-
if (window._nc_filelist_filters.has(filter.id)) {
162-
throw new Error(`File list filter "${filter.id}" already registered`)
163-
}
164-
window._nc_filelist_filters.set(filter.id, filter)
165-
emit('files:filter:added', filter)
166-
}
167-
168-
/**
169-
* Remove a registered filter from the file list
170-
*
171-
* @param filterId The unique ID of the filter to remove
172-
*/
173-
export function unregisterFileListFilter(filterId: string): void {
174-
if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {
175-
window._nc_filelist_filters.delete(filterId)
176-
emit('files:filter:removed', filterId)
177-
}
178-
}
179-
180-
/**
181-
* Get all registered file list filters
182-
*/
183-
export function getFileListFilters(): IFileListFilter[] {
184-
if (!window._nc_filelist_filters) {
185-
return []
186-
}
187-
return [...window._nc_filelist_filters.values()]
188-
}

lib/headers/functions.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3+
* SPDX-License-Identifier: AGPL-3.0-or-later
4+
*/
5+
6+
import type { Header } from './listHeaders.ts'
7+
8+
import logger from '../utils/logger.ts'
9+
10+
/**
11+
* Register a new file list header.
12+
*
13+
* @param header - The header to register
14+
*/
15+
export function registerFileListHeaders(header: Header): void {
16+
if (typeof window._nc_filelistheader === 'undefined') {
17+
window._nc_filelistheader = []
18+
logger.debug('FileListHeaders initialized')
19+
}
20+
21+
// Check duplicates
22+
if (window._nc_filelistheader.find((search) => search.id === header.id)) {
23+
logger.error(`Header ${header.id} already registered`, { header })
24+
return
25+
}
26+
27+
window._nc_filelistheader.push(header)
28+
}
29+
30+
/**
31+
* Get all currently registered file list headers.
32+
*/
33+
export function getFileListHeaders(): Header[] {
34+
if (typeof window._nc_filelistheader === 'undefined') {
35+
window._nc_filelistheader = []
36+
logger.debug('FileListHeaders initialized')
37+
}
38+
39+
return window._nc_filelistheader
40+
}

lib/headers/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
3+
* SPDX-License-Identifier: AGPL-3.0-or-later
4+
*/
5+
6+
export type * from './listHeaders.ts'
7+
8+
export { Header } from './listHeaders.ts'
9+
export { getFileListHeaders, registerFileListHeaders } from './functions.ts'
Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import type { IView } from './navigation/view.ts'
7-
import type { IFolder } from './node/folder.ts'
8-
9-
import logger from './utils/logger.ts'
6+
import type { IView } from '../navigation/view.ts'
7+
import type { IFolder } from '../node/folder.ts'
108

119
export interface HeaderData {
1210
/** Unique ID */
@@ -71,35 +69,3 @@ export class Header {
7169
}
7270
}
7371
}
74-
75-
/**
76-
* Register a new file list header.
77-
*
78-
* @param header - The header to register
79-
*/
80-
export function registerFileListHeaders(header: Header): void {
81-
if (typeof window._nc_filelistheader === 'undefined') {
82-
window._nc_filelistheader = []
83-
logger.debug('FileListHeaders initialized')
84-
}
85-
86-
// Check duplicates
87-
if (window._nc_filelistheader.find((search) => search.id === header.id)) {
88-
logger.error(`Header ${header.id} already registered`, { header })
89-
return
90-
}
91-
92-
window._nc_filelistheader.push(header)
93-
}
94-
95-
/**
96-
* Get all currently registered file list headers.
97-
*/
98-
export function getFileListHeaders(): Header[] {
99-
if (typeof window._nc_filelistheader === 'undefined') {
100-
window._nc_filelistheader = []
101-
logger.debug('FileListHeaders initialized')
102-
}
103-
104-
return window._nc_filelistheader
105-
}

lib/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
export type * from './types.ts'
77

88
export * from './actions/index.ts'
9-
export * from './fileListFilters.ts'
10-
export * from './fileListHeaders.ts'
9+
export * from './filters/index.ts'
10+
export * from './headers/index.ts'
1111
export * from './navigation/index.ts'
1212
export * from './newMenu/index.ts'
1313
export * from './node/index.ts'

0 commit comments

Comments
 (0)