mirror of
https://github.com/chatmail/core.git
synced 2026-05-03 05:16:28 +03:00
BackgroundFetchCompletedForAllAccounts event
This commit is contained in:
@@ -6269,6 +6269,16 @@ void dc_event_unref(dc_event_t* event);
|
|||||||
|
|
||||||
#define DC_EVENT_WEBXDC_INSTANCE_DELETED 2121
|
#define DC_EVENT_WEBXDC_INSTANCE_DELETED 2121
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells that the Background fetch was completed (or timed out).
|
||||||
|
*
|
||||||
|
* This event acts as a marker, when you reach this event you can be sure
|
||||||
|
* that all events emitted during the background fetch were processed.
|
||||||
|
*
|
||||||
|
* This event is only emitted by the account manager
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DC_EVENT_BACKGROUND_FETCH_COMPLETED_FOR_ALL_ACCOUNTS 2200
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|||||||
@@ -559,6 +559,7 @@ pub unsafe extern "C" fn dc_event_get_id(event: *mut dc_event_t) -> libc::c_int
|
|||||||
EventType::ConfigSynced { .. } => 2111,
|
EventType::ConfigSynced { .. } => 2111,
|
||||||
EventType::WebxdcStatusUpdate { .. } => 2120,
|
EventType::WebxdcStatusUpdate { .. } => 2120,
|
||||||
EventType::WebxdcInstanceDeleted { .. } => 2121,
|
EventType::WebxdcInstanceDeleted { .. } => 2121,
|
||||||
|
EventType::BackgroundFetchCompletedForAllAccounts => 2200,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -586,7 +587,8 @@ pub unsafe extern "C" fn dc_event_get_data1_int(event: *mut dc_event_t) -> libc:
|
|||||||
| EventType::SelfavatarChanged
|
| EventType::SelfavatarChanged
|
||||||
| EventType::ConfigSynced { .. }
|
| EventType::ConfigSynced { .. }
|
||||||
| EventType::IncomingMsgBunch { .. }
|
| EventType::IncomingMsgBunch { .. }
|
||||||
| EventType::ErrorSelfNotInGroup(_) => 0,
|
| EventType::ErrorSelfNotInGroup(_)
|
||||||
|
| EventType::BackgroundFetchCompletedForAllAccounts => 0,
|
||||||
EventType::MsgsChanged { chat_id, .. }
|
EventType::MsgsChanged { chat_id, .. }
|
||||||
| EventType::ReactionsChanged { chat_id, .. }
|
| EventType::ReactionsChanged { chat_id, .. }
|
||||||
| EventType::IncomingMsg { chat_id, .. }
|
| EventType::IncomingMsg { chat_id, .. }
|
||||||
@@ -646,6 +648,7 @@ pub unsafe extern "C" fn dc_event_get_data2_int(event: *mut dc_event_t) -> libc:
|
|||||||
| EventType::WebxdcInstanceDeleted { .. }
|
| EventType::WebxdcInstanceDeleted { .. }
|
||||||
| EventType::IncomingMsgBunch { .. }
|
| EventType::IncomingMsgBunch { .. }
|
||||||
| EventType::SelfavatarChanged
|
| EventType::SelfavatarChanged
|
||||||
|
| EventType::BackgroundFetchCompletedForAllAccounts
|
||||||
| EventType::ConfigSynced { .. } => 0,
|
| EventType::ConfigSynced { .. } => 0,
|
||||||
EventType::ChatModified(_) => 0,
|
EventType::ChatModified(_) => 0,
|
||||||
EventType::MsgsChanged { msg_id, .. }
|
EventType::MsgsChanged { msg_id, .. }
|
||||||
@@ -708,6 +711,7 @@ pub unsafe extern "C" fn dc_event_get_data2_str(event: *mut dc_event_t) -> *mut
|
|||||||
| EventType::SelfavatarChanged
|
| EventType::SelfavatarChanged
|
||||||
| EventType::WebxdcStatusUpdate { .. }
|
| EventType::WebxdcStatusUpdate { .. }
|
||||||
| EventType::WebxdcInstanceDeleted { .. }
|
| EventType::WebxdcInstanceDeleted { .. }
|
||||||
|
| EventType::BackgroundFetchCompletedForAllAccounts
|
||||||
| EventType::ChatEphemeralTimerModified { .. } => ptr::null_mut(),
|
| EventType::ChatEphemeralTimerModified { .. } => ptr::null_mut(),
|
||||||
EventType::ConfigureProgress { comment, .. } => {
|
EventType::ConfigureProgress { comment, .. } => {
|
||||||
if let Some(comment) = comment {
|
if let Some(comment) = comment {
|
||||||
|
|||||||
@@ -245,6 +245,13 @@ pub enum EventType {
|
|||||||
/// Inform that a message containing a webxdc instance has been deleted
|
/// Inform that a message containing a webxdc instance has been deleted
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
WebxdcInstanceDeleted { msg_id: u32 },
|
WebxdcInstanceDeleted { msg_id: u32 },
|
||||||
|
|
||||||
|
/// Tells that the Background fetch was completed (or timed out).
|
||||||
|
/// This event acts as a marker, when you reach this event you can be sure
|
||||||
|
/// that all events emitted during the background fetch were processed.
|
||||||
|
///
|
||||||
|
/// This event is only emitted by the account manager
|
||||||
|
BackgroundFetchCompletedForAllAccounts,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<CoreEventType> for EventType {
|
impl From<CoreEventType> for EventType {
|
||||||
@@ -353,6 +360,9 @@ impl From<CoreEventType> for EventType {
|
|||||||
CoreEventType::WebxdcInstanceDeleted { msg_id } => WebxdcInstanceDeleted {
|
CoreEventType::WebxdcInstanceDeleted { msg_id } => WebxdcInstanceDeleted {
|
||||||
msg_id: msg_id.to_u32(),
|
msg_id: msg_id.to_u32(),
|
||||||
},
|
},
|
||||||
|
CoreEventType::BackgroundFetchCompletedForAllAccounts => {
|
||||||
|
BackgroundFetchCompletedForAllAccounts
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ module.exports = {
|
|||||||
DC_DOWNLOAD_FAILURE: 20,
|
DC_DOWNLOAD_FAILURE: 20,
|
||||||
DC_DOWNLOAD_IN_PROGRESS: 1000,
|
DC_DOWNLOAD_IN_PROGRESS: 1000,
|
||||||
DC_DOWNLOAD_UNDECIPHERABLE: 30,
|
DC_DOWNLOAD_UNDECIPHERABLE: 30,
|
||||||
|
DC_EVENT_BACKGROUND_FETCH_COMPLETED_FOR_ALL_ACCOUNTS: 2200,
|
||||||
DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED: 2021,
|
DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED: 2021,
|
||||||
DC_EVENT_CHAT_MODIFIED: 2020,
|
DC_EVENT_CHAT_MODIFIED: 2020,
|
||||||
DC_EVENT_CONFIGURE_PROGRESS: 2041,
|
DC_EVENT_CONFIGURE_PROGRESS: 2041,
|
||||||
|
|||||||
@@ -36,5 +36,6 @@ module.exports = {
|
|||||||
2110: 'DC_EVENT_SELFAVATAR_CHANGED',
|
2110: 'DC_EVENT_SELFAVATAR_CHANGED',
|
||||||
2111: 'DC_EVENT_CONFIG_SYNCED',
|
2111: 'DC_EVENT_CONFIG_SYNCED',
|
||||||
2120: 'DC_EVENT_WEBXDC_STATUS_UPDATE',
|
2120: 'DC_EVENT_WEBXDC_STATUS_UPDATE',
|
||||||
2121: 'DC_EVENT_WEBXDC_INSTANCE_DELETED'
|
2121: 'DC_EVENT_WEBXDC_INSTANCE_DELETED',
|
||||||
|
2200: 'DC_EVENT_BACKGROUND_FETCH_COMPLETED_FOR_ALL_ACCOUNTS'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ export enum C {
|
|||||||
DC_DOWNLOAD_FAILURE = 20,
|
DC_DOWNLOAD_FAILURE = 20,
|
||||||
DC_DOWNLOAD_IN_PROGRESS = 1000,
|
DC_DOWNLOAD_IN_PROGRESS = 1000,
|
||||||
DC_DOWNLOAD_UNDECIPHERABLE = 30,
|
DC_DOWNLOAD_UNDECIPHERABLE = 30,
|
||||||
|
DC_EVENT_BACKGROUND_FETCH_COMPLETED_FOR_ALL_ACCOUNTS = 2200,
|
||||||
DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED = 2021,
|
DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED = 2021,
|
||||||
DC_EVENT_CHAT_MODIFIED = 2020,
|
DC_EVENT_CHAT_MODIFIED = 2020,
|
||||||
DC_EVENT_CONFIGURE_PROGRESS = 2041,
|
DC_EVENT_CONFIGURE_PROGRESS = 2041,
|
||||||
@@ -326,4 +327,5 @@ export const EventId2EventName: { [key: number]: string } = {
|
|||||||
2111: 'DC_EVENT_CONFIG_SYNCED',
|
2111: 'DC_EVENT_CONFIG_SYNCED',
|
||||||
2120: 'DC_EVENT_WEBXDC_STATUS_UPDATE',
|
2120: 'DC_EVENT_WEBXDC_STATUS_UPDATE',
|
||||||
2121: 'DC_EVENT_WEBXDC_INSTANCE_DELETED',
|
2121: 'DC_EVENT_WEBXDC_INSTANCE_DELETED',
|
||||||
|
2200: 'DC_EVENT_BACKGROUND_FETCH_COMPLETED_FOR_ALL_ACCOUNTS',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -309,14 +309,17 @@ impl Accounts {
|
|||||||
.map(background_fetch_and_log_error),
|
.map(background_fetch_and_log_error),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
|
self.emit_event(EventType::BackgroundFetchCompletedForAllAccounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs a background fetch for all accounts in parallel with a timeout.
|
/// Performs a background fetch for all accounts in parallel with a timeout.
|
||||||
///
|
///
|
||||||
/// If you want no timeout, then use [Accounts::background_fetch] instead.
|
/// If you want no timeout, then use [Accounts::background_fetch] instead.
|
||||||
pub async fn background_fetch_with_timeout(&self, timeout: std::time::Duration) -> Result<()> {
|
pub async fn background_fetch_with_timeout(&self, timeout: std::time::Duration) -> Result<()> {
|
||||||
tokio::time::timeout(timeout, self.background_fetch()).await?;
|
let result = tokio::time::timeout(timeout, self.background_fetch()).await;
|
||||||
Ok(())
|
self.emit_event(EventType::BackgroundFetchCompletedForAllAccounts);
|
||||||
|
result.map_err(|err| err.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Emits a single event.
|
/// Emits a single event.
|
||||||
|
|||||||
@@ -287,4 +287,11 @@ pub enum EventType {
|
|||||||
/// ID of the deleted message.
|
/// ID of the deleted message.
|
||||||
msg_id: MsgId,
|
msg_id: MsgId,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/// Tells that the Background fetch was completed (or timed out).
|
||||||
|
/// This event acts as a marker, when you reach this event you can be sure
|
||||||
|
/// that all events emitted during the background fetch were processed.
|
||||||
|
///
|
||||||
|
/// This event is only emitted by the account manager
|
||||||
|
BackgroundFetchCompletedForAllAccounts,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user