mirror of
https://github.com/chinchang/web-maker.git
synced 2025-07-29 17:50:09 +02:00
itemservice: make fetch methods support for remote and local fetching
This commit is contained in:
@@ -473,47 +473,20 @@ export default class App extends Component {
|
||||
* @return {promise} Promise.
|
||||
*/
|
||||
async fetchItems(shouldSaveGlobally, shouldFetchLocally) {
|
||||
var d = deferred();
|
||||
// HACK: This empty assignment is being used when importing locally saved items
|
||||
// to cloud, `fetchItems` runs once on account login which clears the
|
||||
// savedItems object and hence, while merging no saved item matches with itself.
|
||||
this.state.savedItems = {};
|
||||
var items = [];
|
||||
if (window.user && !shouldFetchLocally) {
|
||||
items = await itemService.getAllItems();
|
||||
log('got items');
|
||||
if (shouldSaveGlobally) {
|
||||
items.forEach(item => {
|
||||
this.state.savedItems[item.id] = item;
|
||||
});
|
||||
}
|
||||
d.resolve(items);
|
||||
return d.promise;
|
||||
|
||||
items = await itemService.getAllItems(shouldFetchLocally);
|
||||
trackEvent('fn', 'fetchItems', items.length);
|
||||
if (shouldSaveGlobally) {
|
||||
items.forEach(item => {
|
||||
this.state.savedItems[item.id] = item;
|
||||
});
|
||||
}
|
||||
db.local.get('items', result => {
|
||||
var itemIds = Object.getOwnPropertyNames(result.items || {});
|
||||
if (!itemIds.length) {
|
||||
d.resolve([]);
|
||||
}
|
||||
|
||||
trackEvent('fn', 'fetchItems', itemIds.length);
|
||||
for (let i = 0; i < itemIds.length; i++) {
|
||||
/* eslint-disable no-loop-func */
|
||||
db.local.get(itemIds[i], itemResult => {
|
||||
if (shouldSaveGlobally) {
|
||||
this.state.savedItems[itemIds[i]] = itemResult[itemIds[i]];
|
||||
}
|
||||
items.push(itemResult[itemIds[i]]);
|
||||
// Check if we have all items now.
|
||||
if (itemIds.length === items.length) {
|
||||
d.resolve(items);
|
||||
}
|
||||
});
|
||||
|
||||
/* eslint-enable no-loop-func */
|
||||
}
|
||||
});
|
||||
return d.promise;
|
||||
return items;
|
||||
}
|
||||
|
||||
openSavedItemsPane() {
|
||||
|
Reference in New Issue
Block a user