From 884ed10bbab5fc1b3342926a2cb72388592c0ab1 Mon Sep 17 00:00:00 2001 From: codebicycle Date: Mon, 6 Nov 2017 15:09:13 +0200 Subject: [PATCH] Allow users to sync preferences to different profiles Keep settings as we transition to storage.sync. Replace chrome.storage.local with chrome.storage.sync. --- inject.js | 20 +++++++++++++++++--- options.js | 6 +++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/inject.js b/inject.js index 6ae981e..3ef0751 100644 --- a/inject.js +++ b/inject.js @@ -25,7 +25,21 @@ chrome.runtime.sendMessage({}, function(response) { } }; - chrome.storage.local.get(tc.settings, function(storage) { + // Keep settings as we transition to storage.sync. + // Copy settings from chrome.storage.local to chrome.storage.sync + // and clear the contents of chrome.storage.local. + chrome.storage.local.get(null, function(storage){ + function is_empty(obj) { + return Object.keys(obj).length === 0 && obj.constructor === Object + } + + if (!is_empty(storage)) { + chrome.storage.sync.set(storage); + chrome.storage.local.clear(); + } + }); + + chrome.storage.sync.get(tc.settings, function(storage) { tc.settings.speed = Number(storage.speed); tc.settings.resetSpeed = Number(storage.resetSpeed); tc.settings.speedStep = Number(storage.speedStep); @@ -75,7 +89,7 @@ chrome.runtime.sendMessage({}, function(response) { var speed = this.getSpeed(); this.speedIndicator.textContent = speed; tc.settings.speed = speed; - chrome.storage.local.set({'speed': speed}, function() { + chrome.storage.sync.set({'speed': speed}, function() { console.log('Speed setting saved: ' + speed); }); } @@ -392,7 +406,7 @@ chrome.runtime.sendMessage({}, function(response) { v.playbackRate = tc.settings.resetSpeed; } else { tc.settings.resetSpeed = v.playbackRate; - chrome.storage.local.set({'resetSpeed': v.playbackRate}); + chrome.storage.sync.set({'resetSpeed': v.playbackRate}); v.playbackRate = target; } } diff --git a/options.js b/options.js index 66a6b05..b3b5794 100644 --- a/options.js +++ b/options.js @@ -124,7 +124,7 @@ function save_options() { fastKeyCode = isNaN(fastKeyCode) ? tcDefaults.fastKeyCode : fastKeyCode; displayKeyCode = isNaN(displayKeyCode) ? tcDefaults.displayKeyCode : displayKeyCode; - chrome.storage.local.set({ + chrome.storage.sync.set({ speedStep: speedStep, rewindTime: rewindTime, advanceTime: advanceTime, @@ -151,7 +151,7 @@ function save_options() { // Restores options from chrome.storage function restore_options() { - chrome.storage.local.get(tcDefaults, function(storage) { + chrome.storage.sync.get(tcDefaults, function(storage) { document.getElementById('speedStep').value = storage.speedStep.toFixed(2); document.getElementById('rewindTime').value = storage.rewindTime; document.getElementById('advanceTime').value = storage.advanceTime; @@ -170,7 +170,7 @@ function restore_options() { } function restore_defaults() { - chrome.storage.local.set(tcDefaults, function() { + chrome.storage.sync.set(tcDefaults, function() { restore_options(); // Update status to let user know options were saved. var status = document.getElementById('status');