Rewrite words and groups into result

This commit is contained in:
micialware committed 2026-08-24 18:46:54 +03:00
1 parent c56d135ce8
commit 5a6747030b
7 files changed
+99 -70

No files matched your search

+28 -13
View File
@@ -1,12 +1,16 @@
use crate::app::AppState;
use crate::data::Id;
use crate::data::entities::{WordData, WordGroup};
use crate::data_provider::words::{delete_group, delete_word, update_group, update_word};
use crate::navigation::Page::{Import, Word};
use crate::navigation::{NavigatedPage, Page, RootMessage};
use crate::pages::dictionary::DictionaryMessage::*;
use crate::pages::dictionary_quiz::DictionaryQuizState;
use crate::pages::import::ImportState;
use crate::navigation::Page::{Import, Word};
use crate::navigation::{NavigatedPage, Page, RootMessage};
use crate::styling::*;
use crate::pages::word::WordState;
use crate::push_error;
use crate::push_error_task;
use crate::styling::*;
use chrono::{DateTime, TimeDelta, Utc};
use hashbrown::{HashMap, HashSet};
use iced::alignment::Vertical::Center;
@@ -17,14 +21,12 @@ use iced::widget::text_input::default;
use iced::widget::*;
use iced::{Border, Color, Shadow, Task};
use iced_core::Length::Fill;
use log::info;
use parking_lot::Mutex;
use rand::random_range;
use std::ops::Add;
use std::sync::Arc;
use std::time::{Duration, Instant};
use log::info;
use crate::app::AppState;
use crate::data::entities::{WordData, WordGroup};
#[derive(Clone)]
pub struct DictionaryState {
@@ -168,7 +170,9 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
let word = dict.remove(i);
self.include_map.remove(i);
self.auto_save_queue.remove(&i);
delete_word(&word, &state.connection)
if let Err(err) = delete_word(&word, &state.connection) {
return push_error_task!(err);
}
}
Include(i, b) => self.include_map[i] = b,
IncludeTag(t, v) => {
@@ -190,7 +194,7 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
self.search = s;
}
SetTyping(b) => self.no_typing = b,
SubmitWord(i) => self.save_word(i),
SubmitWord(i) => return self.save_word(i),
Back => {}
Test => {}
CreateGroup => {
@@ -213,7 +217,10 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
let connection = &state.connection;
let mut group = state.word_groups[self.selected_group_index].clone();
update_group(&mut group, connection);
if let Err(err) = update_group(&mut group, connection) {
return push_error_task!(err);
}
state.word_groups[self.selected_group_index] = group;
}
SelectGroup(i) => {
@@ -236,7 +243,10 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
let remove_group_id = group.id;
let connection = &state.connection;
delete_group(group, connection);
if let Err(err) = delete_group(group, connection) {
return push_error_task!(err);
}
state.word_groups.remove(self.selected_group_index);
state
.dictionary
@@ -257,7 +267,8 @@ impl NavigatedPage<DictionaryMessage> for DictionaryState {
}
if self.auto_save_queue[&word_index] <= now {
self.auto_save_queue.remove(&word_index);
self.save_word(word_index);
return self.save_word(word_index);
}
}
ToImport => {}
@@ -309,13 +320,17 @@ impl DictionaryState {
result
}
fn save_word(&mut self, i: usize) {
fn save_word(&mut self, i: usize) -> Task<RootMessage> {
let state = &mut self.state.lock();
let connection = &state.connection;
let word = &mut state.dictionary[i].clone();
update_word(word, connection);
if let Err(err) = update_word(word, connection) {
return push_error_task!(err);
}
state.dictionary[i] = word.clone();
Task::none()
}
fn launch_auto_save_offset(&mut self, index: usize) -> Task<RootMessage> {