| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
use std::collections::HashSet; |
| 10 |
|
| 11 |
use synckit_client::{SyncObserver, SyncState}; |
| 12 |
use tauri::{AppHandle, Emitter}; |
| 13 |
|
| 14 |
|
| 15 |
pub(crate) struct GoSyncObserver { |
| 16 |
app: AppHandle, |
| 17 |
} |
| 18 |
|
| 19 |
impl GoSyncObserver { |
| 20 |
pub(crate) fn new(app: AppHandle) -> Self { |
| 21 |
Self { app } |
| 22 |
} |
| 23 |
} |
| 24 |
|
| 25 |
impl SyncObserver for GoSyncObserver { |
| 26 |
fn on_status(&self, state: SyncState) { |
| 27 |
|
| 28 |
|
| 29 |
|
| 30 |
let payload = match state { |
| 31 |
SyncState::Syncing => "syncing", |
| 32 |
SyncState::Error(_) => "error", |
| 33 |
_ => "idle", |
| 34 |
}; |
| 35 |
let _ = self.app.emit("sync:status-changed", payload); |
| 36 |
} |
| 37 |
|
| 38 |
fn on_changes_applied(&self, tables: &HashSet<String>) { |
| 39 |
let tables: Vec<&String> = tables.iter().collect(); |
| 40 |
let _ = self.app.emit("sync:changes-applied", tables); |
| 41 |
} |
| 42 |
|
| 43 |
fn on_subscription_required(&self) { |
| 44 |
let _ = self.app.emit("sync:subscription-required", ()); |
| 45 |
} |
| 46 |
} |
| 47 |
|