mirror of
https://github.com/laurent22/joplin.git
synced 2025-04-17 11:26:26 +02:00
72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
const { shim } = require('lib/shim');
|
|
const SyncTargetRegistry = require('lib/SyncTargetRegistry');
|
|
const { reg } = require('lib/registry.js');
|
|
const { _ } = require('lib/locale.js');
|
|
const Setting = require('lib/models/Setting');
|
|
|
|
class Shared {
|
|
constructor(comp, showInfoMessageBox, showErrorMessageBox) {
|
|
this.comp_ = comp;
|
|
|
|
this.dropboxApi_ = null;
|
|
|
|
this.comp_.state = {
|
|
loginUrl: '',
|
|
authCode: '',
|
|
checkingAuthToken: false,
|
|
};
|
|
|
|
this.loginUrl_click = () => {
|
|
if (!this.comp_.state.loginUrl) return;
|
|
shim.openUrl(this.comp_.state.loginUrl);
|
|
};
|
|
|
|
this.authCodeInput_change = event => {
|
|
this.comp_.setState({
|
|
authCode: typeof event === 'object' ? event.target.value : event,
|
|
});
|
|
};
|
|
|
|
this.submit_click = async () => {
|
|
this.comp_.setState({ checkingAuthToken: true });
|
|
|
|
const api = await this.dropboxApi();
|
|
try {
|
|
const response = await api.execAuthToken(this.comp_.state.authCode);
|
|
|
|
Setting.setValue(`sync.${this.syncTargetId()}.auth`, response.access_token);
|
|
api.setAuthToken(response.access_token);
|
|
await showInfoMessageBox(_('The application has been authorised!'));
|
|
this.comp_.props.dispatch({ type: 'NAV_BACK' });
|
|
reg.scheduleSync();
|
|
} catch (error) {
|
|
await showErrorMessageBox(_('Could not authorise application:\n\n%s\n\nPlease try again.', error.message));
|
|
} finally {
|
|
this.comp_.setState({ checkingAuthToken: false });
|
|
}
|
|
};
|
|
}
|
|
|
|
syncTargetId() {
|
|
return SyncTargetRegistry.nameToId('dropbox');
|
|
}
|
|
|
|
async dropboxApi() {
|
|
if (this.dropboxApi_) return this.dropboxApi_;
|
|
|
|
const syncTarget = reg.syncTarget(this.syncTargetId());
|
|
this.dropboxApi_ = await syncTarget.api();
|
|
return this.dropboxApi_;
|
|
}
|
|
|
|
async refreshUrl() {
|
|
const api = await this.dropboxApi();
|
|
|
|
this.comp_.setState({
|
|
loginUrl: api.loginUrl(),
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = Shared;
|