mirror of
https://github.com/Eugeny/tabby.git
synced 2025-10-05 14:34:54 +00:00
SFTP folder downloads (#10586)
This commit is contained in:
@@ -10,7 +10,7 @@ export { Theme } from './theme'
|
||||
export { TabContextMenuItemProvider } from './tabContextMenuProvider'
|
||||
export { SelectorOption } from './selector'
|
||||
export { CLIHandler, CLIEvent } from './cli'
|
||||
export { PlatformService, ClipboardContent, MessageBoxResult, MessageBoxOptions, FileDownload, FileUpload, FileTransfer, HTMLFileUpload, FileUploadOptions, DirectoryUpload } from './platform'
|
||||
export { PlatformService, ClipboardContent, MessageBoxResult, MessageBoxOptions, FileDownload, FileUpload, FileTransfer, HTMLFileUpload, FileUploadOptions, DirectoryUpload, DirectoryDownload, PlatformTheme } from './platform'
|
||||
export { MenuItemOptions } from './menu'
|
||||
export { BootstrapData, PluginInfo, BOOTSTRAP_DATA } from './mainProcess'
|
||||
export { HostWindowService } from './hostWindow'
|
||||
|
@@ -22,7 +22,6 @@ export interface MessageBoxResult {
|
||||
|
||||
export abstract class FileTransfer {
|
||||
abstract getName (): string
|
||||
abstract getMode (): number
|
||||
abstract getSize (): number
|
||||
abstract close (): void
|
||||
|
||||
@@ -34,8 +33,16 @@ export abstract class FileTransfer {
|
||||
return this.completedBytes
|
||||
}
|
||||
|
||||
getStatus (): string {
|
||||
return this.status
|
||||
}
|
||||
|
||||
getTotalSize (): number {
|
||||
return this.totalSize
|
||||
}
|
||||
|
||||
isComplete (): boolean {
|
||||
return this.completedBytes >= this.getSize()
|
||||
return this.completed
|
||||
}
|
||||
|
||||
isCancelled (): boolean {
|
||||
@@ -47,6 +54,18 @@ export abstract class FileTransfer {
|
||||
this.close()
|
||||
}
|
||||
|
||||
setStatus (status: string): void {
|
||||
this.status = status
|
||||
}
|
||||
|
||||
setTotalSize (size: number): void {
|
||||
this.totalSize = size
|
||||
}
|
||||
|
||||
setCompleted (completed: boolean): void {
|
||||
this.completed = completed
|
||||
}
|
||||
|
||||
protected increaseProgress (bytes: number): void {
|
||||
if (!bytes) {
|
||||
return
|
||||
@@ -57,16 +76,26 @@ export abstract class FileTransfer {
|
||||
}
|
||||
|
||||
private completedBytes = 0
|
||||
private totalSize = 0
|
||||
private lastChunkStartTime = Date.now()
|
||||
private lastChunkSpeed = 0
|
||||
private cancelled = false
|
||||
private completed = false
|
||||
private status = ''
|
||||
}
|
||||
|
||||
export abstract class FileDownload extends FileTransfer {
|
||||
abstract write (buffer: Uint8Array): Promise<void>
|
||||
}
|
||||
|
||||
export abstract class DirectoryDownload extends FileTransfer {
|
||||
abstract createDirectory (relativePath: string): Promise<void>
|
||||
abstract createFile (relativePath: string, mode: number, size: number): Promise<FileDownload>
|
||||
}
|
||||
|
||||
export abstract class FileUpload extends FileTransfer {
|
||||
abstract getMode (): number
|
||||
|
||||
abstract read (): Promise<Uint8Array>
|
||||
|
||||
async readAll (): Promise<Uint8Array> {
|
||||
@@ -127,6 +156,7 @@ export abstract class PlatformService {
|
||||
abstract saveConfig (content: string): Promise<void>
|
||||
|
||||
abstract startDownload (name: string, mode: number, size: number): Promise<FileDownload|null>
|
||||
abstract startDownloadDirectory (name: string, estimatedSize?: number): Promise<DirectoryDownload|null>
|
||||
abstract startUpload (options?: FileUploadOptions): Promise<FileUpload[]>
|
||||
abstract startUploadDirectory (paths?: string[]): Promise<DirectoryUpload>
|
||||
|
||||
@@ -237,7 +267,7 @@ export abstract class PlatformService {
|
||||
abstract setErrorHandler (handler: (_: any) => void): void
|
||||
abstract popupContextMenu (menu: MenuItemOptions[], event?: MouseEvent): void
|
||||
abstract showMessageBox (options: MessageBoxOptions): Promise<MessageBoxResult>
|
||||
abstract pickDirectory (): Promise<string>
|
||||
abstract pickDirectory (): Promise<string | null>
|
||||
abstract quit (): void
|
||||
}
|
||||
|
||||
|
@@ -5,7 +5,9 @@
|
||||
.icon(*ngIf='isDownload(transfer)') !{require('../icons/download.svg')}
|
||||
.icon(*ngIf='!isDownload(transfer)') !{require('../icons/upload.svg')}
|
||||
.main
|
||||
label.no-wrap([ngbTooltip]='transfer.getName()') {{transfer.getName()}}
|
||||
label.no-wrap([ngbTooltip]='transfer.getName()')
|
||||
| {{transfer.getName()}}
|
||||
span.ms-2.text-muted(*ngIf='transfer.getStatus()') ({{transfer.getStatus()}})
|
||||
ngb-progressbar([type]='transfer.isComplete() ? "success" : transfer.isCancelled() ? "danger" : "info"', [value]='getProgress(transfer)')
|
||||
.metadata
|
||||
.size {{transfer.getSize()|filesize}}
|
||||
|
Reference in New Issue
Block a user