refactor: use one global static collator
This commit is contained in:
		| @@ -1,12 +1,17 @@ | |||||||
| use std::ops::Deref; | use std::ops::Deref; | ||||||
| use std::str::FromStr; | use std::str::FromStr; | ||||||
|  | use std::sync::Mutex; | ||||||
| use chrono::Locale; | use chrono::Locale; | ||||||
|  | use dioxus::fullstack::once_cell::sync::Lazy; | ||||||
| use dioxus_sdk::i18n::Language; | use dioxus_sdk::i18n::Language; | ||||||
|  | use feruca::Collator; | ||||||
| use unic_langid_impl::LanguageIdentifier; | use unic_langid_impl::LanguageIdentifier; | ||||||
|  |  | ||||||
| const EN_US: &str = include_str!("en_us.json"); | const EN_US: &str = include_str!("en_us.json"); | ||||||
| const CS_CZ: &str = include_str!("cs_cz.json"); | const CS_CZ: &str = include_str!("cs_cz.json"); | ||||||
|  |  | ||||||
|  | pub(crate) static COLLATOR: Lazy<Mutex<Collator>> = Lazy::new(|| Mutex::new(Collator::default())); | ||||||
|  |  | ||||||
| pub(crate) fn get_languages() -> Vec<Language> { | pub(crate) fn get_languages() -> Vec<Language> { | ||||||
|     Vec::from([EN_US, CS_CZ]).into_iter().map(|texts| Language::from_str(texts).unwrap()).collect() |     Vec::from([EN_US, CS_CZ]).into_iter().map(|texts| Language::from_str(texts).unwrap()).collect() | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,9 +2,9 @@ use std::cmp::Ordering; | |||||||
| use chrono::NaiveDateTime; | use chrono::NaiveDateTime; | ||||||
| use crate::schema::projects; | use crate::schema::projects; | ||||||
| use diesel::prelude::*; | use diesel::prelude::*; | ||||||
| use feruca::Collator; |  | ||||||
| use serde::{Deserialize, Serialize}; | use serde::{Deserialize, Serialize}; | ||||||
| use validator::Validate; | use validator::Validate; | ||||||
|  | use crate::internationalization::COLLATOR; | ||||||
|  |  | ||||||
| const TITLE_LENGTH_MIN: u64 = 1; | const TITLE_LENGTH_MIN: u64 = 1; | ||||||
| const TITLE_LENGTH_MAX: u64 = 255; | const TITLE_LENGTH_MAX: u64 = 255; | ||||||
| @@ -47,7 +47,7 @@ impl PartialOrd<Self> for Project { | |||||||
|  |  | ||||||
| impl Ord for Project { | impl Ord for Project { | ||||||
|     fn cmp(&self, other: &Self) -> Ordering { |     fn cmp(&self, other: &Self) -> Ordering { | ||||||
|         Collator::default().collate(self.title(), other.title()) |         COLLATOR.lock().unwrap().collate(self.title(), other.title()) | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Matouš Volf
					Matouš Volf