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::styling::*;
|
||||||
use crate::{push_error, push_error_task};
|
use crate::{push_error, push_error_task};
|
||||||
use iced::widget::button::danger;
|
use iced::widget::button::danger;
|
||||||
|
use iced::widget::space::horizontal;
|
||||||
use iced::widget::text_input::Catalog;
|
use iced::widget::text_input::Catalog;
|
||||||
use iced::widget::{button, column, row, scrollable, space, text, text_input};
|
use iced::widget::{button, column, row, scrollable, space, text, text_input};
|
||||||
use iced::{Element, Task};
|
use iced::{Element, Task};
|
||||||
@@ -22,6 +23,7 @@ pub struct RepetitionSettingsState {
|
|||||||
settings_data: DeckSettings,
|
settings_data: DeckSettings,
|
||||||
state: AppState,
|
state: AppState,
|
||||||
real_delete: bool,
|
real_delete: bool,
|
||||||
|
real_delete_states: bool,
|
||||||
correct_filter: bool,
|
correct_filter: bool,
|
||||||
filter_changed: bool,
|
filter_changed: bool,
|
||||||
filtered_words: Option<u32>,
|
filtered_words: Option<u32>,
|
||||||
@@ -38,6 +40,7 @@ impl RepetitionSettingsState {
|
|||||||
settings_handle: settings,
|
settings_handle: settings,
|
||||||
state,
|
state,
|
||||||
real_delete: false,
|
real_delete: false,
|
||||||
|
real_delete_states: false,
|
||||||
correct_filter: true,
|
correct_filter: true,
|
||||||
filter_changed: false,
|
filter_changed: false,
|
||||||
filtered_words: None,
|
filtered_words: None,
|
||||||
@@ -105,7 +108,26 @@ impl NavigatedPage<RepetitionSettingsMessage> for RepetitionSettingsState {
|
|||||||
|
|
||||||
return Task::done(RootMessage::RepetitionSettings(Back));
|
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()
|
Task::none()
|
||||||
}
|
}
|
||||||
@@ -159,6 +181,14 @@ impl NavigatedPage<RepetitionSettingsMessage> for RepetitionSettingsState {
|
|||||||
.height(Fill),
|
.height(Fill),
|
||||||
row![
|
row![
|
||||||
button("Сохранить").style(jl_button).on_press(Save),
|
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 {
|
button(if self.real_delete {
|
||||||
"Вы уверены?"
|
"Вы уверены?"
|
||||||
} else {
|
} else {
|
||||||
@@ -166,7 +196,6 @@ impl NavigatedPage<RepetitionSettingsMessage> for RepetitionSettingsState {
|
|||||||
})
|
})
|
||||||
.style(danger)
|
.style(danger)
|
||||||
.on_press(DeleteSet),
|
.on_press(DeleteSet),
|
||||||
space().width(Fill),
|
|
||||||
]
|
]
|
||||||
.spacing(DEFAULT_SPACING),
|
.spacing(DEFAULT_SPACING),
|
||||||
]
|
]
|
||||||
@@ -222,5 +251,6 @@ pub enum RepetitionSettingsMessage {
|
|||||||
SetFilter(String),
|
SetFilter(String),
|
||||||
TryFilter,
|
TryFilter,
|
||||||
DeleteSet,
|
DeleteSet,
|
||||||
|
DeleteStates,
|
||||||
RevertDeleteSet,
|
RevertDeleteSet,
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user