mirror of
https://github.com/LBRYFoundation/Watch-on-LBRY.git
synced 2025-08-23 17:47:26 +00:00
🍘 bug fixes
- lbry-url parser disabled because it was returning empty array and it just works without it - content script wasnt starting to work - background error on content script was being handled wrong - background lbryPathnameFromVideoId wasnt ending well on error
This commit is contained in:
parent
b17f2f4e2e
commit
bb0dc3c4f4
3 changed files with 29 additions and 14 deletions
|
@ -53,6 +53,7 @@ async function put(url: string | null, id: string): Promise<void> {
|
|||
const store = db?.transaction("store", "readwrite").objectStore("store")
|
||||
if (!store) return resolve()
|
||||
const request = store.put({ value: url, expireAt: !url ? new Date(Date.now() + 1 * 60 * 60 * 1000) : new Date(Date.now() + 15 * 24 * 60 * 60 * 1000) }, id)
|
||||
console.log('caching', id, url)
|
||||
request.addEventListener('success', () => resolve())
|
||||
request.addEventListener('error', () => reject(request.error))
|
||||
})
|
||||
|
@ -76,6 +77,7 @@ async function get(id: string): Promise<string | null | undefined> {
|
|||
await clearExpired()
|
||||
return undefined
|
||||
}
|
||||
console.log('cache found', id, response.value)
|
||||
return response.value
|
||||
}
|
||||
|
||||
|
|
|
@ -1,23 +1,34 @@
|
|||
import { parseProtocolUrl } from '../common/lbry-url'
|
||||
import { resolveById, YtIdResolverDescriptor } from '../common/yt/urlResolve'
|
||||
async function resolveYT(descriptor: YtIdResolverDescriptor) {
|
||||
const lbryProtocolUrl: string | null = await resolveById([descriptor]).then(a => a[0])
|
||||
const segments = parseProtocolUrl(lbryProtocolUrl || '', { encode: true })
|
||||
if (segments.length === 0) return
|
||||
return segments.join('/')
|
||||
const lbryProtocolUrl: string | null = (await resolveById([descriptor]).then(a => a[0])) ?? null
|
||||
if (!lbryProtocolUrl) return null
|
||||
return lbryProtocolUrl.replaceAll('#', ':')
|
||||
/* const segments = parseProtocolUrl(lbryProtocolUrl || '', { encode: true })
|
||||
if (segments.length === 0) throw new Error()
|
||||
return segments.join('/') */
|
||||
}
|
||||
|
||||
const onGoingLbryPathnameRequest: Record<string, Promise<string | void>> = {}
|
||||
async function lbryPathnameFromVideoId(videoId: string): Promise<string | void> {
|
||||
const onGoingLbryPathnameRequest: Record<string, Promise<string | null>> = {}
|
||||
async function lbryPathnameFromVideoId(videoId: string): Promise<string | null> {
|
||||
// Don't create a new Promise for same ID until on going one is over.
|
||||
const promise = onGoingLbryPathnameRequest[videoId] ?? (onGoingLbryPathnameRequest[videoId] = resolveYT({ id: videoId, type: 'video' }))
|
||||
await promise
|
||||
delete onGoingLbryPathnameRequest[videoId]
|
||||
return await promise
|
||||
try {
|
||||
const promise = onGoingLbryPathnameRequest[videoId] ?? (onGoingLbryPathnameRequest[videoId] = resolveYT({ id: videoId, type: 'video' }))
|
||||
console.log('lbrypathname request', videoId, await promise)
|
||||
return await promise
|
||||
} catch (error) {
|
||||
throw error
|
||||
}
|
||||
finally {
|
||||
delete onGoingLbryPathnameRequest[videoId]
|
||||
}
|
||||
}
|
||||
|
||||
chrome.runtime.onMessage.addListener(({ videoId }: { videoId: string }, sender, sendResponse) => {
|
||||
lbryPathnameFromVideoId(videoId).then((lbryPathname) => sendResponse(lbryPathname)).catch((err) => sendResponse(err))
|
||||
lbryPathnameFromVideoId(videoId).then((lbryPathname) => sendResponse(lbryPathname)).catch((err) =>
|
||||
{
|
||||
sendResponse('error')
|
||||
console.error(err)
|
||||
})
|
||||
return true
|
||||
})
|
||||
|
||||
|
|
|
@ -80,8 +80,8 @@ async function findVideoElement() {
|
|||
|
||||
// We should get this from background, so the caching works and we don't get errors in the future if yt decides to impliment CORS
|
||||
async function requestLbryPathname(videoId: string) {
|
||||
const response = await new Promise<string | null | Error>((resolve) => chrome.runtime.sendMessage({ videoId }, resolve))
|
||||
if (response instanceof Error) throw response
|
||||
const response = await new Promise<string | null | 'error'>((resolve) => chrome.runtime.sendMessage({ videoId }, resolve))
|
||||
if (response === 'error') throw new Error("Background error.")
|
||||
return response
|
||||
}
|
||||
|
||||
|
@ -177,4 +177,6 @@ async function requestLbryPathname(videoId: string) {
|
|||
}
|
||||
await updater()
|
||||
}
|
||||
|
||||
await onModeChange()
|
||||
})()
|
Loading…
Add table
Reference in a new issue