Skip to content

Commit

Permalink
Merge pull request #1370 from nextcloud-libraries/fix/make-uploader-g…
Browse files Browse the repository at this point in the history
…lobal

fix: Make the default uploader global
  • Loading branch information
susnux authored Sep 5, 2024
2 parents 114ef0c + ae5537d commit a7a2348
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
21 changes: 10 additions & 11 deletions lib/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,29 @@ import { Uploader } from './uploader'

import UploadPicker from './components/UploadPicker.vue'

export type { Uploader } from './uploader'
export { Status as UploaderStatus } from './uploader'
export { Upload, Status as UploadStatus } from './upload'
export type { IDirectory, Directory } from './utils/fileTree'

let _uploader: Uploader | null = null
export { Upload, Status as UploadStatus } from './upload'
export { Uploader, Status as UploaderStatus } from './uploader'

export type ConflictResolutionResult<T extends File|FileSystemEntry|Node> = {
selected: T[],
renamed: T[],
}
/**
* Get an Uploader instance
* Get the global Uploader instance.
*
* Note: If you need a local uploader you can just create a new instance,
* this global instance will be shared with other apps.
*
* @param isPublic Set to true to use public upload endpoint (by default it is auto detected)
* @param forceRecreate Force a new uploader instance - main purpose is for testing
*/
export function getUploader(isPublic: boolean = isPublicShare(), forceRecreate = false): Uploader {
if (_uploader instanceof Uploader && !forceRecreate) {
return _uploader
if (forceRecreate || window._nc_uploader === undefined) {
window._nc_uploader = new Uploader(isPublic)
}

// Init uploader
_uploader = new Uploader(isPublic)
return _uploader
return window._nc_uploader
}

/**
Expand Down
5 changes: 4 additions & 1 deletion lib/window.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
export {}
import type { Uploader } from './lib/uploader'

// This is for private use only
declare global {
interface Window {
_nc_uploader?: Uploader

OC: Nextcloud.v28.OC & {
appConfig: {
files: {
Expand Down

0 comments on commit a7a2348

Please sign in to comment.