Skip to content

Commit

Permalink
fix: load sync.current
Browse files Browse the repository at this point in the history
  • Loading branch information
Gerald committed Mar 12, 2017
1 parent efd3db9 commit 11ce901
Show file tree
Hide file tree
Showing 15 changed files with 241 additions and 21 deletions.
8 changes: 7 additions & 1 deletion .editorconfig
Expand Up @@ -3,4 +3,10 @@ root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
12 changes: 12 additions & 0 deletions src/_locales/cs/messages.yml
Expand Up @@ -412,3 +412,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/de/messages.yml
Expand Up @@ -408,3 +408,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/en/messages.yml
Expand Up @@ -410,3 +410,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: Sync script status
labelSyncDisabled:
description: Label for option to disable sync service.
message: None
labelSyncService:
description: Label for sync service select.
message: 'Sync to'
labelSyncAuthorize:
description: Label for button to authorize a service.
message: Authorize
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: Revoke
12 changes: 12 additions & 0 deletions src/_locales/id/messages.yml
Expand Up @@ -414,3 +414,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/pl/messages.yml
Expand Up @@ -410,3 +410,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/ro/messages.yml
Expand Up @@ -414,3 +414,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/ru/messages.yml
Expand Up @@ -410,3 +410,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/sr/messages.yml
Expand Up @@ -412,3 +412,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/vi/messages.yml
Expand Up @@ -410,3 +410,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: ''
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
12 changes: 12 additions & 0 deletions src/_locales/zh/messages.yml
Expand Up @@ -410,3 +410,15 @@ labelSyncSettings:
labelSyncScriptStatus:
description: Label for option to sync script status.
message: 同步脚本状态
labelSyncDisabled:
description: Label for option to disable sync service.
message: ''
labelSyncService:
description: Label for sync service select.
message: ''
labelSyncAuthorize:
description: Label for button to authorize a service.
message: ''
labelSyncRevoke:
description: Label for button to revoke authorization for a service.
message: ''
43 changes: 26 additions & 17 deletions src/background/sync/base.js
Expand Up @@ -24,27 +24,32 @@ function getURI(name) {

function initConfig() {
function get(key, def) {
return _.object.get(config, key, def);
var keys = _.normalizeKeys(key);
keys.unshift('sync');
return options.get(keys, def);
}
function set(key, value) {
if (key) {
_.object.set(config, key, value);
}
options.set('sync', config);
var keys = _.normalizeKeys(key);
keys.unshift('sync');
options.set(keys, value);
}
var config = options.get('sync');
if (!config || !config.services) {
config = {
services: {},
};
// XXX Migrate from old data
['dropbox', 'onedrive']
.forEach(function (key) {
config.services[key] = options.get(key);
});
set();
function init() {
var sync = options.get('sync');
if (!sync || !sync.services) {
sync = {
services: {},
};

// XXX Migrate from old data
['dropbox', 'onedrive']
.forEach(function (key) {
sync.services[key] = options.get(key);
});

set([], sync);
}
}
console.log(config);
init();
return {get: get, set: set};
}

Expand Down Expand Up @@ -503,6 +508,10 @@ function authenticate() {
service && service.authenticate && service.authenticate();
}

options.hook(function (data) {
('sync.current' in data) && initialize();
});

exports.utils = {
getFilename: getFilename,
isScriptFile: isScriptFile,
Expand Down
2 changes: 1 addition & 1 deletion src/common.js
Expand Up @@ -111,7 +111,7 @@ _.initOptions = function () {
var ready = _.sendMessage({cmd: 'GetAllOptions'})
.then(function (data) {
options = data;
hooks.fire(data);
data && hooks.fire(data);
});

function getOption(key, def) {
Expand Down
12 changes: 10 additions & 2 deletions src/options/views/tab-settings/vm-sync/index.html
Expand Up @@ -2,9 +2,17 @@
<h3>
<span class="feature-text" v-text="i18n('labelSync')"></span>
</h3>
<div class="sync-services mb-2">
<sync-service v-for="service in store.sync" :service="service" @service-checked="onEnableService"></sync-service>
<div>
<span v-text="i18n('labelSyncService')"></span>
<select :value="syncConfig.current" @change="onSyncChange">
<option v-for="service in syncServices" v-text="service.displayName" :value="service.name"></option>
</select>
<button v-text="labelAuthorize" :disabled="!canAuthorize" v-if="service.name"></button>
<button :disabled="!canSync" v-if="service.name">
<svg class="icon"><use xlink:href="#refresh" /></svg>
</button>
</div>
<p class="mt-1" v-text="message"></p>
<h4 v-text="i18n('labelSyncSettings')"></h4>
<div class="mt-1">
<label>
Expand Down
77 changes: 77 additions & 0 deletions src/options/views/tab-settings/vm-sync/index.js
Expand Up @@ -4,16 +4,89 @@ var utils = require('src/options/utils');
var store = utils.store;
var SyncService = require('./service');

var SYNC_CURRENT = 'sync.current';
var syncConfig = {
current: '',
};
_.options.hook(function (data) {
if (SYNC_CURRENT in data) {
syncConfig.current = data[SYNC_CURRENT] || '';
}
});

module.exports = {
template: cache.get('./index.html'),
components: {
SyncService: SyncService,
},
data: function () {
return {
syncConfig: syncConfig,
store: store,
};
},
computed: {
syncServices: function () {
var services = [{
displayName: _.i18n('labelSyncDisabled'),
name: '',
}];
var states = this.store.sync;
if (states && states.length) {
services = services.concat(states);
this.$nextTick(function () {
// Set `current` after options are ready
syncConfig.current = _.options.get(SYNC_CURRENT);
});
}
return services;
},
service: function () {
var current = this.syncConfig.current;
var service = this.syncServices.find(function (item) {
return item.name === current;
});
if (!service) {
console.warn('Invalid current service:', current);
service = this.syncServices[0];
}
return service;
},
message: function () {
var service = this.service;
if (service.authState === 'initializing') return _.i18n('msgSyncInit');
if (service.authState === 'error') return _.i18n('msgSyncInitError');
if (service.syncState === 'error') return _.i18n('msgSyncError');
if (service.syncState === 'ready') return _.i18n('msgSyncReady');
if (service.syncState === 'syncing') {
var progress = '';
if (service.progress && service.progress.total) {
progress = ' (' + service.progress.finished + '/' + service.progress.total + ')';
}
return _.i18n('msgSyncing') + progress;
}
if (service.lastSync) {
var lastSync = new Date(service.lastSync).toLocaleString();
return _.i18n('lastSync', lastSync);
}
},
labelAuthorize: function () {
var service = this.service;
if (service.authState === 'authorizing') return _.i18n('labelSyncAuthorizing');
if (service.authState === 'authorized') return _.i18n('labelSyncRevoke');
if (service.authState === 'error') return _.i18n('labelSyncAuthError');
return _.i18n('labelSyncAuthorize');
},
canAuthorize: function () {
var service = this.service;
return ~['unauthorized', 'error', 'authorized'].indexOf(service.authState)
&& ~['idle', 'error'].indexOf(service.syncState);
},
canSync: function () {
var service = this.service;
return this.canAuthorize && service.authState === 'authorized';
},
},
methods: {
onEnableService: function (name) {
store.sync.forEach(function (service) {
Expand All @@ -27,5 +100,9 @@ module.exports = {
});
_.sendMessage({cmd: 'SyncStart'});
},
onSyncChange: function (e) {
var value = e.target.value;
_.options.set(SYNC_CURRENT, value);
},
},
};

0 comments on commit 11ce901

Please sign in to comment.