revert(admin): Knopf zum Neuerzeugen der Vorschaubilder wieder raus
130 Zeilen fuer einen einmaligen Bedarf - die Haelfte davon eine Karte im Admin-Bereich, die sonst dauerhaft dort steht. Die EXIF-Behebung selbst bleibt: Neu hochgeladene Bilder stehen richtig herum. Bestehende Vorschaubilder werden damit nicht mehr nachgezogen. Wer sie gerade ruecken will, laedt die Datei erneut hoch. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4bd9a6ca56
commit
5b3658640e
6 files changed
+7
-166
No files matched your search
@@ -195,60 +195,6 @@ function StorageCleanup() {
|
||||
)
|
||||
}
|
||||
|
||||
/** Vorschaubilder entstehen beim Hochladen von selbst. Dieser Knopf ist für
|
||||
* den Bestand: Bis heute wurde die EXIF-Drehung nicht ausgewertet, hochkant
|
||||
* aufgenommene Fotos liegen als Vorschaubild deshalb quer. */
|
||||
function RebuildThumbnails() {
|
||||
const [running, setRunning] = useState(false)
|
||||
const [result, setResult] = useState<string | null>(null)
|
||||
|
||||
async function run() {
|
||||
setRunning(true)
|
||||
setResult(null)
|
||||
try {
|
||||
const r = await adminApi.rebuildThumbnails()
|
||||
setResult(
|
||||
r.images === 0
|
||||
? 'No images stored yet'
|
||||
: `${r.rebuilt} of ${r.images} previews rebuilt` + (r.failed ? `, ${r.failed} failed` : ''),
|
||||
)
|
||||
} catch {
|
||||
setResult('Rebuild failed')
|
||||
} finally {
|
||||
setRunning(false)
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div style={{
|
||||
display: 'flex', alignItems: 'center', gap: 12, marginBottom: 16,
|
||||
padding: '12px 14px', borderRadius: 10,
|
||||
border: '1px solid var(--color-border)', background: 'var(--color-surface-2)',
|
||||
}}>
|
||||
<div style={{ flex: 1, minWidth: 0 }}>
|
||||
<div style={{ fontSize: 13, fontWeight: 600, color: 'var(--color-text)' }}>
|
||||
Rebuild image previews
|
||||
</div>
|
||||
<div style={{ fontSize: 11, color: 'var(--color-text-muted)', marginTop: 2 }}>
|
||||
{result ?? 'Regenerates every stored preview. Needed once: photos taken in portrait used to end up sideways, because the rotation flag was ignored.'}
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
onClick={run}
|
||||
disabled={running}
|
||||
style={{
|
||||
padding: '7px 16px', borderRadius: 8, flexShrink: 0,
|
||||
border: '1px solid var(--color-border)', background: 'var(--color-surface)',
|
||||
color: 'var(--color-text)', fontSize: 12, fontWeight: 600,
|
||||
cursor: running ? 'default' : 'pointer', opacity: running ? 0.6 : 1,
|
||||
}}
|
||||
>
|
||||
{running ? 'Rebuilding…' : 'Rebuild'}
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default function AuditTab() {
|
||||
const [entries, setEntries] = useState<AuditEntry[]>([])
|
||||
const [total, setTotal] = useState(0)
|
||||
@@ -275,7 +221,6 @@ export default function AuditTab() {
|
||||
<div>
|
||||
<IndexingStatus />
|
||||
<StorageCleanup />
|
||||
<RebuildThumbnails />
|
||||
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 12, marginBottom: 16 }}>
|
||||
<select
|
||||
|
||||
Reference in new issue
Block a user