1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-13 10:06:23 +02:00

port merge items code to new db

This commit is contained in:
Kushagra Gour
2018-01-08 01:39:18 +05:30
parent 97097f16c3
commit 71141ec934

View File

@ -1431,10 +1431,56 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
e.preventDefault(); e.preventDefault();
}; };
/**
* Saves the passed items in the database.
* @param {Array} items to be saved in DB
*/
function saveItemsToBeMerged(items) {
var d = deferred();
if (window.IS_EXTENSION) {
// save new items
db.local.set(items, d.resolve);
// Push in new item IDs
db.local.get(
{
items: {}
},
function(result) {
/* eslint-disable guard-for-in */
for (var id in items) {
result.items[id] = true;
}
db.local.set({
items: result.items
});
/* eslint-enable guard-for-in */
}
);
} else {
window.db.getDb().then(remoteDb => {
const batch = remoteDb.batch();
/* eslint-disable guard-for-in */
for (var id in items) {
batch.set(remoteDb.doc(`items/${id}`), items[id]);
batch.update(remoteDb.doc(`users/${window.user.uid}`), {
[`items.${id}`]: true
});
// Set these items on out cached user object too
window.user.items[id] = true;
}
batch.commit().then(d.resolve);
/* eslint-enable guard-for-in */
});
}
return d.promise;
}
function mergeImportedItems(items) { function mergeImportedItems(items) {
var existingItemIds = []; var existingItemIds = [];
var toMergeItems = {}; var toMergeItems = {};
items.forEach(item => { items.forEach(item => {
// We can access `savedItems` here because this gets set when user
// opens the saved creations panel. And import option is available
// inside the saved items panel.
if (savedItems[item.id]) { if (savedItems[item.id]) {
// Item already exists // Item already exists
existingItemIds.push(item.id); existingItemIds.push(item.id);
@ -1458,31 +1504,12 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
} }
} }
if (mergedItemCount) { if (mergedItemCount) {
// save new items saveItemsToBeMerged(toMergeItems).then(() => {
db.local.set(toMergeItems, function() {
alertsService.add( alertsService.add(
mergedItemCount + ' creations imported successfully.' mergedItemCount + ' creations imported successfully.'
); );
});
// Push in new item IDs
db.local.get(
{
items: {}
},
function(result) {
/* eslint-disable guard-for-in */
for (var id in toMergeItems) {
result.items[id] = true;
}
db.local.set({
items: result.items
});
trackEvent('fn', 'itemsImported', mergedItemCount); trackEvent('fn', 'itemsImported', mergedItemCount);
});
/* eslint-enable guard-for-in */
}
);
alertsService.add(mergedItemCount + ' creations imported successfully.');
} }
// FIXME: Move from here // FIXME: Move from here
toggleSavedItemsPane(false); toggleSavedItemsPane(false);
@ -1501,7 +1528,8 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
items = JSON.parse(progressEvent.target.result); items = JSON.parse(progressEvent.target.result);
utils.log(items); utils.log(items);
mergeImportedItems(items); mergeImportedItems(items);
} catch (ex) { } catch (exception) {
utils.log(exception);
alert( alert(
'Oops! Selected file is corrupted. Please select a file that was generated by clicking the "Export" button.' 'Oops! Selected file is corrupted. Please select a file that was generated by clicking the "Export" button.'
); );
@ -2439,22 +2467,8 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal
function() {} function() {}
); );
// set some initial preferences on closing the onboard modal // set some initial preferences on closing the onboard modal
utils.once(document, 'overlaysClosed', function() { // Old onboarding.
db.sync.set( // utils.once(document, 'overlaysClosed', function() {});
{
replaceNewTab: onboardShowInTabOptionBtn.classList.contains(
'selected'
)
},
function() {
trackEvent(
'fn',
'setReplaceNewTabFromOnboard',
onboardShowInTabOptionBtn.classList.contains('selected')
);
}
);
});
} }
if ( if (
!result.lastSeenVersion || !result.lastSeenVersion ||