commit f46395e2de98b6d24889fa6f31a8c060b6ae83c6
parent 7913826037fe1bac88f080c2a2d353aa1a4f1b82
Author: triesap <tyson@radroots.org>
Date: Fri, 20 Mar 2026 03:08:12 +0000
build: align replica and ui primitive integrations
Diffstat:
6 files changed, 46 insertions(+), 82 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -1715,10 +1715,10 @@ dependencies = [
"getrandom 0.2.17",
"hex",
"js-sys",
- "radroots-events",
"radroots-nostr",
"radroots-replica-db",
"radroots-replica-db-schema",
+ "radroots-replica-sync",
"radroots-sql-core",
"rusqlite",
"serde",
@@ -1807,7 +1807,6 @@ dependencies = [
"rust_decimal",
"rust_decimal_macros",
"serde",
- "typeshare",
]
[[package]]
@@ -1816,8 +1815,6 @@ version = "0.1.0-alpha.1"
dependencies = [
"radroots-core",
"serde",
- "ts-rs",
- "typeshare",
]
[[package]]
@@ -1826,6 +1823,8 @@ version = "0.1.0-alpha.1"
dependencies = [
"radroots-core",
"radroots-events",
+ "serde",
+ "serde_json",
]
[[package]]
@@ -1873,6 +1872,24 @@ dependencies = [
]
[[package]]
+name = "radroots-replica-sync"
+version = "0.1.0-alpha.1"
+dependencies = [
+ "base64",
+ "hex",
+ "radroots-events",
+ "radroots-events-codec",
+ "radroots-replica-db",
+ "radroots-replica-db-schema",
+ "radroots-sql-core",
+ "radroots-types",
+ "serde",
+ "serde_json",
+ "sha2",
+ "uuid",
+]
+
+[[package]]
name = "radroots-sql-core"
version = "0.1.0-alpha.1"
dependencies = [
@@ -2399,15 +2416,6 @@ dependencies = [
]
[[package]]
-name = "termcolor"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2637,28 +2645,6 @@ dependencies = [
]
[[package]]
-name = "ts-rs"
-version = "11.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4994acea2522cd2b3b85c1d9529a55991e3ad5e25cdcd3de9d505972c4379424"
-dependencies = [
- "thiserror 2.0.18",
- "ts-rs-macros",
-]
-
-[[package]]
-name = "ts-rs-macros"
-version = "11.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee6ff59666c9cbaec3533964505d39154dc4e0a56151fdea30a09ed0301f62e2"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "termcolor",
-]
-
-[[package]]
name = "typed-builder"
version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2685,28 +2671,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
[[package]]
-name = "typeshare"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da1bf9fe204f358ffea7f8f779b53923a20278b3ab8e8d97962c5e1b3a54edb7"
-dependencies = [
- "chrono",
- "serde",
- "serde_json",
- "typeshare-annotation",
-]
-
-[[package]]
-name = "typeshare-annotation"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "621963e302416b389a1ec177397e9e62de849a78bd8205d428608553def75350"
-dependencies = [
- "quote",
- "syn",
-]
-
-[[package]]
name = "unicode-ident"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
@@ -109,7 +109,7 @@ radroots-types = { path = "../lib/crates/types" }
radroots-sql-core = { path = "../lib/crates/sql-core" }
radroots-tangle-db = { package = "radroots-replica-db", path = "../lib/crates/replica-db" }
radroots-tangle-db-schema = { package = "radroots-replica-db-schema", path = "../lib/crates/replica-db-schema" }
-radroots-tangle-events = { package = "radroots-events", path = "../lib/crates/events" }
+radroots-tangle-events = { package = "radroots-replica-sync", path = "../lib/crates/replica-sync" }
mf2-i18n-core = { path = "../../../../vendor/triesap/mf2-i18n/crates/mf2-i18n-core" }
mf2-i18n-embedded = { path = "../../../../vendor/triesap/mf2-i18n/crates/mf2-i18n-embedded" }
diff --git a/crates/core/src/tangle/types.rs b/crates/core/src/tangle/types.rs
@@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize};
use serde_json::Value;
use radroots_tangle_db::backup::DatabaseBackup;
-use radroots_tangle_db::TangleDbExportManifestRs;
+use radroots_tangle_db::ReplicaDbExportManifestRs;
pub use radroots_tangle_db_schema::{
farm::*,
farm_gcs_location::*,
@@ -24,7 +24,7 @@ pub use radroots_tangle_db_schema::{
trade_product_location::*,
trade_product_media::*,
};
-use radroots_tangle_events::{RadrootsTangleEventDraft, RadrootsTangleSyncBundle};
+use radroots_tangle_events::{RadrootsReplicaEventDraft, RadrootsReplicaSyncBundle};
use crate::idb::RadrootsClientIdbConfig;
use crate::sql::{RadrootsClientSqlCipherConfig, RadrootsClientSqlMigrationState};
@@ -33,9 +33,9 @@ use super::RadrootsClientTangleError;
pub type RadrootsClientTangleResult<T> = Result<T, RadrootsClientTangleError>;
pub type RadrootsClientTangleDatabaseJsonExport = DatabaseBackup;
-pub type RadrootsClientTangleDatabaseExportManifestRs = TangleDbExportManifestRs;
-pub type RadrootsClientTangleNostrEventDraft = RadrootsTangleEventDraft;
-pub type RadrootsClientTangleNostrSyncBundle = RadrootsTangleSyncBundle;
+pub type RadrootsClientTangleDatabaseExportManifestRs = ReplicaDbExportManifestRs;
+pub type RadrootsClientTangleNostrEventDraft = RadrootsReplicaEventDraft;
+pub type RadrootsClientTangleNostrSyncBundle = RadrootsReplicaSyncBundle;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RadrootsClientTangleDatabaseExportManifestClient {
diff --git a/crates/core/src/tangle/web.rs b/crates/core/src/tangle/web.rs
@@ -15,13 +15,13 @@ use radroots_nostr::prelude::{
use radroots_sql_core::error::SqlError;
use radroots_sql_core::{ExecOutcome, SqlExecutor};
use radroots_sql_core::sqlite_util;
-use radroots_tangle_db::{export_manifest, TangleSql};
+use radroots_tangle_db::{export_manifest, ReplicaSql as TangleSql};
use radroots_tangle_events::{
- radroots_tangle_ingest_event,
- radroots_tangle_sync_all,
- RadrootsTangleEventDraft,
- RadrootsTangleFarmSelector,
- RadrootsTangleSyncRequest,
+ radroots_replica_ingest_event as radroots_tangle_ingest_event,
+ radroots_replica_sync_all as radroots_tangle_sync_all,
+ RadrootsReplicaEventDraft as RadrootsTangleEventDraft,
+ RadrootsReplicaFarmSelector as RadrootsTangleFarmSelector,
+ RadrootsReplicaSyncRequest as RadrootsTangleSyncRequest,
};
use rusqlite::{params_from_iter, Connection};
use sha2::{Digest, Sha256};
diff --git a/crates/ui-components/src/dialog.rs b/crates/ui-components/src/dialog.rs
@@ -253,7 +253,7 @@ pub fn RadrootsAppUiDialogContent(
view! {
<RadrootsAppUiDismissableLayer
on_dismiss=on_dismiss
- disable_outside_pointer_events=disable_outside_pointer_events
+ disable_pointer_down_outside_dismiss=disable_outside_pointer_events
>
<RadrootsAppUiFocusScope trapped=modal auto_focus=true return_focus=true>
<div
diff --git a/crates/ui-primitives/src/lib.rs b/crates/ui-primitives/src/lib.rs
@@ -7,13 +7,13 @@ pub use ui_primitives_core::roving_focus::{
RovingFocusAction as RadrootsAppUiRovingFocusAction,
RovingFocusOrientation as RadrootsAppUiRovingFocusOrientation,
};
-pub use ui_primitives_leptos::builders::{
+pub use ui_primitives_leptos::attrs::{
dialog_content_attrs,
dialog_trigger_attrs,
};
pub use ui_primitives_leptos::{
- dismissable_is_escape as radroots_app_ui_dismissable_is_escape,
- dismissable_is_outside as radroots_app_ui_dismissable_is_outside,
+ dismissible_is_escape as radroots_app_ui_dismissable_is_escape,
+ dismissible_is_outside as radroots_app_ui_dismissable_is_outside,
focus_scope_next_index as radroots_app_ui_focus_scope_next_index,
focus_scope_selector as radroots_app_ui_focus_scope_selector,
modal_hide_siblings as radroots_app_ui_modal_hide_siblings,
@@ -21,9 +21,15 @@ pub use ui_primitives_leptos::{
presence_state_next as radroots_app_ui_presence_state_next,
scroll_lock_acquire as radroots_app_ui_scroll_lock_acquire,
scroll_lock_release as radroots_app_ui_scroll_lock_release,
- use_primitive,
- DismissableLayer as RadrootsAppUiDismissableLayer,
- DismissableReason as RadrootsAppUiDismissableReason,
+ use_dom_bindings as use_primitive,
+ BoundElement as PrimitiveElement,
+ DismissibleLayer as RadrootsAppUiDismissableLayer,
+ DismissibleReason as RadrootsAppUiDismissableReason,
+ DomAttribute as PrimitiveAttribute,
+ DomAttributeValue as PrimitiveAttributeValue,
+ DomBindingError as PrimitiveError,
+ DomBindingResult as PrimitiveResult,
+ DomEventBinding as PrimitiveEvent,
FocusScope as RadrootsAppUiFocusScope,
ModalError as RadrootsAppUiModalError,
ModalGuard as RadrootsAppUiModalGuard,
@@ -33,12 +39,6 @@ pub use ui_primitives_leptos::{
PortalMount as RadrootsAppUiPortalMount,
Presence as RadrootsAppUiPresence,
PresenceState as RadrootsAppUiPresenceState,
- PrimitiveAttribute,
- PrimitiveAttributeValue,
- PrimitiveElement,
- PrimitiveError,
- PrimitiveEvent,
- PrimitiveResult,
ScrollLockError as RadrootsAppUiScrollLockError,
ScrollLockGuard as RadrootsAppUiScrollLockGuard,
ScrollLockResult as RadrootsAppUiScrollLockResult,