peer-calls/src/client/db/promisify.ts

17 lines
608 B
TypeScript

export async function promisify(request: IDBTransaction): Promise<void>
export async function promisify<T>(request: IDBRequest<T>): Promise<T>
export async function promisify<T>(request: IDBRequest<T> | IDBTransaction) {
if ('oncomplete' in request) {
// this is a transaction
return new Promise<void>((resolve, reject) => {
request.oncomplete = () => resolve()
request.onerror = err => reject(err)
})
}
// this is an IDBRequest
return new Promise<T>((resolve, reject) => {
request.onsuccess = () => resolve(request.result)
request.onerror = err => reject(err)
})
}