arch: push wire types out of ClientApp, extract event_service, cleanup dead code
- ClientApp stores domain types, RepaintCommand carries DisplayHint + Vec<(String,Value)> - adapters no longer convert Wire→Domain (eliminated duplication in esp32 + desktop) - event_service in application layer handles LayoutChanged/WebhookDataReceived/ThemeChanged - bootstrap event_handler reduced to 10-line dispatcher - polling_service reuses event_service::apply_and_broadcast (deduplicated broadcast pattern) - AppState.config_service() replaces 11 inline ConfigService::new() calls - delete unused poll_interval_secs parameter chain - delete unused StoragePort/ClientConfig (zero implementations)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use client_application::{ClientApp, conversions, run_connection_loop};
|
||||
use client_application::{ClientApp, RepaintCommand, run_connection_loop};
|
||||
use client_domain::{
|
||||
BoundingBox, DisplayPort, FontMetrics, RenderEngine, RepaintRequest, ThemeConfig,
|
||||
WidgetRenderer,
|
||||
@@ -10,6 +10,16 @@ use std::thread;
|
||||
use std::time::{Duration, Instant};
|
||||
use tcp_client::StdTcpClient;
|
||||
|
||||
fn to_request(cmd: &RepaintCommand) -> RepaintRequest {
|
||||
RepaintRequest {
|
||||
widget_id: cmd.widget_id,
|
||||
bounds: cmd.bounds,
|
||||
display_hint: cmd.display_hint.clone(),
|
||||
data: cmd.data.clone(),
|
||||
error: cmd.error.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let screen = BoundingBox::screen(240, 320);
|
||||
let mut app = ClientApp::new(screen);
|
||||
@@ -56,30 +66,7 @@ fn main() {
|
||||
if !repaints.is_empty() {
|
||||
println!("\n--- Repaint ({} widgets) ---", repaints.len());
|
||||
|
||||
let requests: Vec<RepaintRequest> = repaints
|
||||
.iter()
|
||||
.map(|cmd| RepaintRequest {
|
||||
widget_id: cmd.widget_id,
|
||||
bounds: cmd.bounds,
|
||||
display_hint: conversions::wire_to_display_hint(
|
||||
cmd.display_hint.clone(),
|
||||
),
|
||||
data: cmd
|
||||
.state
|
||||
.data
|
||||
.iter()
|
||||
.map(|kv| {
|
||||
(kv.key.clone(), conversions::wire_to_value(kv.value.clone()))
|
||||
})
|
||||
.collect(),
|
||||
error: cmd
|
||||
.state
|
||||
.error
|
||||
.as_ref()
|
||||
.map(|e| conversions::wire_to_widget_error(e.clone())),
|
||||
})
|
||||
.collect();
|
||||
|
||||
let requests: Vec<_> = repaints.iter().map(to_request).collect();
|
||||
let bg = engine.theme().background;
|
||||
let updates = renderer.apply_repaints(&engine, requests);
|
||||
for update in &updates {
|
||||
|
||||
Reference in New Issue
Block a user