90 lines
1.8 KiB
Rust
90 lines
1.8 KiB
Rust
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
pub enum SyncConnectionState {
|
|
SignedOut,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
pub enum SyncObjectKind {
|
|
Spaces,
|
|
Tabs,
|
|
Bookmarks,
|
|
Profiles,
|
|
History,
|
|
PluginSettings,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
pub enum SyncObjectState {
|
|
LocalOnly,
|
|
PrivacyControlled,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
pub struct SyncObjectStatus {
|
|
kind: SyncObjectKind,
|
|
local_count: usize,
|
|
state: SyncObjectState,
|
|
}
|
|
|
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
pub struct SyncStatus {
|
|
connection: SyncConnectionState,
|
|
pending_objects: usize,
|
|
failed_objects: usize,
|
|
objects: Vec<SyncObjectStatus>,
|
|
}
|
|
|
|
impl SyncObjectStatus {
|
|
#[must_use]
|
|
pub fn new(kind: SyncObjectKind, local_count: usize, state: SyncObjectState) -> Self {
|
|
Self { kind, local_count, state }
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn kind(&self) -> &SyncObjectKind {
|
|
&self.kind
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn local_count(&self) -> usize {
|
|
self.local_count
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn state(&self) -> &SyncObjectState {
|
|
&self.state
|
|
}
|
|
}
|
|
|
|
impl SyncStatus {
|
|
#[must_use]
|
|
pub fn signed_out(objects: Vec<SyncObjectStatus>) -> Self {
|
|
Self {
|
|
connection: SyncConnectionState::SignedOut,
|
|
pending_objects: 0,
|
|
failed_objects: 0,
|
|
objects,
|
|
}
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn connection(&self) -> &SyncConnectionState {
|
|
&self.connection
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn pending_objects(&self) -> usize {
|
|
self.pending_objects
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn failed_objects(&self) -> usize {
|
|
self.failed_objects
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn objects(&self) -> &[SyncObjectStatus] {
|
|
&self.objects
|
|
}
|
|
}
|