mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
api: jsonrpc: add get_push_state to check push notification state (#7356)
This commit is contained in:
@@ -53,6 +53,7 @@ use types::contact::{ContactObject, VcardContact};
|
|||||||
use types::events::Event;
|
use types::events::Event;
|
||||||
use types::http::HttpResponse;
|
use types::http::HttpResponse;
|
||||||
use types::message::{MessageData, MessageObject, MessageReadReceipt};
|
use types::message::{MessageData, MessageObject, MessageReadReceipt};
|
||||||
|
use types::notify_state::JsonrpcNotifyState;
|
||||||
use types::provider_info::ProviderInfo;
|
use types::provider_info::ProviderInfo;
|
||||||
use types::reactions::JsonrpcReactions;
|
use types::reactions::JsonrpcReactions;
|
||||||
use types::webxdc::WebxdcMessageInfo;
|
use types::webxdc::WebxdcMessageInfo;
|
||||||
@@ -312,6 +313,12 @@ impl CommandApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the current push notification state.
|
||||||
|
async fn get_push_state(&self, account_id: u32) -> Result<JsonrpcNotifyState> {
|
||||||
|
let ctx = self.get_context(account_id).await?;
|
||||||
|
Ok(ctx.push_state().await.into())
|
||||||
|
}
|
||||||
|
|
||||||
/// Get the combined filesize of an account in bytes
|
/// Get the combined filesize of an account in bytes
|
||||||
async fn get_account_file_size(&self, account_id: u32) -> Result<u64> {
|
async fn get_account_file_size(&self, account_id: u32) -> Result<u64> {
|
||||||
let ctx = self.get_context(account_id).await?;
|
let ctx = self.get_context(account_id).await?;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ pub mod http;
|
|||||||
pub mod location;
|
pub mod location;
|
||||||
pub mod login_param;
|
pub mod login_param;
|
||||||
pub mod message;
|
pub mod message;
|
||||||
|
pub mod notify_state;
|
||||||
pub mod provider_info;
|
pub mod provider_info;
|
||||||
pub mod qr;
|
pub mod qr;
|
||||||
pub mod reactions;
|
pub mod reactions;
|
||||||
|
|||||||
26
deltachat-jsonrpc/src/api/types/notify_state.rs
Normal file
26
deltachat-jsonrpc/src/api/types/notify_state.rs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
use deltachat::push::NotifyState;
|
||||||
|
use serde::Serialize;
|
||||||
|
use typescript_type_def::TypeDef;
|
||||||
|
|
||||||
|
#[derive(Serialize, TypeDef, schemars::JsonSchema)]
|
||||||
|
#[serde(rename = "NotifyState")]
|
||||||
|
pub enum JsonrpcNotifyState {
|
||||||
|
/// Not subscribed to push notifications.
|
||||||
|
NotConnected,
|
||||||
|
|
||||||
|
/// Subscribed to heartbeat push notifications.
|
||||||
|
Heartbeat,
|
||||||
|
|
||||||
|
/// Subscribed to push notifications for new messages.
|
||||||
|
Connected,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<NotifyState> for JsonrpcNotifyState {
|
||||||
|
fn from(state: NotifyState) -> Self {
|
||||||
|
match state {
|
||||||
|
NotifyState::NotConnected => Self::NotConnected,
|
||||||
|
NotifyState::Heartbeat => Self::Heartbeat,
|
||||||
|
NotifyState::Connected => Self::Connected,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -98,7 +98,7 @@ pub mod color;
|
|||||||
pub mod html;
|
pub mod html;
|
||||||
pub mod net;
|
pub mod net;
|
||||||
pub mod plaintext;
|
pub mod plaintext;
|
||||||
mod push;
|
pub mod push;
|
||||||
mod stats;
|
mod stats;
|
||||||
pub use stats::SecurejoinSource;
|
pub use stats::SecurejoinSource;
|
||||||
pub use stats::SecurejoinUiPath;
|
pub use stats::SecurejoinUiPath;
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ pub(crate) struct PushSubscriberState {
|
|||||||
heartbeat_subscribed: bool,
|
heartbeat_subscribed: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Push notification state
|
||||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive)]
|
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive)]
|
||||||
#[repr(i8)]
|
#[repr(i8)]
|
||||||
pub enum NotifyState {
|
pub enum NotifyState {
|
||||||
|
|||||||
Reference in New Issue
Block a user