Repo integration #15

Merged
micialware merged 35 commits from repo-integration into master 2026-09-09 12:47:42 +03:00
Showing only changes of commit 28730c0fda - Show all commits
+32 -2
View File
@@ -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,
} }