feat(files): refactor circular deps

This commit is contained in:
Karol Sójko
2022-08-04 16:21:46 +02:00
parent 7e251262d7
commit 696b82b9d3
33 changed files with 126 additions and 98 deletions

View File

@@ -0,0 +1,3 @@
export interface DirectoryHandle {
nativeHandle: unknown
}

View File

@@ -0,0 +1,3 @@
export interface FileHandleRead {
nativeHandle: unknown
}

View File

@@ -0,0 +1,4 @@
export interface FileHandleReadWrite {
nativeHandle: unknown
writableStream: unknown
}

View File

@@ -0,0 +1,19 @@
import { DirectoryHandle } from './DirectoryHandle'
import { FileHandleRead } from './FileHandleRead'
import { FileHandleReadWrite } from './FileHandleReadWrite'
import { FileSystemNoSelection } from './FileSystemNoSelection'
import { FileSystemResult } from './FileSystemResult'
export interface FileSystemApi {
selectDirectory(): Promise<DirectoryHandle | FileSystemNoSelection>
selectFile(): Promise<FileHandleRead | FileSystemNoSelection>
readFile(
file: FileHandleRead,
onBytes: (bytes: Uint8Array, isLast: boolean) => Promise<void>,
): Promise<FileSystemResult>
createDirectory(parentDirectory: DirectoryHandle, name: string): Promise<DirectoryHandle | FileSystemNoSelection>
createFile(directory: DirectoryHandle, name: string): Promise<FileHandleReadWrite | FileSystemNoSelection>
saveBytes(file: FileHandleReadWrite, bytes: Uint8Array): Promise<'success' | 'failed'>
saveString(file: FileHandleReadWrite, contents: string): Promise<'success' | 'failed'>
closeFileWriteStream(file: FileHandleReadWrite): Promise<'success' | 'failed'>
}

View File

@@ -0,0 +1 @@
export type FileSystemNoSelection = 'aborted' | 'failed'

View File

@@ -0,0 +1 @@
export type FileSystemResult = 'aborted' | 'success' | 'failed'

View File

@@ -0,0 +1,28 @@
import { StartUploadSessionResponse, MinimalHttpResponse, ClientDisplayableError } from '@standardnotes/responses'
import { FileContent } from '@standardnotes/models'
export interface FilesApiInterface {
startUploadSession(apiToken: string): Promise<StartUploadSessionResponse>
uploadFileBytes(apiToken: string, chunkId: number, encryptedBytes: Uint8Array): Promise<boolean>
closeUploadSession(apiToken: string): Promise<boolean>
downloadFile(
file: { encryptedChunkSizes: FileContent['encryptedChunkSizes'] },
chunkIndex: number,
apiToken: string,
contentRangeStart: number,
onBytesReceived: (bytes: Uint8Array) => Promise<void>,
): Promise<ClientDisplayableError | undefined>
deleteFile(apiToken: string): Promise<MinimalHttpResponse>
createFileValetToken(
remoteIdentifier: string,
operation: 'write' | 'read' | 'delete',
unencryptedFileSize?: number,
): Promise<string | ClientDisplayableError>
getFilesDownloadUrl(): string
}