Delete saved card states

This commit is contained in:
micialware committed 2026-09-09 12:35:00 +03:00
1 parent 7715aaff3b
commit 28730c0fda
1 file changed
+32 -2
+32 -2
View File
@@ -9,6 +9,7 @@ use crate::pages::repetition_settings::RepetitionSettingsMessage::*;
use crate::styling::*;
use crate::{push_error, push_error_task};
use iced::widget::button::danger;
use iced::widget::space::horizontal;
use iced::widget::text_input::Catalog;
use iced::widget::{button, column, row, scrollable, space, text, text_input};
use iced::{Element, Task};
@@ -22,6 +23,7 @@ pub struct RepetitionSettingsState {
settings_data: DeckSettings,
state: AppState,
real_delete: bool,
real_delete_states: bool,
correct_filter: bool,
filter_changed: bool,
filtered_words: Option<u32>,
@@ -38,6 +40,7 @@ impl RepetitionSettingsState {
settings_handle: settings,
state,
real_delete: false,
real_delete_states: false,
correct_filter: true,
filter_changed: false,
filtered_words: None,
@@ -105,7 +108,26 @@ impl NavigatedPage<RepetitionSettingsMessage> for RepetitionSettingsState {
return Task::done(RootMessage::RepetitionSettings(Back));
}
RevertDeleteSet => self.real_delete = false,
RevertDeleteSet => {
self.real_delete = false;
self.real_delete_states = true;
}
DeleteStates => {
if !self.real_delete_states {
self.real_delete_states = true;
return Task::future(async {
tokio::time::sleep(Duration::from_millis(3000)).await;
RootMessage::RepetitionSettings(RevertDeleteSet)
});
}
let mut states = self.state.card_states.write();
let deck_id = self.settings_handle.id;
let mut query = states.query(Arc::new(move |state| {state.deck_id == deck_id})).handles().collect::<Vec<_>>();
if let Err(e) = states.delete_many(query.as_mut_slice()) {
return push_error_task!(e);
}
self.real_delete_states = false;
}
}
Task::none()
}
@@ -159,6 +181,14 @@ impl NavigatedPage<RepetitionSettingsMessage> for RepetitionSettingsState {
.height(Fill),
row![
button("Сохранить").style(jl_button).on_press(Save),
horizontal(),
button(if self.real_delete_states {
"Вы уверены?"
} else {
"Удалить прогресс?"
})
.style(danger)
.on_press(DeleteStates),
button(if self.real_delete {
"Вы уверены?"
} else {
@@ -166,7 +196,6 @@ impl NavigatedPage<RepetitionSettingsMessage> for RepetitionSettingsState {
})
.style(danger)
.on_press(DeleteSet),
space().width(Fill),
]
.spacing(DEFAULT_SPACING),
]
@@ -222,5 +251,6 @@ pub enum RepetitionSettingsMessage {
SetFilter(String),
TryFilter,
DeleteSet,
DeleteStates,
RevertDeleteSet,
}