diff --git a/lib/osf-components/addon/components/file-browser/add-new/component.ts b/lib/osf-components/addon/components/file-browser/add-new/component.ts index 28348eb6b6..5aaaef6ce3 100644 --- a/lib/osf-components/addon/components/file-browser/add-new/component.ts +++ b/lib/osf-components/addon/components/file-browser/add-new/component.ts @@ -46,6 +46,10 @@ export default class FileBrowser extends Component { return this.isWBGoogleDrive; } + get isGoogleAuthorized(): boolean { + return this.googlePickerComponent?.isGFPDisabled || false; + } + @action registerChild(child: GoogleFilePickerWidget) { this.googlePickerComponent = child; // Store the child's instance @@ -55,7 +59,7 @@ export default class FileBrowser extends Component { openGoogleFilePicker(dropdown: any) { dropdown.close(); if (this.googlePickerComponent) { - this.googlePickerComponent.openPicker(); + this.googlePickerComponent.createPicker(); } } } diff --git a/lib/osf-components/addon/components/file-browser/add-new/template.hbs b/lib/osf-components/addon/components/file-browser/add-new/template.hbs index 0503aab30e..a998ad9deb 100644 --- a/lib/osf-components/addon/components/file-browser/add-new/template.hbs +++ b/lib/osf-components/addon/components/file-browser/add-new/template.hbs @@ -40,6 +40,7 @@ data-test-add-google-drive @layout='fake-link' {{on 'click' (fn this.openGoogleFilePicker dropdown)}} + disabled={{this.isGoogleAuthorized}} > {{t 'osf-components.file-browser.add-from-drive'}} diff --git a/lib/osf-components/addon/components/google-file-picker-widget/component.ts b/lib/osf-components/addon/components/google-file-picker-widget/component.ts index 65f3cf95e9..8f104d89dc 100644 --- a/lib/osf-components/addon/components/google-file-picker-widget/component.ts +++ b/lib/osf-components/addon/components/google-file-picker-widget/component.ts @@ -66,6 +66,7 @@ export default class GoogleFilePickerWidget extends Component { @tracked isFolderPicker = false; @tracked openGoogleFilePicker = false; @tracked visible = false; + @tracked isGFPDisabled = true; pickerInited = false; selectFolder: any = undefined; accessToken!: string; @@ -120,6 +121,7 @@ export default class GoogleFilePickerWidget extends Component { authorizedStorageAccount.serializeOauthToken = true; const token = await authorizedStorageAccount.save(); this.accessToken = token.oauthToken; + this.isGFPDisabled = this.accessToken ? false : true; } } @@ -145,14 +147,6 @@ export default class GoogleFilePickerWidget extends Component { } } - @action - openPicker() { - // Logic for opening Google File Picker here - if (this.handleAuthClick) { - this.handleAuthClick(); - } - } - @action registerComponent() { if (this.args.onRegisterChild) { @@ -179,29 +173,15 @@ export default class GoogleFilePickerWidget extends Component { */ async initializePicker() { this.pickerInited = true; - this.maybeEnableButtons(); - } - - /** - * Enables user interaction after all libraries are loaded. - */ - maybeEnableButtons() { - if (this.pickerInited && this.isFolderPicker) { + if (this.isFolderPicker) { this.visible = true; } } - /** - * Sign in the user upon button click. - */ - @action - handleAuthClick() { - this.createPicker(); - } - /** * Create and render a Picker object for searching images. */ + @action createPicker() { const googlePickerView = new window.google.picker.DocsView(window.google.picker.ViewId.DOCS); googlePickerView.setSelectFolderEnabled(true); diff --git a/lib/osf-components/addon/components/google-file-picker-widget/template.hbs b/lib/osf-components/addon/components/google-file-picker-widget/template.hbs index d8652569c2..73113fbb47 100644 --- a/lib/osf-components/addon/components/google-file-picker-widget/template.hbs +++ b/lib/osf-components/addon/components/google-file-picker-widget/template.hbs @@ -16,12 +16,12 @@ local-class='google-file-picker-container {{if this.isMobile 'mobile'}}'
{{/if}} - \ No newline at end of file