diff --git a/examples/custom-provider/client/MyCustomProvider.jsx b/examples/custom-provider/client/MyCustomProvider.jsx index 26ff08825..bf08a53d0 100644 --- a/examples/custom-provider/client/MyCustomProvider.jsx +++ b/examples/custom-provider/client/MyCustomProvider.jsx @@ -15,6 +15,7 @@ export default class MyCustomProvider extends UIPlugin { this.type = 'acquirer' this.storage = this.opts.storage || tokenStorage this.files = [] + this.rootFolderId = null this.icon = () => ( @@ -70,10 +71,6 @@ export default class MyCustomProvider extends UIPlugin { this.unmount() } - onFirstRender() { - return this.view.getFolder() - } - render(state) { return this.view.render(state) } diff --git a/packages/@uppy/box/src/Box.tsx b/packages/@uppy/box/src/Box.tsx index d6739c853..898cdda85 100644 --- a/packages/@uppy/box/src/Box.tsx +++ b/packages/@uppy/box/src/Box.tsx @@ -35,6 +35,8 @@ export default class Box extends UIPlugin< files: UppyFile[] + rootFolderId: string | null = null + constructor(uppy: Uppy, opts: BoxOptions) { super(uppy, opts) this.id = this.opts.id || 'Box' @@ -76,7 +78,6 @@ export default class Box extends UIPlugin< this.i18nInit() this.title = this.i18n('pluginNameBox') - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -97,13 +98,6 @@ export default class Box extends UIPlugin< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder(), - ]) - } - render(state: unknown): ComponentChild { return this.view.render(state) } diff --git a/packages/@uppy/core/src/Uppy.ts b/packages/@uppy/core/src/Uppy.ts index a0721c951..ccf59a5e5 100644 --- a/packages/@uppy/core/src/Uppy.ts +++ b/packages/@uppy/core/src/Uppy.ts @@ -92,7 +92,7 @@ export type UnknownProviderPlugin< M extends Meta, B extends Body, > = UnknownPlugin & { - onFirstRender: () => void + rootFolderId: string | null title: string files: UppyFile[] icon: () => h.JSX.Element @@ -129,7 +129,6 @@ export type UnknownSearchProviderPlugin< M extends Meta, B extends Body, > = UnknownPlugin & { - onFirstRender: () => void title: string icon: () => h.JSX.Element provider: CompanionClientSearchProvider diff --git a/packages/@uppy/dropbox/src/Dropbox.tsx b/packages/@uppy/dropbox/src/Dropbox.tsx index 04ca9d33b..6233aeca8 100644 --- a/packages/@uppy/dropbox/src/Dropbox.tsx +++ b/packages/@uppy/dropbox/src/Dropbox.tsx @@ -35,6 +35,8 @@ export default class Dropbox extends UIPlugin< files: UppyFile[] + rootFolderId: string | null = null + constructor(uppy: Uppy, opts: DropboxOptions) { super(uppy, opts) this.id = this.opts.id || 'Dropbox' @@ -77,7 +79,6 @@ export default class Dropbox extends UIPlugin< this.i18nInit() this.title = this.i18n('pluginNameDropbox') - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -98,13 +99,6 @@ export default class Dropbox extends UIPlugin< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder(), - ]) - } - render(state: unknown): ComponentChild { return this.view.render(state) } diff --git a/packages/@uppy/facebook/src/Facebook.tsx b/packages/@uppy/facebook/src/Facebook.tsx index dae8eab25..9fe6c86ab 100644 --- a/packages/@uppy/facebook/src/Facebook.tsx +++ b/packages/@uppy/facebook/src/Facebook.tsx @@ -35,6 +35,8 @@ export default class Facebook extends UIPlugin< files: UppyFile[] + rootFolderId: string | null = null + constructor(uppy: Uppy, opts: FacebookOptions) { super(uppy, opts) this.id = this.opts.id || 'Facebook' @@ -81,7 +83,6 @@ export default class Facebook extends UIPlugin< this.i18nInit() this.title = this.i18n('pluginNameFacebook') - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -101,13 +102,6 @@ export default class Facebook extends UIPlugin< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder(), - ]) - } - render(state: unknown): ComponentChild { const viewOptions: { viewType?: string diff --git a/packages/@uppy/google-drive/src/GoogleDrive.tsx b/packages/@uppy/google-drive/src/GoogleDrive.tsx index 441c05fa2..289940f3e 100644 --- a/packages/@uppy/google-drive/src/GoogleDrive.tsx +++ b/packages/@uppy/google-drive/src/GoogleDrive.tsx @@ -34,6 +34,8 @@ export default class GoogleDrive< files: UppyFile[] + rootFolderId: string | null = 'root' + constructor(uppy: Uppy, opts: GoogleDriveOptions) { super(uppy, opts) this.type = 'acquirer' @@ -96,7 +98,6 @@ export default class GoogleDrive< this.i18nInit() this.title = this.i18n('pluginNameGoogleDrive') - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -117,13 +118,6 @@ export default class GoogleDrive< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder('root'), - ]) - } - render(state: unknown): ComponentChild { return this.view.render(state) } diff --git a/packages/@uppy/instagram/src/Instagram.tsx b/packages/@uppy/instagram/src/Instagram.tsx index 7651dc2e2..284794d6f 100644 --- a/packages/@uppy/instagram/src/Instagram.tsx +++ b/packages/@uppy/instagram/src/Instagram.tsx @@ -35,6 +35,8 @@ export default class Instagram extends UIPlugin< files: UppyFile[] + rootFolderId: string | null = 'recent' + constructor(uppy: Uppy, opts: InstagramOptions) { super(uppy, opts) this.type = 'acquirer' @@ -90,7 +92,6 @@ export default class Instagram extends UIPlugin< supportsRefreshToken: false, }) - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -114,13 +115,6 @@ export default class Instagram extends UIPlugin< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder('recent'), - ]) - } - render(state: unknown): ComponentChild { return this.view.render(state) } diff --git a/packages/@uppy/onedrive/src/OneDrive.tsx b/packages/@uppy/onedrive/src/OneDrive.tsx index 1b329e699..8b7f77a07 100644 --- a/packages/@uppy/onedrive/src/OneDrive.tsx +++ b/packages/@uppy/onedrive/src/OneDrive.tsx @@ -35,6 +35,8 @@ export default class OneDrive extends UIPlugin< files: UppyFile[] + rootFolderId: string | null = null + constructor(uppy: Uppy, opts: OneDriveOptions) { super(uppy, opts) this.type = 'acquirer' @@ -89,7 +91,6 @@ export default class OneDrive extends UIPlugin< this.i18nInit() this.title = this.i18n('pluginNameOneDrive') - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -110,13 +111,6 @@ export default class OneDrive extends UIPlugin< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder(), - ]) - } - render(state: unknown): ComponentChild { return this.view.render(state) } diff --git a/packages/@uppy/provider-views/README.md b/packages/@uppy/provider-views/README.md index 3081d5f13..05abb7a42 100644 --- a/packages/@uppy/provider-views/README.md +++ b/packages/@uppy/provider-views/README.md @@ -24,13 +24,6 @@ class GoogleDrive extends UIPlugin { // snip } - onFirstRender() { - return Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder('root'), - ]) - } - render(state) { return this.view.render(state) } diff --git a/packages/@uppy/provider-views/src/ProviderView/ProviderView.tsx b/packages/@uppy/provider-views/src/ProviderView/ProviderView.tsx index f89ac115b..ccd597eb4 100644 --- a/packages/@uppy/provider-views/src/ProviderView/ProviderView.tsx +++ b/packages/@uppy/provider-views/src/ProviderView/ProviderView.tsx @@ -343,7 +343,7 @@ export default class ProviderView extends View< this.setLoading(true) await this.provider.login({ authFormData, signal }) this.plugin.setPluginState({ authenticated: true }) - this.preFirstRender() + await this.getFolder(this.plugin.rootFolderId || undefined) }) } catch (err) { if (err.name === 'UserFacingApiError') { @@ -552,7 +552,9 @@ export default class ProviderView extends View< const { i18n } = this.plugin.uppy if (!didFirstRender) { - this.preFirstRender() + this.plugin.setPluginState({ didFirstRender: true }) + this.provider.fetchPreAuthToken() + this.getFolder(this.plugin.rootFolderId || undefined) } const targetViewOptions = { ...this.opts, ...viewOptions } diff --git a/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.tsx b/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.tsx index 04576e1f9..0be53e9a7 100644 --- a/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.tsx +++ b/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.tsx @@ -156,14 +156,9 @@ export default class SearchProviderView< state: unknown, viewOptions: Omit, 'provider'> = {}, ) { - const { didFirstRender, isInputMode, searchTerm } = - this.plugin.getPluginState() + const { isInputMode, searchTerm } = this.plugin.getPluginState() const { i18n } = this.plugin.uppy - if (!didFirstRender) { - this.preFirstRender() - } - const targetViewOptions = { ...this.opts, ...viewOptions } const { files, folders, filterInput, loading, currentSelection } = this.plugin.getPluginState() diff --git a/packages/@uppy/provider-views/src/View.ts b/packages/@uppy/provider-views/src/View.ts index 98ea88e1b..38035913b 100644 --- a/packages/@uppy/provider-views/src/View.ts +++ b/packages/@uppy/provider-views/src/View.ts @@ -63,17 +63,11 @@ export default class View< this.isHandlingScroll = false - this.preFirstRender = this.preFirstRender.bind(this) this.handleError = this.handleError.bind(this) this.clearSelection = this.clearSelection.bind(this) this.cancelPicking = this.cancelPicking.bind(this) } - preFirstRender(): void { - this.plugin.setPluginState({ didFirstRender: true }) - this.plugin.onFirstRender() - } - shouldHandleScroll(event: Event): boolean { const { scrollHeight, scrollTop, offsetHeight } = event.target as HTMLElement diff --git a/packages/@uppy/unsplash/src/Unsplash.tsx b/packages/@uppy/unsplash/src/Unsplash.tsx index 77ad158db..c70131bf1 100644 --- a/packages/@uppy/unsplash/src/Unsplash.tsx +++ b/packages/@uppy/unsplash/src/Unsplash.tsx @@ -97,11 +97,6 @@ export default class Unsplash extends UIPlugin< } } - // eslint-disable-next-line class-methods-use-this - async onFirstRender(): Promise { - // do nothing - } - render(state: unknown): ComponentChild { return this.view.render(state) } diff --git a/packages/@uppy/utils/src/CompanionClientProvider.ts b/packages/@uppy/utils/src/CompanionClientProvider.ts index a7f2cba10..e4bd94c8b 100644 --- a/packages/@uppy/utils/src/CompanionClientProvider.ts +++ b/packages/@uppy/utils/src/CompanionClientProvider.ts @@ -23,6 +23,7 @@ export interface CompanionClientProvider { provider: string login(options?: RequestOptions): Promise logout(options?: RequestOptions): Promise + fetchPreAuthToken(): Promise list( directory: string | undefined, options: RequestOptions, diff --git a/packages/@uppy/zoom/src/Zoom.tsx b/packages/@uppy/zoom/src/Zoom.tsx index 9b57c54aa..f19fb80b8 100644 --- a/packages/@uppy/zoom/src/Zoom.tsx +++ b/packages/@uppy/zoom/src/Zoom.tsx @@ -35,6 +35,8 @@ export default class Zoom extends UIPlugin< files: UppyFile[] + rootFolderId: string | null = null + constructor(uppy: Uppy, opts: ZoomOptions) { super(uppy, opts) this.type = 'acquirer' @@ -76,7 +78,6 @@ export default class Zoom extends UIPlugin< this.i18nInit() this.title = this.i18n('pluginNameZoom') - this.onFirstRender = this.onFirstRender.bind(this) this.render = this.render.bind(this) } @@ -96,13 +97,6 @@ export default class Zoom extends UIPlugin< this.unmount() } - async onFirstRender(): Promise { - await Promise.all([ - this.provider.fetchPreAuthToken(), - this.view.getFolder(), - ]) - } - render(state: unknown): ComponentChild { return this.view.render(state) }