fix: properly update uppy state (#6252)

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
This commit is contained in:
Alexander Onnikov 2024-08-05 11:45:38 +07:00 committed by GitHub
parent 7bf2a7c8d1
commit f95f2b1dda
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 45 deletions

View File

@ -28,44 +28,30 @@
let state: UppyState<any, any> = upload.uppy.getState() let state: UppyState<any, any> = upload.uppy.getState()
let progress: number = state.totalProgress let progress: number = state.totalProgress
$: state = upload.uppy.getState()
$: progress = state.totalProgress
$: files = Object.values(state.files) $: files = Object.values(state.files)
$: filesTotal = files.length $: filesTotal = files.length
$: filesComplete = files.filter((p) => p.progress?.uploadComplete).length $: filesComplete = files.filter((p) => p.progress?.uploadComplete).length
function handleProgress (totalProgress: number): void { function updateState (): void {
progress = totalProgress
}
function handleUploadProgress (): void {
state = upload.uppy.getState()
}
function handleUploadSuccess (): void {
state = upload.uppy.getState()
}
function handleFileRemoved (): void {
state = upload.uppy.getState()
}
function handleError (): void {
state = upload.uppy.getState() state = upload.uppy.getState()
} }
onMount(() => { onMount(() => {
upload.uppy.on('error', handleError) upload.uppy.on('error', updateState)
upload.uppy.on('progress', handleProgress) upload.uppy.on('progress', updateState)
upload.uppy.on('upload-progress', handleUploadProgress) upload.uppy.on('upload-progress', updateState)
upload.uppy.on('upload-success', handleUploadSuccess) upload.uppy.on('upload-success', updateState)
upload.uppy.on('file-removed', handleFileRemoved) upload.uppy.on('file-removed', updateState)
}) })
onDestroy(() => { onDestroy(() => {
upload.uppy.off('error', handleError) upload.uppy.off('error', updateState)
upload.uppy.off('progress', handleProgress) upload.uppy.off('progress', updateState)
upload.uppy.off('upload-progress', handleUploadProgress) upload.uppy.off('upload-progress', updateState)
upload.uppy.off('upload-success', handleUploadSuccess) upload.uppy.off('upload-success', updateState)
upload.uppy.off('file-removed', handleFileRemoved) upload.uppy.off('file-removed', updateState)
}) })
function handleClick (ev: MouseEvent): void { function handleClick (ev: MouseEvent): void {

View File

@ -40,28 +40,21 @@
let state: UppyState<any, any> = upload.uppy.getState() let state: UppyState<any, any> = upload.uppy.getState()
$: state = upload.uppy.getState()
$: files = Object.values(state.files) $: files = Object.values(state.files)
$: capabilities = state.capabilities ?? {} $: capabilities = state.capabilities ?? {}
$: individualCancellation = 'individualCancellation' in capabilities && capabilities.individualCancellation $: individualCancellation = 'individualCancellation' in capabilities && capabilities.individualCancellation
function updateState (): void {
state = upload.uppy.getState()
}
function handleComplete (): void { function handleComplete (): void {
if (upload.uppy.getState().error === undefined) { if (upload.uppy.getState().error === undefined) {
dispatch('close') dispatch('close')
} }
} }
function handleUploadError (): void {
state = upload.uppy.getState()
}
function handleUploadProgress (): void {
state = upload.uppy.getState()
}
function handleUploadSuccess (): void {
state = upload.uppy.getState()
}
function handleFileRemoved (): void { function handleFileRemoved (): void {
state = upload.uppy.getState() state = upload.uppy.getState()
const files = upload.uppy.getFiles() const files = upload.uppy.getFiles()
@ -84,18 +77,18 @@
onMount(() => { onMount(() => {
upload.uppy.on('complete', handleComplete) upload.uppy.on('complete', handleComplete)
upload.uppy.on('upload-error', handleUploadError)
upload.uppy.on('upload-progress', handleUploadProgress)
upload.uppy.on('upload-success', handleUploadSuccess)
upload.uppy.on('file-removed', handleFileRemoved) upload.uppy.on('file-removed', handleFileRemoved)
upload.uppy.on('upload-error', updateState)
upload.uppy.on('upload-progress', updateState)
upload.uppy.on('upload-success', updateState)
}) })
onDestroy(() => { onDestroy(() => {
upload.uppy.off('complete', handleComplete) upload.uppy.off('complete', handleComplete)
upload.uppy.off('upload-error', handleUploadError)
upload.uppy.off('upload-progress', handleUploadProgress)
upload.uppy.off('upload-success', handleUploadSuccess)
upload.uppy.off('file-removed', handleFileRemoved) upload.uppy.off('file-removed', handleFileRemoved)
upload.uppy.off('upload-error', updateState)
upload.uppy.off('upload-progress', updateState)
upload.uppy.off('upload-success', updateState)
}) })
function getFileError (file: UppyFile<any, any>): string | undefined { function getFileError (file: UppyFile<any, any>): string | undefined {