apps/files_external/js/gdrive.js
$(document).ready(function() {
var backendId = 'googledrive';
var backendUrl = OC.generateUrl('apps/files_external/ajax/oauth2.php');
function generateUrl($tr) {
// no mapping between client ID and Google 'project', so we always load the same URL
return 'https://console.developers.google.com/';
}
OCA.External.Settings.mountConfig.whenSelectBackend(function($tr, backend, onCompletion) {
if (backend === backendId) {
var backendEl = $tr.find('.backend');
var el = $(document.createElement('a'))
.attr('href', generateUrl($tr))
.attr('target', '_blank')
.attr('title', t('files_external', 'Google Drive App Configuration'))
.addClass('icon-settings svg')
;
el.on('click', function(event) {
var a = $(event.target);
a.attr('href', generateUrl($(this).closest('tr')));
});
el.tooltip({placement: 'top'});
backendEl.append(el);
/**
* ------- OAUTH2 Events ----------
*
* The files_external_{backendId} app's CUSTOM JS should handle the OAuth2 events itself
* instead on relying on the core for the implementation. These two functions
* [1] OCA.External.Settings.OAuth2.getAuthUrl, [2] OCA.External.Settings.OAuth2.verifyCode
* abstract away the details of sending the request to backend for getting the AuthURL or
* verifying the code, mounting the storage config etc
*/
$tr.find('.configuration').on('oauth_step1', function (event, data) {
if (data['backend_id'] !== backendId) {
return; // means the trigger is not for this storage adapter
}
// Redirects the User on success else displays an alert (with error message sent by backend)
OCA.External.Settings.OAuth2.getAuthUrl(backendUrl, data);
});
$tr.find('.configuration').on('oauth_step2', function (event, data) {
if (data['backend_id'] !== backendId || data['code'] === undefined) {
return; // means the trigger is not for this OAuth2 grant
}
OCA.External.Settings.OAuth2.verifyCode(backendUrl, data)
.fail(function (message) {
OC.dialogs.alert(message,
t('files_external', 'Error verifying OAuth2 Code for ' + backendId)
);
});
});
}
});
});