diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-03 08:53:05 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-03 08:53:05 +0100 |
| commit | 5e35c7a69e2a25aa5b793b5135cdf051d1cac101 (patch) | |
| tree | f41696dab03ecdd88e229ac49de4595c0f567b52 /coroutine-utils-testing/src/main | |
| parent | f6eceb406bfff8d36ccac7f7b0d428f148e76a55 (diff) | |
| download | HardenedPass-5e35c7a69e2a25aa5b793b5135cdf051d1cac101.tar.gz HardenedPass-5e35c7a69e2a25aa5b793b5135cdf051d1cac101.zip | |
fix(app): finish an editor save after recreation
A successful save left saving set while the destination committed in
the activity's lifecycleScope. An activity recreated then (theme,
locale, split-screen resize) cancelled that scope: onSaved never ran,
and the surviving ViewModel kept Save disabled and back swallowed.
The ViewModel now keeps the success in a memory-only saved state, set
inside the NonCancellable write so a cancelled caller cannot lose it.
A LaunchedEffect on it runs the commit and onSaved, so a recreated
editor finishes the job; "Save and copy" and the stale-original notice
run once only, and left() clears it before onSaved navigates.
Editing a symlinked entry derived its folder from the canonical path
but its name from the link, saving a new entry next to the target. The
folder is now relative to the non-canonical repository directory; the
save still checks the target is inside the store.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'coroutine-utils-testing/src/main')
0 files changed, 0 insertions, 0 deletions
