localforage-setitems.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import localforage from 'localforage';
  2. import { executeCallback, forEachItem } from './utils';
  3. import { setItemsIndexedDB } from './setitems-indexeddb';
  4. import { setItemsWebsql } from './setitems-websql';
  5. export function setItemsGeneric(items, keyFn, valueFn, callback) {
  6. var localforageInstance = this;
  7. var itemPromises = forEachItem(items, keyFn, valueFn, function(key, value) {
  8. return localforageInstance.setItem(key, value);
  9. });
  10. var promise = Promise.all(itemPromises);
  11. executeCallback(promise, callback);
  12. return promise;
  13. }
  14. export function localforageSetItems(items, keyFn, valueFn, callback) {
  15. var localforageInstance = this;
  16. var currentDriver = localforageInstance.driver();
  17. if (currentDriver === localforageInstance.INDEXEDDB) {
  18. return setItemsIndexedDB.call(localforageInstance, items, keyFn, valueFn, callback);
  19. } else if (currentDriver === localforageInstance.WEBSQL) {
  20. return setItemsWebsql.call(localforageInstance, items, keyFn, valueFn, callback);
  21. } else {
  22. return setItemsGeneric.call(localforageInstance, items, keyFn, valueFn, callback);
  23. }
  24. }
  25. export function extendPrototype(localforage) {
  26. var localforagePrototype = Object.getPrototypeOf(localforage);
  27. if (localforagePrototype) {
  28. localforagePrototype.setItems = localforageSetItems;
  29. localforagePrototype.setItems.indexedDB = function(){
  30. return setItemsIndexedDB.apply(this, arguments);
  31. };
  32. localforagePrototype.setItems.websql = function(){
  33. return setItemsWebsql.apply(this, arguments);
  34. };
  35. localforagePrototype.setItems.generic = function(){
  36. return setItemsGeneric.apply(this, arguments);
  37. };
  38. }
  39. }
  40. export var extendPrototypeResult = extendPrototype(localforage);