Project

General

Profile

Download (1.17 KB) Statistics
| Branch: | Tag: | Revision:

haketilo / common / storage_raw.js @ 6247f163

1
/**
2
 * part of Hachette
3
 * Basic wrappers for storage API functions.
4
 *
5
 * Copyright (C) 2021 Wojtek Kosior
6
 * Redistribution terms are gathered in the `copyright' file.
7
 */
8

    
9
/*
10
 * IMPORTS_START
11
 * IMPORT TYPE_PREFIX
12
 * IMPORT browser
13
 * IMPORT is_chrome
14
 * IMPORTS_END
15
 */
16

    
17
async function get(key)
18
{
19
    /* Fix for fact that Chrome does not use promises here */
20
    const promise = is_chrome ?
21
	  new Promise(resolve => chrome.storage.local.get(key, resolve)) :
22
	  browser.storage.local.get(key);
23

    
24
    return (await promise)[key];
25
}
26

    
27
async function set(key_or_object, value)
28
{
29
    const arg = typeof key_or_object === "object" ?
30
	  key_or_object : {[key_or_object]: value};
31
    return browser.storage.local.set(arg);
32
}
33

    
34
async function set_var(name, value)
35
{
36
    return set(TYPE_PREFIX.VAR + name, value);
37
}
38

    
39
async function get_var(name)
40
{
41
    return get(TYPE_PREFIX.VAR + name);
42
}
43

    
44
const on_changed = browser.storage.onChanged || browser.storage.local.onChanged;
45
const listen = cb => on_changed.addListener(cb);
46
const no_listen = cb => on_changed.removeListener(cb);
47

    
48
const raw_storage = {get, set, get_var, set_var, listen, no_listen};
49

    
50
/*
51
 * EXPORTS_START
52
 * EXPORT raw_storage
53
 * EXPORTS_END
54
 */
(15-15/16)