add ai job queue
This commit is contained in:
@@ -196,6 +196,11 @@ export default function DoomScrollView({ items, videoContext = 'mixed', onClose,
|
||||
const data = await res.json().catch(() => ({}))
|
||||
throw new Error((data as { error?: string }).error ?? 'Extraction failed')
|
||||
}
|
||||
if (res.status === 202) {
|
||||
setExtractError('Queued — check AI Integrations for progress')
|
||||
setTimeout(() => setExtractError(null), 4000)
|
||||
return
|
||||
}
|
||||
const result = await res.json()
|
||||
setExtractedText(result.extractedText || null)
|
||||
setTranslatedText(result.translatedText || null)
|
||||
|
||||
@@ -8,7 +8,7 @@ const TABS = [
|
||||
{ href: '/manage/tags', label: 'Tags' },
|
||||
{ href: '/manage/users', label: 'Users' },
|
||||
{ href: '/manage/scanning', label: 'Scanning' },
|
||||
{ href: '/manage/ai-tagging', label: 'AI Tagging' },
|
||||
{ href: '/manage/ai-tagging', label: 'AI Integrations' },
|
||||
]
|
||||
|
||||
export default function ManageSubNav() {
|
||||
|
||||
@@ -269,6 +269,11 @@ export default function ImageLightbox({ url, name, onClose, onPrev, onNext, item
|
||||
const data = await res.json().catch(() => ({}))
|
||||
throw new Error((data as { error?: string }).error ?? 'Failed to extract text')
|
||||
}
|
||||
if (res.status === 202) {
|
||||
setExtractError('Queued — check AI Integrations for progress')
|
||||
setTimeout(() => setExtractError(null), 4000)
|
||||
return
|
||||
}
|
||||
const result = await res.json()
|
||||
setExtractedText(result.extractedText || null)
|
||||
setEditedExtractedText(result.extractedText || '')
|
||||
@@ -385,8 +390,10 @@ export default function ImageLightbox({ url, name, onClose, onPrev, onNext, item
|
||||
const data = await res.json().catch(() => ({}))
|
||||
throw new Error((data as { error?: string }).error ?? 'Failed to translate')
|
||||
}
|
||||
const result = await res.json()
|
||||
setTranslatedText(result.translatedText || null)
|
||||
if (res.status !== 202) {
|
||||
const result = await res.json()
|
||||
setTranslatedText(result.translatedText || null)
|
||||
}
|
||||
} catch {
|
||||
// ignore
|
||||
} finally {
|
||||
|
||||
@@ -192,6 +192,11 @@ export default function TagSelector({ itemKey, onTagsChanged, refreshKey }: Prop
|
||||
const data = await res.json().catch(() => ({}))
|
||||
throw new Error((data as { error?: string }).error ?? 'Failed to generate description')
|
||||
}
|
||||
if (res.status === 202) {
|
||||
setDescError('Queued — check AI Integrations for progress')
|
||||
setTimeout(() => setDescError(null), 4000)
|
||||
return
|
||||
}
|
||||
const { description } = await res.json()
|
||||
setAiDescription(description)
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user