mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 09:26:29 +03:00
Add check_qr function to jsonrpc
This commit is contained in:
@@ -22,6 +22,7 @@ pub mod events;
|
|||||||
pub mod types;
|
pub mod types;
|
||||||
|
|
||||||
use crate::api::types::chat_list::{get_chat_list_item_by_id, ChatListItemFetchResult};
|
use crate::api::types::chat_list::{get_chat_list_item_by_id, ChatListItemFetchResult};
|
||||||
|
use crate::api::types::QrObject;
|
||||||
|
|
||||||
use types::account::Account;
|
use types::account::Account;
|
||||||
use types::chat::FullChat;
|
use types::chat::FullChat;
|
||||||
@@ -202,6 +203,14 @@ impl CommandApi {
|
|||||||
qr::set_config_from_qr(&ctx, &qr_content).await
|
qr::set_config_from_qr(&ctx, &qr_content).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn check_qr(&self, account_id: u32, qr_content: String) -> Result<QrObject> {
|
||||||
|
println!("HELLO FROM CHECK_QR");
|
||||||
|
let ctx = self.get_context(account_id).await?;
|
||||||
|
let qr = qr::check_qr(&ctx, &qr_content).await?;
|
||||||
|
let qr_object = QrObject::from(qr);
|
||||||
|
Ok(qr_object)
|
||||||
|
}
|
||||||
|
|
||||||
async fn get_config(&self, account_id: u32, key: String) -> Result<Option<String>> {
|
async fn get_config(&self, account_id: u32, key: String) -> Result<Option<String>> {
|
||||||
let ctx = self.get_context(account_id).await?;
|
let ctx = self.get_context(account_id).await?;
|
||||||
get_config(&ctx, &key).await
|
get_config(&ctx, &key).await
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
use deltachat::qr::Qr;
|
||||||
|
use serde::Serialize;
|
||||||
|
use typescript_type_def::TypeDef;
|
||||||
|
|
||||||
pub mod account;
|
pub mod account;
|
||||||
pub mod chat;
|
pub mod chat;
|
||||||
pub mod chat_list;
|
pub mod chat_list;
|
||||||
@@ -17,3 +21,214 @@ fn maybe_empty_string_to_option(string: String) -> Option<String> {
|
|||||||
Some(string)
|
Some(string)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, TypeDef)]
|
||||||
|
#[serde(rename = "Qr", rename_all = "camelCase")]
|
||||||
|
#[serde(tag = "type")]
|
||||||
|
pub enum QrObject {
|
||||||
|
AskVerifyContact {
|
||||||
|
contact_id: u32,
|
||||||
|
fingerprint: String,
|
||||||
|
invitenumber: String,
|
||||||
|
authcode: String,
|
||||||
|
},
|
||||||
|
AskVerifyGroup {
|
||||||
|
grpname: String,
|
||||||
|
grpid: String,
|
||||||
|
contact_id: u32,
|
||||||
|
fingerprint: String,
|
||||||
|
invitenumber: String,
|
||||||
|
authcode: String,
|
||||||
|
},
|
||||||
|
FprOk {
|
||||||
|
contact_id: u32,
|
||||||
|
},
|
||||||
|
FprMismatch {
|
||||||
|
contact_id: Option<u32>,
|
||||||
|
},
|
||||||
|
FprWithoutAddr {
|
||||||
|
fingerprint: String,
|
||||||
|
},
|
||||||
|
Account {
|
||||||
|
domain: String,
|
||||||
|
},
|
||||||
|
WebrtcInstance {
|
||||||
|
domain: String,
|
||||||
|
instance_pattern: String,
|
||||||
|
},
|
||||||
|
Addr {
|
||||||
|
contact_id: u32,
|
||||||
|
},
|
||||||
|
Url {
|
||||||
|
url: String,
|
||||||
|
},
|
||||||
|
Text {
|
||||||
|
text: String,
|
||||||
|
},
|
||||||
|
WithdrawVerifyContact {
|
||||||
|
contact_id: u32,
|
||||||
|
fingerprint: String,
|
||||||
|
invitenumber: String,
|
||||||
|
authcode: String,
|
||||||
|
},
|
||||||
|
WithdrawVerifyGroup {
|
||||||
|
grpname: String,
|
||||||
|
grpid: String,
|
||||||
|
contact_id: u32,
|
||||||
|
fingerprint: String,
|
||||||
|
invitenumber: String,
|
||||||
|
authcode: String,
|
||||||
|
},
|
||||||
|
ReviveVerifyContact {
|
||||||
|
contact_id: u32,
|
||||||
|
fingerprint: String,
|
||||||
|
invitenumber: String,
|
||||||
|
authcode: String,
|
||||||
|
},
|
||||||
|
ReviveVerifyGroup {
|
||||||
|
grpname: String,
|
||||||
|
grpid: String,
|
||||||
|
contact_id: u32,
|
||||||
|
fingerprint: String,
|
||||||
|
invitenumber: String,
|
||||||
|
authcode: String,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Qr> for QrObject {
|
||||||
|
fn from(qr: Qr) -> Self {
|
||||||
|
match qr {
|
||||||
|
Qr::AskVerifyContact {
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
} => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::AskVerifyContact {
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Qr::AskVerifyGroup {
|
||||||
|
grpname,
|
||||||
|
grpid,
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
} => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::AskVerifyGroup {
|
||||||
|
grpname,
|
||||||
|
grpid,
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Qr::FprOk { contact_id } => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
QrObject::FprOk { contact_id }
|
||||||
|
}
|
||||||
|
Qr::FprMismatch { contact_id } => {
|
||||||
|
let contact_id = match contact_id {
|
||||||
|
Some(contact_id) => Some(contact_id.to_u32()),
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
QrObject::FprMismatch { contact_id }
|
||||||
|
}
|
||||||
|
Qr::FprWithoutAddr { fingerprint } => {
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::FprWithoutAddr { fingerprint }
|
||||||
|
}
|
||||||
|
Qr::Account { domain } => QrObject::Account { domain },
|
||||||
|
Qr::WebrtcInstance {
|
||||||
|
domain,
|
||||||
|
instance_pattern,
|
||||||
|
} => QrObject::WebrtcInstance {
|
||||||
|
domain,
|
||||||
|
instance_pattern,
|
||||||
|
},
|
||||||
|
Qr::Addr { contact_id } => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
QrObject::Addr { contact_id }
|
||||||
|
}
|
||||||
|
Qr::Url { url } => QrObject::Url { url },
|
||||||
|
Qr::Text { text } => QrObject::Text { text },
|
||||||
|
Qr::WithdrawVerifyContact {
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
} => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::WithdrawVerifyContact {
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Qr::WithdrawVerifyGroup {
|
||||||
|
grpname,
|
||||||
|
grpid,
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
} => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::WithdrawVerifyGroup {
|
||||||
|
grpname,
|
||||||
|
grpid,
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Qr::ReviveVerifyContact {
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
} => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::ReviveVerifyContact {
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Qr::ReviveVerifyGroup {
|
||||||
|
grpname,
|
||||||
|
grpid,
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
} => {
|
||||||
|
let contact_id = contact_id.to_u32();
|
||||||
|
let fingerprint = fingerprint.to_string();
|
||||||
|
QrObject::ReviveVerifyGroup {
|
||||||
|
grpname,
|
||||||
|
grpid,
|
||||||
|
contact_id,
|
||||||
|
fingerprint,
|
||||||
|
invitenumber,
|
||||||
|
authcode,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -123,6 +123,11 @@ export class RawClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public checkQr(accountId: T.U32, qrContent: string): Promise<T.Qr> {
|
||||||
|
return (this._transport.request('check_qr', [accountId, qrContent] as RPC.Params)) as Promise<T.Qr>;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public getConfig(accountId: T.U32, key: string): Promise<(string|null)> {
|
public getConfig(accountId: T.U32, key: string): Promise<(string|null)> {
|
||||||
return (this._transport.request('get_config', [accountId, key] as RPC.Params)) as Promise<(string|null)>;
|
return (this._transport.request('get_config', [accountId, key] as RPC.Params)) as Promise<(string|null)>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
export type U32=number;
|
export type U32=number;
|
||||||
export type Account=(({"type":"Configured";}&{"id":U32;"displayName":(string|null);"addr":(string|null);"profileImage":(string|null);"color":string;})|({"type":"Unconfigured";}&{"id":U32;}));
|
export type Account=(({"type":"Configured";}&{"id":U32;"displayName":(string|null);"addr":(string|null);"profileImage":(string|null);"color":string;})|({"type":"Unconfigured";}&{"id":U32;}));
|
||||||
export type ProviderInfo={"beforeLoginHint":string;"overviewPage":string;"status":U32;};
|
export type ProviderInfo={"beforeLoginHint":string;"overviewPage":string;"status":U32;};
|
||||||
|
export type Qr=(({"type":"askVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"askVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"fprOk";}&{"contact_id":U32;})|({"type":"fprMismatch";}&{"contact_id":(U32|null);})|({"type":"fprWithoutAddr";}&{"fingerprint":string;})|({"type":"account";}&{"domain":string;})|({"type":"webrtcInstance";}&{"domain":string;"instance_pattern":string;})|({"type":"addr";}&{"contact_id":U32;})|({"type":"url";}&{"url":string;})|({"type":"text";}&{"text":string;})|({"type":"withdrawVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"withdrawVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"reviveVerifyContact";}&{"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;})|({"type":"reviveVerifyGroup";}&{"grpname":string;"grpid":string;"contact_id":U32;"fingerprint":string;"invitenumber":string;"authcode":string;}));
|
||||||
export type Usize=number;
|
export type Usize=number;
|
||||||
export type ChatListEntry=[U32,U32];
|
export type ChatListEntry=[U32,U32];
|
||||||
export type I64=number;
|
export type I64=number;
|
||||||
@@ -94,4 +95,4 @@ export type WebxdcMessageInfo={
|
|||||||
* Implementations may offer an menu or a button to open this URL.
|
* Implementations may offer an menu or a button to open this URL.
|
||||||
*/
|
*/
|
||||||
"sourceCodeUrl":(string|null);};
|
"sourceCodeUrl":(string|null);};
|
||||||
export type __AllTyps=[string,boolean,Record<string,string>,U32,U32,null,(U32)[],U32,null,(U32|null),(Account)[],U32,Account,U32,string,(ProviderInfo|null),U32,boolean,U32,Record<string,string>,U32,string,(string|null),null,U32,Record<string,(string|null)>,null,U32,string,null,U32,string,(string|null),U32,(string)[],Record<string,(string|null)>,U32,null,U32,null,U32,(U32)[],U32,U32,Usize,U32,string,U32,U32,string,null,U32,(U32|null),(string|null),(U32|null),(ChatListEntry)[],U32,(ChatListEntry)[],Record<U32,ChatListItemFetchResult>,U32,U32,FullChat,U32,U32,null,U32,U32,null,U32,string,string,U32,U32,U32,U32,(U32)[],U32,U32,Message,U32,(U32)[],Record<U32,Message>,U32,U32,Contact,U32,string,(string|null),U32,U32,U32,U32,U32,U32,null,U32,U32,null,U32,(Contact)[],U32,U32,(string|null),(U32)[],U32,U32,(string|null),(Contact)[],U32,(U32)[],Record<U32,Contact>,U32,U32,Viewtype,(Viewtype|null),(Viewtype|null),(U32)[],U32,U32,string,string,null,U32,U32,U32,string,U32,U32,WebxdcMessageInfo,U32,string,U32,U32];
|
export type __AllTyps=[string,boolean,Record<string,string>,U32,U32,null,(U32)[],U32,null,(U32|null),(Account)[],U32,Account,U32,string,(ProviderInfo|null),U32,boolean,U32,Record<string,string>,U32,string,(string|null),null,U32,Record<string,(string|null)>,null,U32,string,null,U32,string,Qr,U32,string,(string|null),U32,(string)[],Record<string,(string|null)>,U32,null,U32,null,U32,(U32)[],U32,U32,Usize,U32,string,U32,U32,string,null,U32,(U32|null),(string|null),(U32|null),(ChatListEntry)[],U32,(ChatListEntry)[],Record<U32,ChatListItemFetchResult>,U32,U32,FullChat,U32,U32,null,U32,U32,null,U32,string,string,U32,U32,U32,U32,(U32)[],U32,U32,Message,U32,(U32)[],Record<U32,Message>,U32,U32,Contact,U32,string,(string|null),U32,U32,U32,U32,U32,U32,null,U32,U32,null,U32,(Contact)[],U32,U32,(string|null),(U32)[],U32,U32,(string|null),(Contact)[],U32,(U32)[],Record<U32,Contact>,U32,U32,Viewtype,(Viewtype|null),(Viewtype|null),(U32)[],U32,U32,string,string,null,U32,U32,U32,string,U32,U32,WebxdcMessageInfo,U32,string,U32,U32];
|
||||||
|
|||||||
Reference in New Issue
Block a user