Delete saved card states
This commit is contained in:
1 parent
7715aaff3b
commit
28730c0fda
1 file changed
+32
-2
@@ -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,
|
||||
}
|
||||
Reference in new issue
Block a user