mirror of
https://github.com/LBRYFoundation/Watch-on-LBRY.git
synced 2025-08-23 17:47:26 +00:00
🥡 Refactor
This commit is contained in:
parent
719ff06caf
commit
7727d04157
1 changed files with 41 additions and 49 deletions
|
@ -91,65 +91,57 @@ export const ytService = (() => {
|
||||||
return rows.slice(1).map((row) => row.substring(0, row.indexOf(',')))
|
return rows.slice(1).map((row) => row.substring(0, row.indexOf(',')))
|
||||||
}
|
}
|
||||||
|
|
||||||
const URLResolverCache = (() =>
|
const URLResolverCache = (() =>
|
||||||
{
|
|
||||||
const openRequest = indexedDB.open("yt-url-resolver-cache")
|
|
||||||
|
|
||||||
if (typeof self.indexedDB !== 'undefined')
|
|
||||||
{
|
{
|
||||||
openRequest.addEventListener('upgradeneeded', () =>
|
const openRequest = self.indexedDB?.open("yt-url-resolver-cache")
|
||||||
{
|
|
||||||
const db = openRequest.result
|
|
||||||
const store = db.createObjectStore("store")
|
|
||||||
store.createIndex("expireAt", "expireAt")
|
|
||||||
})
|
|
||||||
|
|
||||||
// Delete Expired
|
if (openRequest)
|
||||||
openRequest.addEventListener('success', () =>
|
|
||||||
{
|
{
|
||||||
const db = openRequest.result
|
openRequest.addEventListener('upgradeneeded', () => openRequest.result.createObjectStore("store").createIndex("expireAt", "expireAt"))
|
||||||
const transaction = db.transaction("store", "readwrite")
|
|
||||||
const range = IDBKeyRange.upperBound(new Date())
|
|
||||||
|
|
||||||
const expireAtCursorRequest = transaction.objectStore("store").index("expireAt").openCursor(range)
|
// Delete Expired
|
||||||
expireAtCursorRequest.addEventListener('success', () =>
|
openRequest.addEventListener('success', () =>
|
||||||
{
|
{
|
||||||
const expireCursor = expireAtCursorRequest.result
|
const transaction = openRequest.result.transaction("store", "readwrite")
|
||||||
if (!expireCursor) return
|
const range = IDBKeyRange.upperBound(new Date())
|
||||||
expireCursor.delete()
|
|
||||||
expireCursor.continue()
|
const expireAtCursorRequest = transaction.objectStore("store").index("expireAt").openCursor(range)
|
||||||
|
expireAtCursorRequest.addEventListener('success', () =>
|
||||||
|
{
|
||||||
|
const expireCursor = expireAtCursorRequest.result
|
||||||
|
if (!expireCursor) return
|
||||||
|
expireCursor.delete()
|
||||||
|
expireCursor.continue()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
}
|
else console.warn(`IndexedDB not supported`)
|
||||||
else console.warn(`IndexedDB not supported`)
|
|
||||||
|
|
||||||
async function put(url: string | null, id: string) : Promise<void>
|
async function put(url: string | null, id: string): Promise<void>
|
||||||
{
|
|
||||||
return await new Promise((resolve, reject) =>
|
|
||||||
{
|
{
|
||||||
const db = openRequest.result
|
return await new Promise((resolve, reject) =>
|
||||||
if (!db) return resolve()
|
{
|
||||||
const store = db.transaction("store", "readwrite").objectStore("store")
|
const store = openRequest.result.transaction("store", "readwrite").objectStore("store")
|
||||||
const putRequest = store.put({ value: url, expireAt: new Date(Date.now() + 24 * 60 * 60 * 1000) }, id)
|
if (!store) return resolve()
|
||||||
putRequest.addEventListener('success', () => resolve())
|
const request = store.put({ value: url, expireAt: new Date(Date.now() + 24 * 60 * 60 * 1000) }, id)
|
||||||
putRequest.addEventListener('error', () => reject(putRequest.error))
|
request.addEventListener('success', () => resolve())
|
||||||
})
|
request.addEventListener('error', () => reject(request.error))
|
||||||
}
|
})
|
||||||
async function get(id: string): Promise<string | null>
|
}
|
||||||
{
|
async function get(id: string): Promise<string | null>
|
||||||
return (await new Promise((resolve, reject) =>
|
|
||||||
{
|
{
|
||||||
const db = openRequest.result
|
return (await new Promise((resolve, reject) =>
|
||||||
if (!db) return resolve(null)
|
{
|
||||||
const store = db.transaction("store", "readonly").objectStore("store")
|
const store = openRequest.result.transaction("store", "readonly").objectStore("store")
|
||||||
const getRequest = store.get(id)
|
if (!store) return resolve(null)
|
||||||
getRequest.addEventListener('success', () => resolve(getRequest.result))
|
const request = store.get(id)
|
||||||
getRequest.addEventListener('error', () => reject(getRequest.error))
|
request.addEventListener('success', () => resolve(request.result))
|
||||||
}) as any)?.value
|
request.addEventListener('error', () => reject(request.error))
|
||||||
}
|
}) as any)?.value
|
||||||
|
}
|
||||||
|
|
||||||
return { put, get }
|
return { put, get }
|
||||||
})()
|
})()
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue