feat(gotify): Phase 3 C2 — UI 接线 + Connection status + 真实数据
- src/config.rs: AppConfig::placeholder() 硬编码 NAS 地址 + 假 token (§20 token 永不日志;Phase 5 接持久化前占位) - src/models.rs: gotify_messages_to_items 把 GotifyMessage 列表转 Slint MessageItem[];try_fetch_real_messages 一次完成 health → applications → messages(50);失败 None 让调用方 fallback mock - src/gotify/mod.rs: re-export ServerConfig - src/lib.rs: run() 启动时调 try_fetch_real_messages,成功用真实数 据 + Connected + 服务端 URL,失败 fallback mock + Disconnected; on_test_connection_requested 重新跑同一路径 - Cargo.toml: 加 chrono 0.4 (RFC3339 解析) - ui/app.slint: is-connected (绿/灰 dot) + status-text (顶部副标) - ui/settings-page.slint: Connection section 加 Test Connection 按钮 (in-progress 时禁用显示 "Testing...") 避坑: - Gotify RFC3339 date 解析失败 silent fallback 到 unix=0(显示 "just now" 而不是崩) - Gotify priority 0..10 → Slint Priority 4 桶分桶:<=0 Low / <=3 Normal / <=7 High / else Max - ServerConfig 在 crate::gotify::model 子模块,mod.rs 必须 re-export 验证:cargo build / build --release 都 exit 0,0 warning - cargo test --test gotify_api: 6 passed - debug 33.36 MB, subsystem = WINDOWS_CUI - release 9.43 MB, subsystem = WINDOWS_GUI(chrono +1.3 MB)
This commit is contained in:
@@ -137,6 +137,10 @@ export component SettingsPage inherits Rectangle {
|
||||
// Advanced (collapsed by default per §10)
|
||||
in-out property <bool> advanced-expanded: false;
|
||||
|
||||
// Connection (Phase 3 C2)
|
||||
in-out property <bool> test-in-progress: false;
|
||||
callback test-connection-requested();
|
||||
|
||||
// Tokens
|
||||
in property <color> divider-color: #3a3b40;
|
||||
in property <color> hint-color: #6a6a6a;
|
||||
@@ -151,6 +155,29 @@ export component SettingsPage inherits Rectangle {
|
||||
VerticalLayout {
|
||||
spacing: 8px;
|
||||
SectionLabel { label: "CONNECTION"; text-color: hint-color; }
|
||||
|
||||
// "Test Connection" button — Phase 3 C2 wires this to the
|
||||
// real `GotifyApi::health` round-trip.
|
||||
Rectangle {
|
||||
width: 160px;
|
||||
height: 32px;
|
||||
background: #2f3035;
|
||||
border-radius: 6px;
|
||||
Text {
|
||||
x: (parent.width - self.width) / 2;
|
||||
y: (parent.height - self.height) / 2;
|
||||
text: root.test-in-progress ? "Testing..." : "Test Connection";
|
||||
color: #e6e6e6;
|
||||
font-size: 12px;
|
||||
}
|
||||
TouchArea {
|
||||
enabled: !root.test-in-progress;
|
||||
clicked => {
|
||||
root.test-connection-requested();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ServerCard {
|
||||
server-name: "Home";
|
||||
server-url: "https://gotify.example.com";
|
||||
|
||||
Reference in New Issue
Block a user