From a6fe89a23164485e6acbe6f39ef96e4b05eeb862 Mon Sep 17 00:00:00 2001 From: Maxim Baz Date: Mon, 23 Apr 2018 11:24:37 +0200 Subject: [PATCH] Add store ID for default store (#17) --- src/background.js | 15 ++++++++------- src/popup/popup.js | 27 ++++++++++++--------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/background.js b/src/background.js index 8a5ae3e..4fbcd23 100644 --- a/src/background.js +++ b/src/background.js @@ -304,7 +304,7 @@ function hostAction(settings, action, params = {}) { */ async function parseFields(settings, login) { var response = await hostAction(settings, "fetch", { - store: login.store.name, + storeId: login.store.id, file: login.login + ".gpg" }); if (response.status != "ok") { @@ -381,13 +381,13 @@ async function receiveMessage(message, sender, sendResponse) { settings.version = response.version; if (settings.stores.length) { // there are user-configured stores present - for (var key in settings.stores) { - if (response.data.storeSettings.hasOwnProperty(key)) { - var fileSettings = JSON.parse(response.data.storeSettings[key]); - if (typeof settings.stores[key].settings !== "object") { - settings.stores[key].settings = {}; + for (var storeId in settings.stores) { + if (response.data.storeSettings.hasOwnProperty(storeId)) { + var fileSettings = JSON.parse(response.data.storeSettings[storeId]); + if (typeof settings.stores[storeId].settings !== "object") { + settings.stores[storeId].settings = {}; } - var storeSettings = settings.stores[key].settings; + var storeSettings = settings.stores[storeId].settings; for (var settingKey in fileSettings) { if (!storeSettings.hasOwnProperty(settingKey)) { storeSettings[settingKey] = fileSettings[settingKey]; @@ -398,6 +398,7 @@ async function receiveMessage(message, sender, sendResponse) { } else { // no user-configured stores, so use the default store settings.stores.default = { + id: "default", name: "default", path: response.data.defaultStore.path, settings: response.data.defaultStore.settings diff --git a/src/popup/popup.js b/src/popup/popup.js index c3c9104..9fb6ead 100644 --- a/src/popup/popup.js +++ b/src/popup/popup.js @@ -16,12 +16,12 @@ chrome.tabs.query({ active: true, currentWindow: true }, async function(tabs) { var settings = response.settings; settings.tab = tabs[0]; settings.host = new URL(settings.tab.url).hostname; - for (var store in settings.stores) { - var when = localStorage.getItem("recent:" + settings.stores[store].path); + for (var storeId in settings.stores) { + var when = localStorage.getItem("recent:" + storeId); if (when) { - settings.stores[store].when = JSON.parse(when); + settings.stores[storeId].when = JSON.parse(when); } else { - settings.stores[store].when = 0; + settings.stores[storeId].when = 0; } } settings.recent = localStorage.getItem("recent"); @@ -102,22 +102,20 @@ async function run(settings) { if (recent) { recent = JSON.parse(recent); } - for (var store in response.files) { - for (var key in response.files[store]) { + for (var storeId in response.files) { + for (var key in response.files[storeId]) { // set login fields var login = { index: index++, - store: settings.stores[store], - login: response.files[store][key].replace(/\.gpg$/i, ""), + store: settings.stores[storeId], + login: response.files[storeId][key].replace(/\.gpg$/i, ""), allowFill: true }; - login.domain = pathToDomain(store + "/" + login.login); + login.domain = pathToDomain(storeId + "/" + login.login); login.inCurrentDomain = settings.host == login.domain || settings.host.endsWith("." + login.domain); login.recent = - settings.recent[ - sha1(settings.host + sha1(login.store.path + sha1(login.login))) - ]; + settings.recent[sha1(settings.host + sha1(login.store.id + sha1(login.login)))]; if (!login.recent) { login.recent = { when: 0, @@ -151,15 +149,14 @@ function saveRecent(settings, login, remove = false) { var ignoreInterval = 60000; // 60 seconds - don't increment counter twice within this window // save store timestamp - localStorage.setItem("recent:" + login.store.path, JSON.stringify(Date.now())); + localStorage.setItem("recent:" + login.store.id, JSON.stringify(Date.now())); // update login usage count & timestamp if (Date.now() > login.recent.when + ignoreInterval) { login.recent.count++; } login.recent.when = Date.now(); - settings.recent[sha1(settings.host + sha1(login.store.path + sha1(login.login)))] = - login.recent; + settings.recent[sha1(settings.host + sha1(login.store.id + sha1(login.login)))] = login.recent; // save to local storage localStorage.setItem("recent", JSON.stringify(settings.recent));