Remove unused recycle bin and add optional local file delete (#26)

Soft-delete restore/purge/list and the recycle_purge job are gone.
Admin delete now removes library index rows, with an optional
delete_files query that also deletes local media + sidecar NFO.
UI copy is renamed from 移入回收站 to 删除, with a confirm checkbox.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: truewhile <truewhile@users.noreply.github.com>
This commit is contained in:
truewhile
2026-09-03 14:12:52 +08:00
committed by GitHub
parent 205c71b0ad
commit a79bbb80a8
28 changed files with 362 additions and 338 deletions
+4 -4
View File
@@ -10,7 +10,7 @@ type LibraryMovieActionsProps = {
onManualScrape: (media: Media) => void
onProbe: (media: Media) => void
onNFO: (media: Media) => void
onSoftDelete: (media: Media) => void
onDelete: (media: Media) => void
}
export function LibraryMovieActions({
@@ -20,11 +20,11 @@ export function LibraryMovieActions({
onManualScrape,
onProbe,
onNFO,
onSoftDelete,
onDelete,
}: LibraryMovieActionsProps) {
const buttonClass = 'flex h-8 w-8 items-center justify-center rounded-lg border border-white/70 bg-white/90 text-gray-700 shadow-sm backdrop-blur transition hover:bg-brand-50 hover:text-brand-600 disabled:opacity-50'
// 远程 Emby 条目为只读视图:刮削/探测/NFO/回收站不适用。
// 远程 Emby 条目为只读视图:刮削/探测/NFO/删除不适用。
if (isRemoteEmbyID(media.id)) {
return null
}
@@ -43,7 +43,7 @@ export function LibraryMovieActions({
<button title="写出本地 NFO" disabled={busy} onClick={() => onNFO(media)} className={buttonClass}>
<FileText size={13} />
</button>
<button title="移入回收站" disabled={busy} onClick={() => onSoftDelete(media)} className={`${buttonClass} hover:!bg-red-50 hover:!text-red-500`}>
<button title="删除" disabled={busy} onClick={() => onDelete(media)} className={`${buttonClass} hover:!bg-red-50 hover:!text-red-500`}>
<Trash2 size={13} />
</button>
</>