Skip to content

Commit e1828e7

Browse files
committed
refactor: switch back to upstream uppy
1 parent 26460ea commit e1828e7

16 files changed

Lines changed: 331 additions & 333 deletions

File tree

package.json

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,6 @@
9696
"node": "22.12.0"
9797
},
9898
"pnpm": {
99-
"overrides": {
100-
"@uppy/companion-client": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-companion-client.tgz",
101-
"@uppy/core": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-core.tgz",
102-
"@uppy/dashboard": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-dashboard.tgz",
103-
"@uppy/drop-target": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-drop-target.tgz",
104-
"@uppy/google-drive": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-google-drive.tgz",
105-
"@uppy/informer": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-informer.tgz",
106-
"@uppy/onedrive": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-onedrive.tgz",
107-
"@uppy/provider-views": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-provider-views.tgz",
108-
"@uppy/status-bar": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-status-bar.tgz",
109-
"@uppy/store-default": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-store-default.tgz",
110-
"@uppy/thumbnail-generator": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-thumbnail-generator.tgz",
111-
"@uppy/tus": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-tus.tgz",
112-
"@uppy/utils": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-utils.tgz",
113-
"@uppy/webdav": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-webdav.tgz",
114-
"@uppy/xhr-upload": "https://github.com/owncloud/uppy/releases/download/v3.12.13-owncloud/uppy-xhr-upload.tgz"
115-
},
11699
"packageExtensions": {
117100
"@toast-ui/editor": {
118101
"dependencies": {

packages/web-app-files/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"@ownclouders/design-system": "workspace:^",
1212
"@ownclouders/web-client": "workspace:*",
1313
"@ownclouders/web-pkg": "workspace:*",
14-
"@uppy/core": "^3.3.0 || ^4.0.0",
14+
"@uppy/core": "4.3.1",
1515
"@vueuse/core": "^11.0.0 || ^12.0.0",
1616
"axios": "1.7.9",
1717
"email-validator": "^2.0.4",

packages/web-app-files/src/HandleUpload.ts

Lines changed: 33 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Uppy, { BasePlugin, UppyFile } from '@uppy/core'
1+
import Uppy, { BasePlugin } from '@uppy/core'
22
import { basename, dirname, join } from 'path'
33
import { v4 as uuidV4 } from 'uuid'
44
import { Language } from 'vue3-gettext'
@@ -13,11 +13,15 @@ import {
1313
SpacesStore,
1414
UserStore,
1515
locationPublicLink,
16-
formatFileSize
16+
formatFileSize,
17+
OcUppyFile,
18+
OcUppyMeta,
19+
OcUppyBody
1720
} from '@ownclouders/web-pkg'
18-
import { locationSpacesGeneric, UppyService, UppyResource } from '@ownclouders/web-pkg'
21+
import { locationSpacesGeneric, UppyService } from '@ownclouders/web-pkg'
1922
import { isPersonalSpaceResource, isShareSpaceResource } from '@ownclouders/web-client'
2023
import { ClientService, queryItemAsString } from '@ownclouders/web-pkg'
24+
import { PluginOpts } from '@uppy/core/lib/BasePlugin'
2125

2226
export interface HandleUploadOptions {
2327
clientService: ClientService
@@ -44,7 +48,7 @@ export interface HandleUploadOptions {
4448
* 4. create directory tree if needed
4549
* 5. start upload
4650
*/
47-
export class HandleUpload extends BasePlugin {
51+
export class HandleUpload extends BasePlugin<PluginOpts, OcUppyMeta, OcUppyBody> {
4852
clientService: ClientService
4953
language: Language
5054
route: Ref<RouteLocationNormalizedLoaded>
@@ -58,7 +62,7 @@ export class HandleUpload extends BasePlugin {
5862
directoryTreeCreateEnabled: boolean
5963
conflictHandlingEnabled: boolean
6064

61-
constructor(uppy: Uppy, opts: HandleUploadOptions) {
65+
constructor(uppy: Uppy<OcUppyMeta, OcUppyBody>, opts: HandleUploadOptions) {
6266
super(uppy, opts)
6367
this.id = opts.id || 'HandleUpload'
6468
this.type = 'modifier'
@@ -81,7 +85,7 @@ export class HandleUpload extends BasePlugin {
8185
this.handleUpload = this.handleUpload.bind(this)
8286
}
8387

84-
removeFilesFromUpload(filesToUpload: UppyResource[]) {
88+
removeFilesFromUpload(filesToUpload: OcUppyFile[]) {
8589
for (const file of filesToUpload) {
8690
this.uppy.removeFile(file.id)
8791
}
@@ -104,8 +108,8 @@ export class HandleUpload extends BasePlugin {
104108
/**
105109
* Converts the input files type UppyResources and updates the uppy upload queue
106110
*/
107-
prepareFiles(files: UppyFile[], uploadFolder: Resource): UppyResource[] {
108-
const filesToUpload: Record<string, UppyResource> = {}
111+
prepareFiles(files: OcUppyFile[], uploadFolder: Resource): OcUppyFile[] {
112+
const filesToUpload: Record<string, OcUppyFile> = {}
109113

110114
if (!this.resourcesStore.currentFolder && unref(this.route)?.params?.token) {
111115
// public file drop
@@ -127,7 +131,7 @@ export class HandleUpload extends BasePlugin {
127131
uploadId: uuidV4()
128132
}
129133

130-
filesToUpload[file.id] = file as unknown as UppyResource
134+
filesToUpload[file.id] = file
131135
}
132136
this.uppy.setState({ files: { ...this.uppy.getState().files, ...filesToUpload } })
133137
return Object.values(filesToUpload)
@@ -138,7 +142,7 @@ export class HandleUpload extends BasePlugin {
138142
const topLevelFolderIds: Record<string, string> = {}
139143

140144
for (const file of files) {
141-
const relativeFilePath = (file.meta.relativePath || file.meta.webkitRelativePath) as string
145+
const relativeFilePath = file.meta.relativePath
142146
// Directory without filename
143147
const directory =
144148
!relativeFilePath || dirname(relativeFilePath) === '.' ? '' : dirname(relativeFilePath)
@@ -166,7 +170,7 @@ export class HandleUpload extends BasePlugin {
166170
...file.meta,
167171
// file data
168172
name: file.name,
169-
mtime: file.data.lastModified / 1000,
173+
mtime: (file.data as File).lastModified / 1000,
170174
// current path & space
171175
spaceId: unref(this.space).id,
172176
spaceName: unref(this.space).name,
@@ -186,27 +190,25 @@ export class HandleUpload extends BasePlugin {
186190
routeShareId: queryItemAsString(query?.shareId) || ''
187191
}
188192

189-
filesToUpload[file.id] = file as unknown as UppyResource
193+
filesToUpload[file.id] = file
190194
}
191195

192196
this.uppy.setState({ files: { ...this.uppy.getState().files, ...filesToUpload } })
193197
return Object.values(filesToUpload)
194198
}
195199

196-
checkQuotaExceeded(filesToUpload: UppyResource[]): boolean {
200+
checkQuotaExceeded(filesToUpload: OcUppyFile[]): boolean {
197201
let quotaExceeded = false
198202

199-
const uploadSizeSpaceMapping = filesToUpload.reduce((acc, uppyResource) => {
203+
const uploadSizeSpaceMapping = filesToUpload.reduce((acc, uppyFile) => {
200204
let targetUploadSpace: SpaceResource
201205

202-
if (uppyResource.meta.routeName === locationPublicLink.name) {
206+
if (uppyFile.meta.routeName === locationPublicLink.name) {
203207
return acc
204208
}
205209

206-
if (uppyResource.meta.routeName === locationSpacesGeneric.name) {
207-
targetUploadSpace = this.spacesStore.spaces.find(
208-
({ id }) => id === uppyResource.meta.spaceId
209-
)
210+
if (uppyFile.meta.routeName === locationSpacesGeneric.name) {
211+
targetUploadSpace = this.spacesStore.spaces.find(({ id }) => id === uppyFile.meta.spaceId)
210212
}
211213

212214
if (
@@ -219,7 +221,7 @@ export class HandleUpload extends BasePlugin {
219221
}
220222

221223
const existingFile = this.resourcesStore.resources.find(
222-
(c) => !uppyResource.meta.relativeFolder && c.name === uppyResource.name
224+
(c) => !uppyFile.meta.relativeFolder && c.name === uppyFile.name
223225
)
224226
const existingFileSize = existingFile ? Number(existingFile.size) : 0
225227

@@ -230,12 +232,12 @@ export class HandleUpload extends BasePlugin {
230232
if (!matchingMappingRecord) {
231233
acc.push({
232234
space: targetUploadSpace,
233-
uploadSize: uppyResource.data.size - existingFileSize
235+
uploadSize: uppyFile.data.size - existingFileSize
234236
})
235237
return acc
236238
}
237239

238-
matchingMappingRecord.uploadSize = uppyResource.data.size - existingFileSize
240+
matchingMappingRecord.uploadSize = uppyFile.data.size - existingFileSize
239241

240242
return acc
241243
}, [])
@@ -274,9 +276,9 @@ export class HandleUpload extends BasePlugin {
274276
* Creates the directory tree and removes files of failed directories from the upload queue.
275277
*/
276278
async createDirectoryTree(
277-
filesToUpload: UppyResource[],
279+
filesToUpload: OcUppyFile[],
278280
uploadFolder: Resource
279-
): Promise<UppyResource[]> {
281+
): Promise<OcUppyFile[]> {
280282
const { webdav } = this.clientService
281283
const space = unref(this.space)
282284
const { id: currentFolderId, path: currentFolderPath } = uploadFolder
@@ -307,7 +309,7 @@ export class HandleUpload extends BasePlugin {
307309
const uploadId = !isRoot ? uuidV4() : topLevelIds[path]
308310
const relativeFolder = dirname(path) === '/' ? '' : dirname(path)
309311

310-
const uppyResource = {
312+
const uppyFile = {
311313
id: uuidV4(),
312314
name: basename(path),
313315
isFolder: true,
@@ -332,22 +334,22 @@ export class HandleUpload extends BasePlugin {
332334
return
333335
}
334336

335-
this.uppyService.publish('addedForUpload', [uppyResource])
337+
this.uppyService.publish('addedForUpload', [uppyFile])
336338

337339
try {
338340
const folder = await webdav.createFolder(space, {
339341
path: urlJoin(currentFolderPath, path),
340342
fetchFolder: isRoot
341343
})
342344
this.uppyService.publish('uploadSuccess', {
343-
...uppyResource,
344-
meta: { ...uppyResource.meta, fileId: folder?.fileId }
345+
...uppyFile,
346+
meta: { ...uppyFile.meta, fileId: folder?.fileId }
345347
})
346348
} catch (error) {
347349
if (error.statusCode !== 405) {
348350
console.error(error)
349351
failedFolders.push(path)
350-
this.uppyService.publish('uploadError', { file: uppyResource, error })
352+
this.uppyService.publish('uploadError', { file: uppyFile, error })
351353
}
352354
}
353355
}
@@ -380,7 +382,7 @@ export class HandleUpload extends BasePlugin {
380382
* The handler that prepares all files to be uploaded and goes through all necessary steps.
381383
* Eventually triggers to upload in Uppy.
382384
*/
383-
async handleUpload(files: UppyFile[]) {
385+
async handleUpload(files: OcUppyFile[]) {
384386
if (!files.length) {
385387
return
386388
}
@@ -415,7 +417,7 @@ export class HandleUpload extends BasePlugin {
415417
}
416418

417419
filesToUpload = result
418-
const conflictMap = result.reduce<Record<string, UppyResource>>((acc, file) => {
420+
const conflictMap = result.reduce<Record<string, OcUppyFile>>((acc, file) => {
419421
acc[file.id] = file
420422
return acc
421423
}, {})

packages/web-app-files/src/components/AppBar/CreateAndUpload.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ import {
191191
useFileActionsCreateNewShortcut,
192192
useMessages,
193193
useResourcesStore,
194+
useRoute,
194195
useSharesStore,
195196
useSpacesStore,
196197
useUserStore
@@ -225,7 +226,6 @@ import {
225226
} from '@ownclouders/web-client'
226227
import { useService, useUpload, UppyService, UploadResult } from '@ownclouders/web-pkg'
227228
import { HandleUpload } from '../../HandleUpload'
228-
import { useRoute } from 'vue-router'
229229
import { useGettext } from 'vue3-gettext'
230230
import { useExtensionRegistry } from '@ownclouders/web-pkg'
231231
import { Action, ResourceIcon } from '@ownclouders/web-pkg'

packages/web-app-files/src/helpers/resource/actions/upload.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import { Resource } from '@ownclouders/web-client'
33
import { extractExtensionFromFile } from '@ownclouders/web-client'
44
import {
55
ConflictDialog,
6+
OcUppyFile,
67
ResolveConflict,
78
resolveFileNameDuplicate,
89
ResolveStrategy,
910
ResourceConflictModal,
1011
ResourcesStore,
11-
UppyResource,
1212
useModals
1313
} from '@ownclouders/web-pkg'
1414

@@ -59,7 +59,7 @@ export class UploadResourceConflict extends ConflictDialog {
5959
})
6060
}
6161

62-
getConflicts(files: UppyResource[]): ConflictedResource[] {
62+
getConflicts(files: OcUppyFile[]): ConflictedResource[] {
6363
const conflicts: ConflictedResource[] = []
6464
for (const file of files) {
6565
const relativeFilePath = file.meta.relativePath
@@ -87,9 +87,9 @@ export class UploadResourceConflict extends ConflictDialog {
8787
}
8888

8989
async displayOverwriteDialog(
90-
files: UppyResource[],
90+
files: OcUppyFile[],
9191
conflicts: ConflictedResource[]
92-
): Promise<UppyResource[]> {
92+
): Promise<OcUppyFile[]> {
9393
let fileCount = 0
9494
let folderCount = 0
9595
const resolvedFileConflicts: { name: string; strategy: ResolveStrategy }[] = []

0 commit comments

Comments
 (0)