Project

General

Profile

« Previous | Next » 

Revision 26e4800d

Added by koszko over 1 year ago

more improvements for abrowser&librewolf

View differences:

common/indexeddb.js
99 99
    return wait_request(transaction.objectStore(store_name).delete(key));
100 100
}
101 101

  
102
async function perform_upgrade(event) {
103
    const opened_db = event.target.result;
104

  
105
    /* When we move to a new database schema, we will add upgrade logic here. */
106
    if (event.oldVersion > 0)
107
	throw "bad db version: " + event.oldVersion;
108

  
109
    let store;
110
    for (const [store_name, key_mode] of stores)
111
	store = opened_db.createObjectStore(store_name, key_mode);
112

  
113
    const ctx = make_context(store.transaction, initial_data.files);
114
    await _save_items(initial_data.resources, initial_data.mappings, ctx);
115

  
116
    return opened_db;
117
}
118

  
102 119
/* Open haketilo database, asynchronously return an IDBDatabase object. */
103
async function get_db()
104
{
120
async function get_db() {
105 121
    if (db)
106 122
	return db;
107 123

  
......
109 125
    const waiter = new Promise((...cbs) => [resolve, reject] = cbs);
110 126

  
111 127
    const request = indexedDB.open("haketilo", version_nr(db_version));
112
    request.onsuccess       = resolve;
128
    request.onsuccess       = ev => resolve(ev.target.result);
113 129
    request.onerror         = ev => reject("db error: " + ev.target.errorCode);
114
    request.onupgradeneeded = resolve;
115

  
116
    const event = await waiter;
117
    const opened_db = event.target.result;
130
    request.onupgradeneeded = ev => perform_upgrade(ev).then(resolve, reject);
118 131

  
119
    if (event instanceof IDBVersionChangeEvent) {
120
	/*
121
	 * When we move to a new database schema, we will add upgrade logic
122
	 * here.
123
	 */
124
	if (event.oldVersion > 0)
125
	    throw "bad db version: " + event.oldVersion;
126

  
127
	let store;
128
	for (const [store_name, key_mode] of stores)
129
	    store = opened_db.createObjectStore(store_name, key_mode);
130

  
131
	const ctx = make_context(store.transaction, initial_data.files);
132
	await _save_items(initial_data.resources, initial_data.mappings, ctx);
133
    }
132
    const opened_db = await waiter;
134 133

  
135 134
    if (db)
136 135
	opened_db.close();

Also available in: Unified diff