Skip to content

Commit

Permalink
sync options
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex6323 committed Mar 1, 2024
1 parent 1badfa3 commit a647798
Showing 1 changed file with 53 additions and 53 deletions.
106 changes: 53 additions & 53 deletions sdk/src/wallet/operations/syncing/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,21 @@

use serde::{Deserialize, Serialize};

const DEFAULT_FORCE_SYNCING: bool = false;
const DEFAULT_SYNC_INCOMING_TRANSACTIONS: bool = false;
const DEFAULT_SYNC_ONLY_MOST_BASIC_OUTPUTS: bool = false;
const DEFAULT_SYNC_PENDING_TRANSACTIONS: bool = true;
const DEFAULT_SYNC_NATIVE_TOKEN_FOUNDRIES: bool = false;
const DEFAULT_SYNC_IMPLICIT_ACCOUNTS: bool = false;

/// The synchronization options
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SyncOptions {
/// Usually syncing is skipped if it's called in between 200ms, because there can only be new changes every
/// milestone and calling it twice "at the same time" will not return new data
/// When this to true, we will sync anyways, even if it's called 0ms after the las sync finished.
#[serde(default)]
#[serde(default = "yes")]
pub force_syncing: bool,
/// Try to sync transactions from incoming outputs with their inputs. Some data may not be obtained if it has been
/// pruned.
#[serde(default = "default_sync_incoming_transactions")]
#[serde(default = "no")]
pub sync_incoming_transactions: bool,
/// Checks pending transactions and reissues them if necessary.
#[serde(default = "default_sync_pending_transactions")]
#[serde(default = "yes")]
pub sync_pending_transactions: bool,
/// Specifies what outputs should be synced for the ed25519 address from the wallet.
#[serde(default)]
Expand All @@ -37,52 +30,28 @@ pub struct SyncOptions {
pub nft: NftSyncOptions,
/// Specifies if only basic outputs with an AddressUnlockCondition alone should be synced, will overwrite
/// `wallet`, `account` and `nft` options.
#[serde(default = "default_sync_only_most_basic_outputs")]
#[serde(default = "no")]
pub sync_only_most_basic_outputs: bool,
/// Sync native token foundries, so their metadata can be returned in the balance.
#[serde(default = "default_sync_native_token_foundries")]
#[serde(default = "no")]
pub sync_native_token_foundries: bool,
/// Sync implicit accounts.
#[serde(default = "default_sync_implicit_accounts")]
#[serde(default = "no")]
pub sync_implicit_accounts: bool,
}

const fn default_force_syncing() -> bool {
DEFAULT_FORCE_SYNCING
}

const fn default_sync_incoming_transactions() -> bool {
DEFAULT_SYNC_INCOMING_TRANSACTIONS
}

const fn default_sync_only_most_basic_outputs() -> bool {
DEFAULT_SYNC_ONLY_MOST_BASIC_OUTPUTS
}

const fn default_sync_pending_transactions() -> bool {
DEFAULT_SYNC_PENDING_TRANSACTIONS
}

const fn default_sync_native_token_foundries() -> bool {
DEFAULT_SYNC_NATIVE_TOKEN_FOUNDRIES
}

const fn default_sync_implicit_accounts() -> bool {
DEFAULT_SYNC_IMPLICIT_ACCOUNTS
}

impl Default for SyncOptions {
fn default() -> Self {
Self {
sync_incoming_transactions: default_sync_incoming_transactions(),
sync_pending_transactions: default_sync_pending_transactions(),
force_syncing: yes(),
sync_incoming_transactions: no(),
sync_pending_transactions: yes(),
wallet: WalletSyncOptions::default(),
account: AccountSyncOptions::default(),
nft: NftSyncOptions::default(),
sync_only_most_basic_outputs: default_sync_only_most_basic_outputs(),
sync_native_token_foundries: default_sync_native_token_foundries(),
force_syncing: default_force_syncing(),
sync_implicit_accounts: default_sync_implicit_accounts(),
sync_only_most_basic_outputs: no(),
sync_native_token_foundries: no(),
sync_implicit_accounts: no(),
}
}
}
Expand All @@ -91,19 +60,23 @@ impl Default for SyncOptions {
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct WalletSyncOptions {
#[serde(default = "yes")]
pub basic_outputs: bool,
#[serde(default = "yes")]
pub account_outputs: bool,
#[serde(default = "yes")]
pub nft_outputs: bool,
#[serde(default = "yes")]
pub delegation_outputs: bool,
}

impl Default for WalletSyncOptions {
fn default() -> Self {
Self {
basic_outputs: true,
account_outputs: true,
nft_outputs: true,
delegation_outputs: true,
basic_outputs: yes(),
account_outputs: yes(),
nft_outputs: yes(),
delegation_outputs: yes(),
}
}
}
Expand All @@ -118,22 +91,27 @@ impl WalletSyncOptions {
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct AccountSyncOptions {
#[serde(default = "no")]
pub basic_outputs: bool,
#[serde(default = "no")]
pub account_outputs: bool,
#[serde(default = "yes")]
pub foundry_outputs: bool,
#[serde(default = "no")]
pub nft_outputs: bool,
#[serde(default = "no")]
pub delegation_outputs: bool,
}

impl Default for AccountSyncOptions {
// Sync only foundries
fn default() -> Self {
Self {
basic_outputs: false,
account_outputs: false,
foundry_outputs: true,
nft_outputs: false,
delegation_outputs: false,
basic_outputs: no(),
account_outputs: no(),
foundry_outputs: yes(),
nft_outputs: no(),
delegation_outputs: no(),
}
}
}
Expand All @@ -149,17 +127,39 @@ impl AccountSyncOptions {
}

/// Sync options for addresses from NFT outputs
#[derive(Debug, Default, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
#[serde(default, rename_all = "camelCase")]
pub struct NftSyncOptions {
#[serde(default = "no")]
pub basic_outputs: bool,
#[serde(default = "no")]
pub account_outputs: bool,
#[serde(default = "no")]
pub nft_outputs: bool,
#[serde(default = "no")]
pub delegation_outputs: bool,
}

impl Default for NftSyncOptions {
fn default() -> Self {
Self {
basic_outputs: no(),
account_outputs: no(),
nft_outputs: no(),
delegation_outputs: no(),
}
}
}
impl NftSyncOptions {
pub(crate) fn all_outputs(&self) -> bool {
self.basic_outputs && self.account_outputs && self.nft_outputs && self.delegation_outputs
}
}

const fn yes() -> bool {
true
}

const fn no() -> bool {
false
}

0 comments on commit a647798

Please sign in to comment.