use crate::{
OwnedDeviceId, OwnedUserId,
encryption::{CrossSigningKey, DeviceKeys},
};
use salvo::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(ToSchema, Serialize, Debug)]
pub struct DevicesResBody {
pub user_id: OwnedUserId,
pub stream_id: u64,
pub devices: Vec<Device>,
#[serde(skip_serializing_if = "Option::is_none")]
pub master_key: Option<CrossSigningKey>,
#[serde(skip_serializing_if = "Option::is_none")]
pub self_signing_key: Option<CrossSigningKey>,
}
impl DevicesResBody {
pub fn new(user_id: OwnedUserId, stream_id: u64) -> Self {
Self {
user_id,
stream_id,
devices: Vec::new(),
master_key: None,
self_signing_key: None,
}
}
}
#[derive(ToSchema, Clone, Debug, Serialize, Deserialize)]
pub struct Device {
pub device_id: OwnedDeviceId,
pub keys: DeviceKeys,
#[serde(skip_serializing_if = "Option::is_none")]
pub device_display_name: Option<String>,
}
impl Device {
pub fn new(device_id: OwnedDeviceId, keys: DeviceKeys) -> Self {
Self {
device_id,
keys,
device_display_name: None,
}
}
}