pub struct Accounts {
dir: PathBuf,
config: Config,
accounts: BTreeMap<u32, Context>,
events: Events,
pub(crate) stockstrings: StockStrings,
push_subscriber: PushSubscriber,
}
Expand description
Account manager, that can handle multiple accounts in a single place.
Fields§
§dir: PathBuf
§config: Config
§accounts: BTreeMap<u32, Context>
Map from account ID to the account.
events: Events
Event channel to emit account manager errors.
stockstrings: StockStrings
Stock string translations shared by all created contexts.
This way changing a translation for one context automatically changes it for all other contexts.
push_subscriber: PushSubscriber
Push notification subscriber shared between accounts.
Implementations§
source§impl Accounts
impl Accounts
sourcepub async fn set_stock_translation(
&self,
id: StockMessage,
stockstring: String,
) -> Result<()>
pub async fn set_stock_translation( &self, id: StockMessage, stockstring: String, ) -> Result<()>
Set the stock string for the StockMessage.
source§impl Accounts
impl Accounts
sourcepub async fn new(dir: PathBuf, writable: bool) -> Result<Self>
pub async fn new(dir: PathBuf, writable: bool) -> Result<Self>
Loads or creates an accounts folder at the given dir
.
sourceasync fn open(dir: PathBuf, writable: bool) -> Result<Self>
async fn open(dir: PathBuf, writable: bool) -> Result<Self>
Opens an existing accounts structure. Will error if the folder doesn’t exist, no account exists and no config exists.
sourcepub fn get_account(&self, id: u32) -> Option<Context>
pub fn get_account(&self, id: u32) -> Option<Context>
Returns an account by its id
:
sourcepub fn get_selected_account(&self) -> Option<Context>
pub fn get_selected_account(&self) -> Option<Context>
Returns the currently selected account.
sourcepub fn get_selected_account_id(&self) -> Option<u32>
pub fn get_selected_account_id(&self) -> Option<u32>
Returns the currently selected account’s id or None if no account is selected.
sourcepub async fn select_account(&mut self, id: u32) -> Result<()>
pub async fn select_account(&mut self, id: u32) -> Result<()>
Selects the given account.
sourcepub async fn add_account(&mut self) -> Result<u32>
pub async fn add_account(&mut self) -> Result<u32>
Adds a new account and opens it.
Returns account ID.
sourcepub async fn add_closed_account(&mut self) -> Result<u32>
pub async fn add_closed_account(&mut self) -> Result<u32>
Adds a new closed account.
sourcepub async fn remove_account(&mut self, id: u32) -> Result<()>
pub async fn remove_account(&mut self, id: u32) -> Result<()>
Removes an account.
sourcepub async fn migrate_account(&mut self, dbfile: PathBuf) -> Result<u32>
pub async fn migrate_account(&mut self, dbfile: PathBuf) -> Result<u32>
Migrates an existing account into this structure.
Returns the ID of new account.
sourcepub async fn start_io(&mut self)
pub async fn start_io(&mut self)
Starts background tasks such as IMAP and SMTP loops for all accounts.
sourcepub async fn maybe_network(&self)
pub async fn maybe_network(&self)
Notifies all accounts that the network may have become available.
sourcepub async fn maybe_network_lost(&self)
pub async fn maybe_network_lost(&self)
Notifies all accounts that the network connection may have been lost.
sourceasync fn background_fetch_without_timeout(&self)
async fn background_fetch_without_timeout(&self)
Performs a background fetch for all accounts in parallel.
This is an auxiliary function and not part of public API. Use Accounts::background_fetch instead.
sourcepub async fn background_fetch(&self, timeout: Duration)
pub async fn background_fetch(&self, timeout: Duration)
Performs a background fetch for all accounts in parallel with a timeout.
The AccountsBackgroundFetchDone
event is emitted at the end,
process all events until you get this one and you can safely return to the background
without forgetting to create notifications caused by timing race conditions.
sourcepub fn emit_event(&self, event: EventType)
pub fn emit_event(&self, event: EventType)
Emits a single event.
sourcepub fn get_event_emitter(&self) -> EventEmitter
pub fn get_event_emitter(&self) -> EventEmitter
Returns event emitter.
sourcepub async fn set_push_device_token(&mut self, token: &str) -> Result<()>
pub async fn set_push_device_token(&mut self, token: &str) -> Result<()>
Sets notification token for Apple Push Notification service.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Accounts
impl !RefUnwindSafe for Accounts
impl Send for Accounts
impl Sync for Accounts
impl Unpin for Accounts
impl !UnwindSafe for Accounts
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.