Rewrite words and groups into result
This commit is contained in:
1 parent
c56d135ce8
commit
5a6747030b
7 files changed
+99
-70
No files matched your search
+28
-13
@@ -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> {
|
||||
|
||||
Reference in new issue
Block a user