You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
1.1 KiB
27 lines
1.1 KiB
export default () => new Promise((resolve, reject) => { |
|
// ServiceWorker is required to synchronize the login state. |
|
// Microsoft Edge 17 does not support getAll according to: |
|
// Catalog of standard and vendor APIs across browsers - Microsoft Edge Development |
|
// https://developer.microsoft.com/en-us/microsoft-edge/platform/catalog/?q=specName%3Aindexeddb |
|
if (!('caches' in self && 'getAll' in IDBObjectStore.prototype)) { |
|
reject(); |
|
return; |
|
} |
|
|
|
const request = indexedDB.open('mastodon'); |
|
|
|
request.onerror = reject; |
|
request.onsuccess = ({ target }) => resolve(target.result); |
|
|
|
request.onupgradeneeded = ({ target }) => { |
|
const accounts = target.result.createObjectStore('accounts', { autoIncrement: true }); |
|
const statuses = target.result.createObjectStore('statuses', { autoIncrement: true }); |
|
|
|
accounts.createIndex('id', 'id', { unique: true }); |
|
accounts.createIndex('moved', 'moved'); |
|
|
|
statuses.createIndex('id', 'id', { unique: true }); |
|
statuses.createIndex('account', 'account'); |
|
statuses.createIndex('reblog', 'reblog'); |
|
}; |
|
});
|
|
|