From 4208380bcbcd467e0b03745a7c36c822809e6417 Mon Sep 17 00:00:00 2001 From: rozwader Date: Tue, 18 Aug 2026 08:59:55 +0200 Subject: [PATCH] chore: migrated to the newest version of freya; couple changes for queries because of it --- Cargo.lock | 108 ++++++++---------- Cargo.toml | 2 +- .../oneclient_app/src/hooks/queries/auth.rs | 10 +- .../oneclient_app/src/hooks/queries/image.rs | 5 +- .../oneclient_app/src/hooks/queries/java.rs | 2 +- .../oneclient_app/src/hooks/queries/logs.rs | 4 +- .../src/hooks/queries/mutations.rs | 24 ++-- .../src/hooks/queries/packages.rs | 27 ++--- .../src/hooks/queries/screenshots.rs | 4 +- .../src/hooks/queries/storage.rs | 4 +- 10 files changed, 80 insertions(+), 110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 176b72b8..219c51bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -517,7 +517,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.4.2", + "event-listener", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -586,7 +586,7 @@ version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "event-listener 5.4.2", + "event-listener", "event-listener-strategy", "pin-project-lite", ] @@ -604,7 +604,7 @@ dependencies = [ "async-task", "blocking", "cfg-if", - "event-listener 5.4.2", + "event-listener", "futures-lite", "rustix 1.1.4", ] @@ -704,15 +704,6 @@ dependencies = [ "tungstenite", ] -[[package]] -name = "async-watch" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a078faf4e27c0c6cc0efb20e5da59dcccc04968ebf2801d8e0b2195124cdcdb2" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async_zip" version = "0.0.18" @@ -1966,12 +1957,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.4.2" @@ -1988,7 +1973,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.2", + "event-listener", "pin-project-lite", ] @@ -2129,9 +2114,9 @@ dependencies = [ [[package]] name = "freya" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58881053a1b879450514b0cd59031e85057226c77bdf7432265873bd3830e61" +checksum = "c22ac7843561ca7a79242e3f8c8bbbf17f7ca4e6ebc3135dba2ffffea1f13d7b" dependencies = [ "cfg-if", "freya-android", @@ -2153,9 +2138,9 @@ dependencies = [ [[package]] name = "freya-android" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfded12bc5487ac3bc4dc45e38daa2d27abfd5ff7d888680e929ddf5ea44cbed" +checksum = "cd36618e99ef20ed88fd70c3776f519846c522a403ac5d2f880df60ef57e701f" dependencies = [ "freya-components", "freya-core", @@ -2167,9 +2152,9 @@ dependencies = [ [[package]] name = "freya-animation" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d436ad6d8565b1e42f75eb7d1ec2d914c69475793d104e2eca0ba72d0a4b2cb5" +checksum = "5d9ff30e6ee484ecb914d7b4640d12138d9afdf133467bfedac8bb45d4a63d0b" dependencies = [ "async-io", "easer", @@ -2178,9 +2163,9 @@ dependencies = [ [[package]] name = "freya-clipboard" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133c38b53ab539439d29930a1fe0628180df844457430a8b53863815a22d924e" +checksum = "a2b20aae0d10035d9869d8a2a46710c552667a84c513fe571ebd30dc130b6a3d" dependencies = [ "copypasta", "freya-core", @@ -2188,9 +2173,9 @@ dependencies = [ [[package]] name = "freya-components" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4874a0c79b5d1248f4dc70aa99a488c2b8721f0548980fa338bfb56f661d5d" +checksum = "87d2ee6c8f13c497d00370c91534fabfc54a53de246099c7106cd028a320089b" dependencies = [ "accesskit", "anyhow", @@ -2217,12 +2202,11 @@ dependencies = [ [[package]] name = "freya-core" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "849fbf97eb9e5c842d63d1fe9291a31fcaacb6dba26d4d9ef230d17c08800fc7" +checksum = "cf27a40ea206a3691d5e9a76ec809629506a85ee1c06ab6b20943d3ad41178d9" dependencies = [ "accesskit", - "async-watch", "bitflags 2.13.1", "bytes 1.11.1", "cursor-icon", @@ -2247,9 +2231,9 @@ dependencies = [ [[package]] name = "freya-edit" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f8a3e6e18118ed1f3c240789a0d79b899ab6881542c5c67d8b8f4db3cb7e3f" +checksum = "418a8fba080d56be8de6024282287e62f6ebedaac40f4f63f75bba04b58a48b2" dependencies = [ "bitflags 2.13.1", "freya-clipboard", @@ -2262,27 +2246,27 @@ dependencies = [ [[package]] name = "freya-engine" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a6a6f340133481eb2bfe9dd4a18e3ff409288fcce3c0ae44421766403b3a6" +checksum = "2f59bd7d35d6e2ff4e9a3ce5ac4a58ad060e0f96d52f036d433694a923092c05" dependencies = [ "freya-skia-safe", ] [[package]] name = "freya-icons" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de6fb3ee664cab1d601d32265218792e86870e9d0adb4dfc00982da7e97706b1" +checksum = "a1f8f9122b2fb2feff3e9f754ecfbd7d9e93ad633bcf035f49bd708989e0e6b6" dependencies = [ "bytes 1.11.1", ] [[package]] name = "freya-markdown" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4f0cbfd1fe4380c8a6a3ba046186c8a2297d16d982d531b05b9be456649b9b5" +checksum = "2525f4c240ff9335cf2f40910a42a2398154cf85d2bcd07f94ad44d1173a822e" dependencies = [ "freya-components", "freya-core", @@ -2292,9 +2276,9 @@ dependencies = [ [[package]] name = "freya-performance-plugin" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ece11eccfdbdb4ce337dd6989545ffada4331d8f5b277c18755c9d4342ff800" +checksum = "9ecf96f262830250cd807745e0db41de5041ee4a3b216783ef00ebc6e5905ebd" dependencies = [ "freya-core", "freya-engine", @@ -2303,9 +2287,9 @@ dependencies = [ [[package]] name = "freya-query" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64093d04e01793f4dfa4f2534d0eb560a02e4a341417fda8db1186fb1c629ce" +checksum = "4103ee0f4bd95baef2884ed7da19da1ab0bf93f3d9edcdbb7629f808c2bb2a35" dependencies = [ "async-io", "freya-core", @@ -2314,18 +2298,18 @@ dependencies = [ [[package]] name = "freya-radio" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df935a2d24b8bbdbcaed0b0faf156c6aa86722b42e67b54cac3db7fa8d570ae" +checksum = "031be3e0103f5276c4de854aac606a62bbf126484b5ea07e65c3f20e7db98fb8" dependencies = [ "freya-core", ] [[package]] name = "freya-router" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a12fd1d5f42737ff2b73821ce9ef5b219b58e77c60efe72e304989e6cd85da" +checksum = "b52d16e7865fc800ce9c6c70a0834299da7ad5f25dbf4dea4e681a5bfe88733a" dependencies = [ "freya-core", "freya-router-macro", @@ -2336,9 +2320,9 @@ dependencies = [ [[package]] name = "freya-router-macro" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd179a428cb960df4bd43f8f50bbe5c57c92b86e9875734dfbf2bd6074ceb446" +checksum = "23f686c13da725608913d68f2491446fa7048114aa99430e13d7407f95bc4639" dependencies = [ "proc-macro2", "quote", @@ -2348,9 +2332,9 @@ dependencies = [ [[package]] name = "freya-sdk" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78c948db33b22f1804566b5399f210beb8009ddc7ad42d78f50d944eda51663" +checksum = "417a170927ec9b6aef628a6ddf0f515482198d5d394c337b091324ba3a652761" dependencies = [ "async-io", "freya-core", @@ -2399,9 +2383,9 @@ dependencies = [ [[package]] name = "freya-winit" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "273f5eaae2f6561d86c67285c56cd098bceec322169eddfae36e9dce3d52a270" +checksum = "fbff29f0c8d37e6563e5faa60f4b7d83d0180554dc1cbaa0a7485b4e76a95078" dependencies = [ "accesskit", "accesskit_winit", @@ -4945,9 +4929,9 @@ checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" [[package]] name = "pathgraph" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4520bda5a6ac05d6f8f051eb65cdc647dda6a05cdbb1eb5c65e246423fb060b" +checksum = "a1afa89dd37705581548840231225fd303f913c2bc0f0d4426aa35d7891c4d8a" [[package]] name = "percent-encoding" @@ -5373,9 +5357,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "ragnarok" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa4dfe7f0fbe3c9d24c9bf9de10b58d44941633e5bfe7937cebb248119e8cad" +checksum = "430c2af9d4cacf3229e609b362116ca980dcb4e1fbc206357d74eba0e6aec2be" dependencies = [ "euclid", "hotpath", @@ -6543,7 +6527,7 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 5.4.2", + "event-listener", "futures-core", "futures-intrusive", "futures-io", @@ -7189,9 +7173,9 @@ checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "torin" -version = "0.5.0-rc.1" +version = "0.5.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bfa551add6f7c4eee4c7b4b92610b1559d677fc2518802d3b7265be2e53ef43" +checksum = "2a8cbe2ec25f19cacd35478c972e4b56e73e66409367726afc9da5a71a196810" dependencies = [ "euclid", "itertools 0.14.0", @@ -8561,7 +8545,7 @@ dependencies = [ "async-trait", "blocking", "enumflags2", - "event-listener 5.4.2", + "event-listener", "futures-core", "futures-lite", "hex", diff --git a/Cargo.toml b/Cargo.toml index 47f604a0..3f825a47 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -137,7 +137,7 @@ syn = {version = "=2.0.117"} thiserror = {version = "=2.0.18"} # ui -freya = {version = "=0.5.0-rc.1", features = ["engine", "winit", "router", "remote-asset", "sdk", "markdown", "query", "radio", "titlebar"]} +freya = {version = "=0.5.0-rc.3", features = ["engine", "winit", "router", "remote-asset", "sdk", "markdown", "query", "radio", "titlebar"]} freya-skia-safe = "=0.98.1" # required for the SKSL player renderer image = {version = "=0.25.10", default-features = false, features = ["png", "jpeg"]} diff --git a/packages/oneclient_app/src/hooks/queries/auth.rs b/packages/oneclient_app/src/hooks/queries/auth.rs index 281d8bf0..487f0fc2 100644 --- a/packages/oneclient_app/src/hooks/queries/auth.rs +++ b/packages/oneclient_app/src/hooks/queries/auth.rs @@ -113,15 +113,13 @@ pub fn try_account(query: &UseQuery) -> Option { } async fn invalidate_auth_queries(account_id: Option) { - QueriesStorage::::try_invalidate_matching(ListAccountsKeys).await; + QueriesStorage::::invalidate_matching(ListAccountsKeys).await; for fallback in [false, true] { - QueriesStorage::::try_invalidate_matching(DefaultAccountKeys { - fallback, - }) - .await; + QueriesStorage::::invalidate_matching(DefaultAccountKeys { fallback }) + .await; } if let Some(id) = account_id { - QueriesStorage::::try_invalidate_matching(AccountKeys { id }).await; + QueriesStorage::::invalidate_matching(AccountKeys { id }).await; } } diff --git a/packages/oneclient_app/src/hooks/queries/image.rs b/packages/oneclient_app/src/hooks/queries/image.rs index 95b997bb..85d2e506 100644 --- a/packages/oneclient_app/src/hooks/queries/image.rs +++ b/packages/oneclient_app/src/hooks/queries/image.rs @@ -45,11 +45,10 @@ pub fn loaded_image(url: Option<&str>, query: &UseQuery) -> Op pub fn use_cached_image(url: Option, max_edge: u32) -> UseQuery { let url = url.unwrap_or_default(); - let enabled = !url.is_empty(); + let keys = (!url.is_empty()).then_some(CachedImageKeys { url, max_edge }); use_query( - Query::new(CachedImageKeys { url, max_edge }, CachedImageQuery) - .enable(enabled) + Query::new(keys, CachedImageQuery) .stale_time(IMAGE_STALE) .clean_time(IMAGE_CLEAN), ) diff --git a/packages/oneclient_app/src/hooks/queries/java.rs b/packages/oneclient_app/src/hooks/queries/java.rs index ddb1a1c9..5c26f125 100644 --- a/packages/oneclient_app/src/hooks/queries/java.rs +++ b/packages/oneclient_app/src/hooks/queries/java.rs @@ -29,7 +29,7 @@ pub fn java_runtimes(query: &UseQuery) -> Vec::try_invalidate_all().await; + QueriesStorage::::invalidate_all().await; } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] diff --git a/packages/oneclient_app/src/hooks/queries/logs.rs b/packages/oneclient_app/src/hooks/queries/logs.rs index 2fe6ae85..53d1a4b1 100644 --- a/packages/oneclient_app/src/hooks/queries/logs.rs +++ b/packages/oneclient_app/src/hooks/queries/logs.rs @@ -90,8 +90,8 @@ pub fn try_log_content(query: &UseQuery) -> Option } pub async fn invalidate_logs_queries() { - QueriesStorage::::try_invalidate_all().await; - QueriesStorage::::try_invalidate_all().await; + QueriesStorage::::invalidate_all().await; + QueriesStorage::::invalidate_all().await; } #[derive(Clone, Debug, PartialEq, Eq, Hash)] diff --git a/packages/oneclient_app/src/hooks/queries/mutations.rs b/packages/oneclient_app/src/hooks/queries/mutations.rs index cc685c5e..53748ec2 100644 --- a/packages/oneclient_app/src/hooks/queries/mutations.rs +++ b/packages/oneclient_app/src/hooks/queries/mutations.rs @@ -25,12 +25,12 @@ async fn timed(step: &'static str, fut: impl std::future::Future) { pub async fn invalidate_cluster_queries() { let started = std::time::Instant::now(); - timed("cluster_content", QueriesStorage::::try_invalidate_all()).await; - timed("bundle_overrides", QueriesStorage::::try_invalidate_all()).await; - timed("bundles_with_status", QueriesStorage::::try_invalidate_all()).await; - timed("clusters", QueriesStorage::::try_invalidate_all()).await; - timed("bundle_updates", QueriesStorage::::try_invalidate_all()).await; - timed("package_updates", QueriesStorage::::try_invalidate_all()).await; + timed("cluster_content", QueriesStorage::::invalidate_all()).await; + timed("bundle_overrides", QueriesStorage::::invalidate_all()).await; + timed("bundles_with_status", QueriesStorage::::invalidate_all()).await; + timed("clusters", QueriesStorage::::invalidate_all()).await; + timed("bundle_updates", QueriesStorage::::invalidate_all()).await; + timed("package_updates", QueriesStorage::::invalidate_all()).await; tracing::debug!( target: "oneclient_app::perf", ms = started.elapsed().as_millis() as u64, @@ -41,15 +41,15 @@ pub async fn invalidate_cluster_queries() { /// Split out of [`invalidate_cluster_queries`] so an install can wait for just /// this before dropping its busy flag pub async fn invalidate_cluster_content_queries() { - QueriesStorage::::try_invalidate_all().await; + QueriesStorage::::invalidate_all().await; } pub async fn invalidate_profile_queries() { - QueriesStorage::::try_invalidate_all().await; - QueriesStorage::::try_invalidate_all().await; - QueriesStorage::::try_invalidate_all().await; - QueriesStorage::::try_invalidate_all().await; - QueriesStorage::::try_invalidate_all().await; + QueriesStorage::::invalidate_all().await; + QueriesStorage::::invalidate_all().await; + QueriesStorage::::invalidate_all().await; + QueriesStorage::::invalidate_all().await; + QueriesStorage::::invalidate_all().await; } #[derive(Clone, PartialEq, Eq, Hash)] diff --git a/packages/oneclient_app/src/hooks/queries/packages.rs b/packages/oneclient_app/src/hooks/queries/packages.rs index 8e7d0cb5..548276b9 100644 --- a/packages/oneclient_app/src/hooks/queries/packages.rs +++ b/packages/oneclient_app/src/hooks/queries/packages.rs @@ -13,8 +13,6 @@ use oneclient_core::LauncherError; pub const BROWSE_PAGE_SIZE: usize = DEFAULT_PAGE_SIZE; pub const VERSIONS_PAGE_SIZE: usize = 20; -/// The listing asks for one per visible card holding them stops scrolling from -/// refiring a request per card each time it comes back into view const VERSIONS_STALE: Duration = Duration::from_secs(5 * 60); pub fn content_type_for_slug(slug: &str) -> ContentType { @@ -242,8 +240,6 @@ pub fn use_package_versions( use_package_versions_when(true, provider, project_id, game_version, loader, page) } -/// A listing row keeps its install button once installed so the hook still -/// runs there but a request per already-installed row is pure waste pub fn use_package_versions_when( enabled: bool, provider: ProviderId, @@ -252,20 +248,15 @@ pub fn use_package_versions_when( loader: Option, page: usize, ) -> UseQuery { - use_query( - Query::new( - PackageVersionsKeys { - provider, - project_id, - game_version, - loader, - page, - }, - PackageVersionsQuery, - ) - .enable(enabled) - .stale_time(VERSIONS_STALE), - ) + let keys = enabled.then_some(PackageVersionsKeys { + provider, + project_id, + game_version, + loader, + page, + }); + + use_query(Query::new(keys, PackageVersionsQuery).stale_time(VERSIONS_STALE)) } pub fn version_list(query: &UseQuery) -> Vec { diff --git a/packages/oneclient_app/src/hooks/queries/screenshots.rs b/packages/oneclient_app/src/hooks/queries/screenshots.rs index 89d63ed2..7eaf46af 100644 --- a/packages/oneclient_app/src/hooks/queries/screenshots.rs +++ b/packages/oneclient_app/src/hooks/queries/screenshots.rs @@ -91,8 +91,8 @@ pub fn try_cluster_screenshots( } pub async fn invalidate_screenshots_queries() { - QueriesStorage::::try_invalidate_all().await; - QueriesStorage::::try_invalidate_all().await; + QueriesStorage::::invalidate_all().await; + QueriesStorage::::invalidate_all().await; } #[derive(Clone, Debug, PartialEq, Eq, Hash)] diff --git a/packages/oneclient_app/src/hooks/queries/storage.rs b/packages/oneclient_app/src/hooks/queries/storage.rs index f5ba2996..4db9e814 100644 --- a/packages/oneclient_app/src/hooks/queries/storage.rs +++ b/packages/oneclient_app/src/hooks/queries/storage.rs @@ -24,8 +24,6 @@ impl QueryCapability for StorageReportQuery { } } -/// The report walks tens of thousands of files and the default zero stale time -/// would rescan the whole tree on every mount The page has a refresh button const STORAGE_STALE_TIME: Duration = Duration::from_secs(120); pub fn use_storage_report() -> UseQuery { @@ -37,7 +35,7 @@ pub fn try_storage_report(query: &UseQuery) -> Option::try_invalidate_all().await; + QueriesStorage::::invalidate_all().await; } #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]