Do not call the callback if the selected auth method can't be retreived#28493
Conversation
|
Backport to stable10 in #28496 |
| var authMechanism = $(tr).find('.selectAuthMechanism').val(); | ||
| callback($(tr), authMechanism, self._allAuthMechanisms[authMechanism]['scheme']); | ||
| if (authMechanism !== undefined) { | ||
| var onCompletion = jQuery.Deferred(); |
There was a problem hiding this comment.
What's the point of this deferred/promise ? usually the purpose of a promise is to be returned and resolved later within a callback. Also it seems to be unused.
There was a problem hiding this comment.
gdrive uses the "onCompletition" callback, so unless we send something it will explode because the variable will be undefined. From my point of view, it was buggy from the beginning.
It's either use a dummy (the current solution) or try to remove these calls and force triggering an event at some point.
I've also tried to remove the callback. It seemed to work, so I don't know what was the reason to put that code in the first place.
I've already spent too much time just for this, so I've went for patching the bug.
There was a problem hiding this comment.
@Hemant-Mann I believe this might be related to your recent changes ?
There was a problem hiding this comment.
@jvillafanez Are you referring to this onCompletion callback?
https://github.com/owncloud/core/blob/master/apps/files_external/js/oauth2.js#L17
@PVince81 I don't think this Issue is related to my recent changes.
Hey @jvillafanez could you please describe the issue in a little more detail
There was a problem hiding this comment.
@jvillafanez I have gone through the whole flow of selecting GDrive (when creating a PR) and was able to successfully authenticate it using OAuth2 so I am not sure what's the error
See this screenshot here
There was a problem hiding this comment.
Delay the https://github.com/owncloud/core/blob/master/apps/files_external/js/oauth2.js#L7 call 5 seconds with a setTimeout, something like:
setTimeout(function(){
console.log('calling method');
OCA.External.Settings.mountConfig.whenSelectAuthMechanism(function($tr, authMechanism, scheme, onCompletion) {
.......
});
}, 5000);
When you select a new mount gdrive mount, the button to grant access to the storage is missing.
This happens in the personal settings page, when several admin mount are presents for the user.
Note that this affects to other storages that are loaded before the files_external's settings js and are forced to use the "mountConfigLoaded" to register the auth mechanism. That delay intends to simulate that, as the call to that method will be done quite late.
As far as I know, the bug might have been there before @Hemant-Mann 's changes.
There was a problem hiding this comment.
ok so if @Hemant-Mann has no strong objection let's just merge this...
There was a problem hiding this comment.
No Objection from my side. This should be good to go
|
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Description
Related Issue
https://github.com/owncloud/files_onedrive/issues/25
Motivation and Context
javscript code crashed and prevented oauth2 storages to be granted access as the button was missing
How Has This Been Tested?
Manually with google drive in master, adding an artificial delay to force the issue happen consistenly
Screenshots (if appropriate):
Types of changes
Checklist:
Backport to stable10 will be needed.