feat: add safe backup management and theme preferences
Add snapshot usage and protected cleanup, preserve unsaved profile edits, avoid holding SQL connections during snapshot deletion, and fix download filenames. Include regression tests and API documentation.
This commit is contained in:
@@ -100,7 +100,7 @@ export function Instances() {
|
||||
</div>
|
||||
</>}
|
||||
</Panel>
|
||||
{selected && <InstanceDetail key={selected.id} instance={instances.data?.find(i => i.id === selected.id) || selected} close={() => setSelected(undefined)} refresh={instances.refresh} />}
|
||||
{selected && <InstanceDetail key={selected.id} instance={instances.data?.find(i => i.id === selected.id) || selected} close={() => setSelected(undefined)} refresh={async () => { await Promise.all([instances.refresh(), usage.refresh()]); }} />}
|
||||
</>;
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ function InstanceDetail({instance, close, refresh}: {instance: Instance; close:
|
||||
</>}
|
||||
</TabsContent>
|
||||
<TabsContent value="backups">
|
||||
<BackupPanel instance={instance} refresh={async () => { await profile.refresh(); setContent(undefined); await refresh(); }} />
|
||||
<BackupPanel instance={instance} refresh={refresh} onRestored={async () => { await profile.refresh(); setContent(undefined); await refresh(); }} />
|
||||
</TabsContent>
|
||||
<TabsContent value="upgrade">
|
||||
<form className="grid max-w-xl gap-4" onSubmit={async e => {
|
||||
|
||||
Reference in New Issue
Block a user