1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-06-12 04:31:35 +02:00

abstract out db into a service

This commit is contained in:
Kushagra Gour
2017-09-20 02:00:38 +05:30
parent 617da3716b
commit fe14a1355c
3 changed files with 44 additions and 32 deletions

View File

@ -628,6 +628,7 @@
<script src="analytics.js"></script> <script src="analytics.js"></script>
<script src="deferred.js"></script> <script src="deferred.js"></script>
<script src="loader.js"></script> <script src="loader.js"></script>
<script src="db.js"></script>
<script src="notifications.js"></script> <script src="notifications.js"></script>
<script src="library-list.js"></script> <script src="library-list.js"></script>
<script src="textarea-autocomplete.js"></script> <script src="textarea-autocomplete.js"></script>

View File

@ -10,7 +10,7 @@ customEditorFontInput, cssSettingsModal, cssSettingsBtn, acssSettingsTextarea,
globalConsoleContainerEl globalConsoleContainerEl
*/ */
/* eslint-disable no-extra-semi */ /* eslint-disable no-extra-semi */
(function(alertsService) { (function(alertsService, db) {
/* eslint-enable no-extra-semi */ /* eslint-enable no-extra-semi */
var scope = scope || {}; var scope = scope || {};
var version = '2.9.0'; var version = '2.9.0';
@ -282,7 +282,7 @@ globalConsoleContainerEl
const d = deferred(); const d = deferred();
var obj = {}; var obj = {};
obj[setting] = value; obj[setting] = value;
chrome.storage.local.set(obj, d.resolve); db.local.set(obj, d.resolve);
return d.promise; return d.promise;
} }
@ -302,13 +302,13 @@ globalConsoleContainerEl
}); });
// Push into the items hash if its a new item being saved // Push into the items hash if its a new item being saved
if (isNewItem) { if (isNewItem) {
chrome.storage.local.get( db.local.get(
{ {
items: {} items: {}
}, },
function(result) { function(result) {
result.items[currentItem.id] = true; result.items[currentItem.id] = true;
chrome.storage.local.set({ db.local.set({
items: result.items items: result.items
}); });
} }
@ -453,7 +453,7 @@ globalConsoleContainerEl
*/ */
function fetchItems(shouldSaveGlobally) { function fetchItems(shouldSaveGlobally) {
var d = deferred(); var d = deferred();
chrome.storage.local.get('items', function(result) { db.local.get('items', function(result) {
var itemIds = Object.getOwnPropertyNames(result.items || {}), var itemIds = Object.getOwnPropertyNames(result.items || {}),
items = []; items = [];
if (!itemIds.length) { if (!itemIds.length) {
@ -464,7 +464,7 @@ globalConsoleContainerEl
trackEvent('fn', 'fetchItems', itemIds.length); trackEvent('fn', 'fetchItems', itemIds.length);
for (let i = 0; i < itemIds.length; i++) { for (let i = 0; i < itemIds.length; i++) {
/* eslint-disable no-loop-func */ /* eslint-disable no-loop-func */
chrome.storage.local.get(itemIds[i], function(itemResult) { db.local.get(itemIds[i], function(itemResult) {
if (shouldSaveGlobally) { if (shouldSaveGlobally) {
savedItems[itemIds[i]] = itemResult[itemIds[i]]; savedItems[itemIds[i]] = itemResult[itemIds[i]];
} }
@ -552,20 +552,20 @@ globalConsoleContainerEl
itemTile.remove(); itemTile.remove();
// Remove from items list // Remove from items list
chrome.storage.local.get( db.local.get(
{ {
items: {} items: {}
}, },
function(result) { function(result) {
delete result.items[itemId]; delete result.items[itemId];
chrome.storage.local.set({ db.local.set({
items: result.items items: result.items
}); });
} }
); );
// Remove individual item too. // Remove individual item too.
chrome.storage.local.remove(itemId, function() { db.local.remove(itemId, function() {
alertsService.add('Item removed.'); alertsService.add('Item removed.');
// This item is open in the editor. Lets open a new one. // This item is open in the editor. Lets open a new one.
if (currentItem.id === itemId) { if (currentItem.id === itemId) {
@ -599,10 +599,8 @@ globalConsoleContainerEl
scope.cm.css.refresh(); scope.cm.css.refresh();
scope.cm.js.refresh(); scope.cm.js.refresh();
scope.acssSettingsCm.setValue(
currentItem.cssSettings ? currentItem.cssSettings.acssConfig : '' // scope.acssSettingsCm.refresh();
);
scope.acssSettingsCm.refresh();
scope.clearConsole(); scope.clearConsole();
@ -970,13 +968,13 @@ globalConsoleContainerEl
contents += contents +=
'<script src="' + '<script src="' +
chrome.extension.getURL('lib/screenlog.js') + utils.getURL('lib/screenlog.js') +
'"></script>'; '"></script>';
if (jsMode === JsModes.ES6) { if (jsMode === JsModes.ES6) {
contents += contents +=
'<script src="' + '<script src="' +
chrome.extension.getURL('lib/babel-polyfill.min.js') + utils.getURL('lib/babel-polyfill.min.js') +
'"></script>'; '"></script>';
} }
@ -1383,13 +1381,13 @@ globalConsoleContainerEl
} }
if (mergedItemCount) { if (mergedItemCount) {
// save new items // save new items
chrome.storage.local.set(toMergeItems, function() { db.local.set(toMergeItems, function() {
alertsService.add( alertsService.add(
mergedItemCount + ' creations imported successfully.' mergedItemCount + ' creations imported successfully.'
); );
}); });
// Push in new item IDs // Push in new item IDs
chrome.storage.local.get( db.local.get(
{ {
items: {} items: {}
}, },
@ -1398,7 +1396,7 @@ globalConsoleContainerEl
for (var id in toMergeItems) { for (var id in toMergeItems) {
result.items[id] = true; result.items[id] = true;
} }
chrome.storage.local.set({ db.local.set({
items: result.items items: result.items
}); });
trackEvent('fn', 'itemsImported', mergedItemCount); trackEvent('fn', 'itemsImported', mergedItemCount);
@ -1644,7 +1642,7 @@ globalConsoleContainerEl
utils.log(settingName, el.type === 'checkbox' ? el.checked : el.value); utils.log(settingName, el.type === 'checkbox' ? el.checked : el.value);
prefs[settingName] = el.type === 'checkbox' ? el.checked : el.value; prefs[settingName] = el.type === 'checkbox' ? el.checked : el.value;
obj[settingName] = prefs[settingName]; obj[settingName] = prefs[settingName];
chrome.storage.sync.set(obj, function() { db.sync.set(obj, function() {
alertsService.add('Setting saved'); alertsService.add('Setting saved');
}); });
trackEvent('ui', 'updatePref-' + settingName, prefs[settingName]); trackEvent('ui', 'updatePref-' + settingName, prefs[settingName]);
@ -1706,10 +1704,10 @@ globalConsoleContainerEl
scope.cm[type].refresh(); scope.cm[type].refresh();
}); });
scope.consoleCm.setOption('theme', $('[data-setting=editorTheme]').value); scope.consoleCm.setOption('theme', $('[data-setting=editorTheme]').value);
scope.acssSettingsCm.setOption( // scope.acssSettingsCm.setOption(
'theme', // 'theme',
$('[data-setting=editorTheme]').value // $('[data-setting=editorTheme]').value
); // );
if (prefs.autoSave) { if (prefs.autoSave) {
if (!autoSaveInterval) { if (!autoSaveInterval) {
autoSaveInterval = setInterval(autoSaveLoop, AUTO_SAVE_INTERVAL); autoSaveInterval = setInterval(autoSaveLoop, AUTO_SAVE_INTERVAL);
@ -1933,7 +1931,7 @@ globalConsoleContainerEl
) { ) {
hasSeenNotifications = true; hasSeenNotifications = true;
notificationsBtn.classList.remove('has-new'); notificationsBtn.classList.remove('has-new');
chrome.storage.sync.set( db.sync.set(
{ {
lastSeenVersion: version lastSeenVersion: version
}, },
@ -2213,7 +2211,7 @@ globalConsoleContainerEl
$('#demo-frame').classList.remove('pointer-none'); $('#demo-frame').classList.remove('pointer-none');
}); });
chrome.storage.local.get( db.local.get(
{ {
layoutMode: 1, layoutMode: 1,
code: '' code: ''
@ -2228,7 +2226,7 @@ globalConsoleContainerEl
); );
// Get synced `preserveLastCode` setting to get back last code (or not). // Get synced `preserveLastCode` setting to get back last code (or not).
chrome.storage.sync.get( db.sync.get(
{ {
preserveLastCode: true, preserveLastCode: true,
replaceNewTab: false, replaceNewTab: false,
@ -2255,7 +2253,7 @@ globalConsoleContainerEl
if (result.preserveLastCode && lastCode) { if (result.preserveLastCode && lastCode) {
unsavedEditCount = 0; unsavedEditCount = 0;
if (lastCode.id) { if (lastCode.id) {
chrome.storage.local.get(lastCode.id, function(itemResult) { db.local.get(lastCode.id, function(itemResult) {
utils.log('Load item ', lastCode.id); utils.log('Load item ', lastCode.id);
currentItem = itemResult[lastCode.id]; currentItem = itemResult[lastCode.id];
refreshEditor(); refreshEditor();
@ -2295,7 +2293,7 @@ globalConsoleContainerEl
); );
// Check for new version notifications // Check for new version notifications
chrome.storage.sync.get( db.sync.get(
{ {
lastSeenVersion: '' lastSeenVersion: ''
}, },
@ -2304,7 +2302,7 @@ globalConsoleContainerEl
if (!result.lastSeenVersion) { if (!result.lastSeenVersion) {
onboardModal.classList.add('is-modal-visible'); onboardModal.classList.add('is-modal-visible');
trackEvent('ui', 'onboardModalSeen'); trackEvent('ui', 'onboardModalSeen');
chrome.storage.sync.set( db.sync.set(
{ {
lastSeenVersion: version lastSeenVersion: version
}, },
@ -2312,7 +2310,7 @@ globalConsoleContainerEl
); );
// set some initial preferences on closing the onboard modal // set some initial preferences on closing the onboard modal
utils.once(document, 'overlaysClosed', function() { utils.once(document, 'overlaysClosed', function() {
chrome.storage.sync.set( db.sync.set(
{ {
replaceNewTab: onboardShowInTabOptionBtn.classList.contains( replaceNewTab: onboardShowInTabOptionBtn.classList.contains(
'selected' 'selected'
@ -2408,4 +2406,4 @@ globalConsoleContainerEl
scope.closeAllOverlays = closeAllOverlays; scope.closeAllOverlays = closeAllOverlays;
init(); init();
})(window.alertsService); })(window.alertsService, window.db);

View File

@ -171,6 +171,18 @@
}); });
} }
function getUrl(path) {
if (chrome && chrome.storage) {
return chrome.extension.getURL(path);
} else{
return location.protocol +'//'+location.host+'/'+path;
}
}
chrome.i18n = chrome.i18n || {
getMessage: (str) => str
}
window.utils = { window.utils = {
semverCompare: semverCompare, semverCompare: semverCompare,
generateRandomId: generateRandomId, generateRandomId: generateRandomId,
@ -178,6 +190,7 @@
addInfiniteLoopProtection: addInfiniteLoopProtection, addInfiniteLoopProtection: addInfiniteLoopProtection,
getHumanDate: getHumanDate, getHumanDate: getHumanDate,
log: log, log: log,
once: once once: once,
getURL: getUrl
}; };
})(); })();