perf(web): refresh the storage descriptor once per import batch
`useImportClientConfig` applies every addition and conflict sequentially, so wrapping its per-entry `onAddServer`/`onUpdateServer` in `refreshingPersist` issued one `/api/config` per imported server. On an encrypted file store each of those authenticates the whole file with a scrypt derivation (N=16384), so a 20-server import paid 20 serialized KDFs and round trips for a descriptor that cannot change more than once. Refresh on close instead: the modal must be dismissed before the settings footer that reads the descriptor can be reached, and closing also covers a partially-failed batch. `ServerImportJsonModal` is left wrapped — it adds a single server, so its one refresh is already once per batch. Closes #1950 (review round 26) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JTHVxSu8AUgHRLvo1ntZ8H Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
1202bd8663
commit
e5c254dbea
1 changed files with 14 additions and 6 deletions
|
|
@ -4612,13 +4612,21 @@ function App() {
|
|||
<ServerImportConfigModal
|
||||
opened={importConfigOpen}
|
||||
existingIds={existingIds}
|
||||
onClose={() => setImportConfigOpen(false)}
|
||||
// Refreshed once per import batch, not per entry. `useImportClientConfig`
|
||||
// applies every addition and conflict sequentially, and on an encrypted
|
||||
// file store each `/api/config` authenticates the whole file with a
|
||||
// scrypt derivation — so wrapping the per-entry callbacks made a
|
||||
// 20-server import pay 20 serialized KDFs and round trips. Closing is
|
||||
// the batch boundary: the modal must be dismissed before the settings
|
||||
// footer that reads this descriptor can be reached, and closing also
|
||||
// covers a partially-failed batch (#1950 review r26).
|
||||
onClose={() => {
|
||||
setImportConfigOpen(false);
|
||||
refreshInitialConfig();
|
||||
}}
|
||||
onFetchSource={importSource}
|
||||
onAddServer={refreshingPersist(
|
||||
addServerHighlighted,
|
||||
refreshInitialConfig,
|
||||
)}
|
||||
onUpdateServer={refreshingPersist(updateServer, refreshInitialConfig)}
|
||||
onAddServer={addServerHighlighted}
|
||||
onUpdateServer={updateServer}
|
||||
/>
|
||||
<ServerImportJsonModal
|
||||
opened={importJsonOpen}
|
||||
|
|
|
|||
Loading…
Reference in a new issue