Guest User

Untitled

a guest
Dec 14th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. const ChromeStorageOperations = {
  2. // ストレージ操作
  3. get: async function (key) {
  4. // 中身のみ返す
  5. return new Promise(resolve => {
  6. chrome.storage.local.get(key, (result) => {
  7. // undefined or 空配列の場合: undefinedを返す
  8. if(chrome.runtime.lastError || typeof result[key] ==="undefined"
  9. || result[key].length===0){ resolve(); }
  10. else { resolve(result[key]); }
  11. });
  12. });
  13. },
  14. set: async function (key, value) {
  15. // 主に書き換え用
  16. // @param value: str or list
  17. return new Promise(resolve => {
  18. chrome.storage.local.set({[key]: value}, resolve);
  19. });
  20. },
  21. nestAdd: async function (key1, key2, addValue) {
  22. /* 追記を行うには、getとset両方行う必要がある
  23. @param key1: str
  24. @param key2: int
  25. @param addValue: int
  26. {key1: [[value, ..., addValue]]}
  27. */
  28. // 初回
  29. const data = await ChromeStorageOperations.get(key1) || [[]];
  30. try{
  31. // ないものだけ追加
  32. if (!data[key2].includes(addValue)) data[key2].push(addValue);
  33. } catch(e){
  34. // 登録されていない場合
  35. data[key2] = (addValue) ? [addValue] : [];
  36. }
  37. await ChromeStorageOperations.set(key1, data);
  38. return;
  39. }
  40. };
Add Comment
Please, Sign In to add comment