feat: hooked thumbnail generation to buttons
This commit is contained in:
@@ -342,6 +342,8 @@ const App: React.FC = () => {
|
||||
// Fire and forget - the handlers return immediately now
|
||||
window.electronAPI?.posts.rebuildFromFiles();
|
||||
window.electronAPI?.media.rebuildFromFiles();
|
||||
// Also regenerate missing thumbnails after media rebuild
|
||||
window.electronAPI?.media.regenerateMissingThumbnails();
|
||||
}) || (() => {})
|
||||
);
|
||||
|
||||
|
||||
@@ -939,6 +939,35 @@ export const SettingsView: React.FC = () => {
|
||||
Rebuild Links
|
||||
</button>
|
||||
</SettingRow>
|
||||
|
||||
<SettingRow
|
||||
id="regenerate-thumbnails"
|
||||
label="Regenerate Thumbnails"
|
||||
description="Generate missing thumbnails for all images. Useful after importing media externally."
|
||||
>
|
||||
<button
|
||||
className="secondary"
|
||||
onClick={async () => {
|
||||
showToast.loading('Generating thumbnails...');
|
||||
try {
|
||||
const result = await window.electronAPI?.media.regenerateMissingThumbnails();
|
||||
showToast.dismiss();
|
||||
if (result && result.generated > 0) {
|
||||
showToast.success(`Generated ${result.generated} thumbnails`);
|
||||
} else if (result && result.processed === 0) {
|
||||
showToast.success('All thumbnails already exist');
|
||||
} else {
|
||||
showToast.success('Thumbnail generation complete');
|
||||
}
|
||||
} catch {
|
||||
showToast.dismiss();
|
||||
showToast.error('Failed to generate thumbnails');
|
||||
}
|
||||
}}
|
||||
>
|
||||
Generate Thumbnails
|
||||
</button>
|
||||
</SettingRow>
|
||||
</SettingSection>
|
||||
|
||||
<SettingSection
|
||||
|
||||
5
src/renderer/types/electron.d.ts
vendored
5
src/renderer/types/electron.d.ts
vendored
@@ -272,8 +272,13 @@ export interface ElectronAPI {
|
||||
update: (id: string, data: Partial<MediaData>) => Promise<MediaData | null>;
|
||||
delete: (id: string) => Promise<boolean>;
|
||||
get: (id: string) => Promise<MediaData | null>;
|
||||
getUrl: (id: string) => Promise<string | null>;
|
||||
getFilePath: (id: string) => Promise<string | null>;
|
||||
getAll: () => Promise<MediaData[]>;
|
||||
rebuildFromFiles: () => Promise<void>;
|
||||
getThumbnail: (id: string, size?: 'small' | 'medium' | 'large') => Promise<string | null>;
|
||||
regenerateThumbnails: (id: string) => Promise<Record<string, string> | null>;
|
||||
regenerateMissingThumbnails: () => Promise<{ processed: number; generated: number; failed: number }>;
|
||||
};
|
||||
sync: {
|
||||
configure: (config: SyncConfig) => Promise<void>;
|
||||
|
||||
Reference in New Issue
Block a user