From a0fef50248e9bab12b1955626cc594d9bddd5884 Mon Sep 17 00:00:00 2001 From: arabcoders Date: Sat, 14 Feb 2026 18:49:52 +0300 Subject: [PATCH] fix: some times adding a link fails with UnboundLocalError --- app/library/downloads/item_adder.py | 1 + ui/app/utils/embedable.ts | 27 ++++++++++++++++++--------- ui/app/utils/index.ts | 8 ++------ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/library/downloads/item_adder.py b/app/library/downloads/item_adder.py index 8cccd30e..7ebdb967 100644 --- a/app/library/downloads/item_adder.py +++ b/app/library/downloads/item_adder.py @@ -85,6 +85,7 @@ async def add( """ _preset: Preset | None = Presets.get_instance().get(item.preset) + logs = [] if item.has_cli(): try: diff --git a/ui/app/utils/embedable.ts b/ui/app/utils/embedable.ts index d406349c..f97f31f2 100644 --- a/ui/app/utils/embedable.ts +++ b/ui/app/utils/embedable.ts @@ -75,22 +75,31 @@ const sources: EmbedSource[] = [ url: "https://drive.google.com/file/d/{id}/preview", regex: /https?:\/\/(?:www\.)?drive\.google\.com\/file\/d\/(?[^/?#&]+)/, }, + { + name: "fbc_sites", + url: "{domain}/e/{id}", + regex: /(?(.+?))\/(?:api\/tokens|f)\/(?fbc_[A-Za-z0-9_-]{22})\/?/, + }, ] const isEmbedable = (url: string): boolean => sources.some(source => source.regex.test(url)) const getEmbedable = (url: string): string | null => { - const source = sources.find(source => source.regex.test(url)) - if (!source) { - return null + for (const source of sources) { + const match = source.regex.exec(url) + if (!match?.groups) { + continue + } + + const replacements: Record = { + ...match.groups, + origin: window.location.origin, + } + + return source.url.replace(/\{(\w+)\}/g, (_, key) => replacements[key] ?? `{${key}}`) } - const match = source.regex.exec(url) - if (!match || !match.groups?.id) { - return null - } - - return source.url.replace(/\{origin\}/g, window.location.origin).replace(/\{id\}/g, match.groups.id) + return null } export { isEmbedable, getEmbedable } diff --git a/ui/app/utils/index.ts b/ui/app/utils/index.ts index dc08e6fa..59d93393 100644 --- a/ui/app/utils/index.ts +++ b/ui/app/utils/index.ts @@ -213,11 +213,7 @@ const encodePath = (item: string): string => { processed = encodeURIComponent(processed) const placeholderRegex = new RegExp(`${_PREFIX.replace(/_/g, '_')}(\\d+)${_SUFFIX.replace(/_/g, '_')}`, 'g') - processed = processed.replace(placeholderRegex, (_match, index: string) => { - return placeholders[parseInt(index)] || '' - }) - - return processed + return processed.replace(placeholderRegex, (_match, index: string) => placeholders[parseInt(index)] || '') }).join('/') } @@ -255,7 +251,7 @@ const request = (url: string, options: RequestInit & { timeout?: number } = {}): if (typeof timeout === 'number' && timeout > 0) { controller = new AbortController() fetchOptions.signal = controller.signal - timer = setTimeout(() => controller!.abort(`Request timed out.`), timeout*1000) + timer = setTimeout(() => controller!.abort(`Request timed out.`), timeout * 1000) } return fetch(url.startsWith('/') ? uri(url) : url, fetchOptions).finally(() => {