mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-14 11:16:53 -04:00
Web: show the brush preset storage banner only while a change is unsaved (#4918)
When the browser denies IndexedDB from the start (a sandboxed iframe without allow-same-origin, blocked site data), the banner "Brush preset changes are not saved: SecurityError … Browser storage is unavailable" stays above the app for the whole session, before any preset was touched and with nothing to dismiss. Show it only while a preset change is unsaved. Nothing is lost before the first change; that change brings the same banner with the reason. Write errors and rejected records keep showing it, as both leave changes unsaved. Co-authored-by: kuvshin888 <[email protected]>
This commit is contained in:
1 parent
523f1f06bc
commit
911881880d
2 files changed
+7
-1
No files matched your search
@@ -337,6 +337,7 @@ mod tests {
|
||||
let b = Bridge::default();
|
||||
b.unavailable("SecurityError".into());
|
||||
let (mut s, _) = session(b.clone());
|
||||
assert!(!b.unsaved(), "nothing is lost before the first change, so the web shell shows no banner");
|
||||
import(&mut s);
|
||||
assert!(s.tools.presets.iter().any(|p| p.name == "Browser seam brush"));
|
||||
assert!(b.unsaved());
|
||||
|
||||
@@ -305,7 +305,12 @@ impl eframe::App for WebShell {
|
||||
}
|
||||
|
||||
fn ui(&mut self, ui: &mut egui::Ui, frame: &mut eframe::Frame) {
|
||||
if let Some(error) = self.presets.error() {
|
||||
// Only while a preset change is unsaved. Storage the browser denies from the start (a
|
||||
// sandboxed iframe, blocked site data) loses nothing until the first change, and that
|
||||
// change brings the banner with the reason.
|
||||
if self.presets.unsaved()
|
||||
&& let Some(error) = self.presets.error()
|
||||
{
|
||||
egui::Panel::top("browser_preset_storage").show(ui, |ui| {
|
||||
let tokens = photocraft_ui_egui::theme::Tokens::for_kind(self.app.ui.theme);
|
||||
// Put retry first so floating brush windows cannot cover the control.
|
||||
|
||||
Reference in new issue
Block a user