aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src/types.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/src/types.ts')
-rw-r--r--apps/files/src/types.ts148
1 files changed, 148 insertions, 0 deletions
diff --git a/apps/files/src/types.ts b/apps/files/src/types.ts
new file mode 100644
index 00000000000..0096ecc0fdb
--- /dev/null
+++ b/apps/files/src/types.ts
@@ -0,0 +1,148 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import type { FileAction, Folder, Node, View } from '@nextcloud/files'
+import type { Upload } from '@nextcloud/upload'
+
+// Global definitions
+export type Service = string
+export type FileSource = string
+export type ViewId = string
+
+// Files store
+export type FilesStore = {
+ [source: FileSource]: Node
+}
+
+export type RootsStore = {
+ [service: Service]: Folder
+}
+
+export type FilesState = {
+ files: FilesStore,
+ roots: RootsStore,
+}
+
+export interface RootOptions {
+ root: Folder
+ service: Service
+}
+
+// Paths store
+export type PathConfig = {
+ [path: string]: FileSource
+}
+
+export type ServicesState = {
+ [service: Service]: PathConfig
+}
+
+export type PathsStore = {
+ paths: ServicesState
+}
+
+export interface PathOptions {
+ service: Service
+ path: string
+ source: FileSource
+}
+
+// User config store
+export interface UserConfig {
+ [key: string]: boolean | string | undefined
+
+ crop_image_previews: boolean
+ default_view: 'files' | 'personal'
+ grid_view: boolean
+ show_files_extensions: boolean
+ show_hidden: boolean
+ show_mime_column: boolean
+ sort_favorites_first: boolean
+ sort_folders_first: boolean
+
+ show_dialog_deletion: boolean
+ show_dialog_file_extension: boolean,
+}
+
+export interface UserConfigStore {
+ userConfig: UserConfig
+}
+
+export interface SelectionStore {
+ selected: FileSource[]
+ lastSelection: FileSource[]
+ lastSelectedIndex: number | null
+}
+
+// Actions menu store
+export type GlobalActions = 'global'
+export interface ActionsMenuStore {
+ opened: GlobalActions|string|null
+}
+
+// View config store
+export interface ViewConfig {
+ [key: string]: string|boolean
+}
+export interface ViewConfigs {
+ [viewId: ViewId]: ViewConfig
+}
+export interface ViewConfigStore {
+ viewConfig: ViewConfigs
+}
+
+// Renaming store
+export interface RenamingStore {
+ renamingNode?: Node
+ newName: string
+}
+
+// Uploader store
+export interface UploaderStore {
+ queue: Upload[]
+}
+
+// Drag and drop store
+export interface DragAndDropStore {
+ dragging: FileSource[]
+}
+
+// Active node store
+export interface ActiveStore {
+ activeAction: FileAction|null
+ activeFolder: Folder|null
+ activeNode: Node|null
+ activeView: View|null
+}
+
+/**
+ * Search scope for the in-files-search
+ */
+export type SearchScope = 'filter'|'globally'
+
+export interface TemplateFile {
+ app: string
+ label: string
+ extension: string
+ iconClass?: string
+ iconSvgInline?: string
+ mimetypes: string[]
+ ratio?: number
+ templates?: Record<string, unknown>[]
+}
+
+export type Capabilities = {
+ files: {
+ bigfilechunking: boolean
+ blacklisted_files: string[]
+ forbidden_filename_basenames: string[]
+ forbidden_filename_characters: string[]
+ forbidden_filename_extensions: string[]
+ forbidden_filenames: string[]
+ undelete: boolean
+ version_deletion: boolean
+ version_labeling: boolean
+ versioning: boolean
+ }
+}