Ship duration control, hidden previews, job resume, and desktop file purge.
The slider never left this machine, so deploy the generate UI with separate input/output hide toggles, reconnect in-progress jobs after refresh, and delete Comfy input/output files after they are saved to the library.
This commit is contained in:
+15
-4
@@ -49,6 +49,7 @@ export interface PublicFolder {
|
||||
thumbnailDefault: boolean
|
||||
protected: boolean
|
||||
unlocked: boolean
|
||||
clipCount: number
|
||||
}
|
||||
|
||||
interface Catalog {
|
||||
@@ -221,21 +222,26 @@ export function folderUnlocked(event: H3Event, folder: LibraryFolder) {
|
||||
return folderUnlocks(event)[folder.id] === passwordVersion(folder.passwordHash)
|
||||
}
|
||||
|
||||
export function publicFolder(event: H3Event, folder: LibraryFolder): PublicFolder {
|
||||
export function publicFolder(event: H3Event, folder: LibraryFolder, clipCount = 0): PublicFolder {
|
||||
return {
|
||||
id: folder.id,
|
||||
name: folder.name,
|
||||
createdAt: folder.createdAt,
|
||||
thumbnailDefault: folder.thumbnailDefault,
|
||||
protected: Boolean(folder.passwordHash),
|
||||
unlocked: folderUnlocked(event, folder)
|
||||
unlocked: folderUnlocked(event, folder),
|
||||
clipCount
|
||||
}
|
||||
}
|
||||
|
||||
export function publicLibrary(event: H3Event) {
|
||||
const owner = libraryOwnerKey(event)
|
||||
const catalog = readCatalog(owner)
|
||||
const folders = catalog.folders.map(folder => publicFolder(event, folder))
|
||||
const folders = catalog.folders.map(folder => publicFolder(
|
||||
event,
|
||||
folder,
|
||||
catalog.clips.filter(clip => clip.folderId === folder.id).length
|
||||
))
|
||||
const unlockedIds = new Set(folders.filter(folder => folder.unlocked).map(folder => folder.id))
|
||||
return {
|
||||
folders,
|
||||
@@ -253,10 +259,15 @@ export function assertLibraryOwner(event: H3Event) {
|
||||
return { owner, catalog: readCatalog(owner) }
|
||||
}
|
||||
|
||||
export function assertFolderAccess(event: H3Event, folderId: string) {
|
||||
export function assertFolderExists(event: H3Event, folderId: string) {
|
||||
const { owner, catalog } = assertLibraryOwner(event)
|
||||
const folder = catalog.folders.find(item => item.id === folderId)
|
||||
if (!folder) throw createError({ statusCode: 404, statusMessage: 'Folder not found' })
|
||||
return { owner, catalog, folder }
|
||||
}
|
||||
|
||||
export function assertFolderAccess(event: H3Event, folderId: string) {
|
||||
const { owner, catalog, folder } = assertFolderExists(event, folderId)
|
||||
if (!folderUnlocked(event, folder)) {
|
||||
throw createError({ statusCode: 403, statusMessage: 'Folder is locked' })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user