wip: refactor
This commit is contained in:
@@ -2,12 +2,42 @@ use gpui::*;
|
||||
use nostr_sdk::prelude::*;
|
||||
use serde::Deserialize;
|
||||
|
||||
use crate::utils::get_room_id;
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Deserialize)]
|
||||
pub struct Room {
|
||||
pub id: SharedString,
|
||||
pub owner: PublicKey,
|
||||
pub members: Vec<PublicKey>,
|
||||
pub last_seen: Timestamp,
|
||||
pub title: Option<String>,
|
||||
pub title: Option<SharedString>,
|
||||
}
|
||||
|
||||
impl Room {
|
||||
pub fn new(event: Event) -> Self {
|
||||
let owner = event.pubkey;
|
||||
let last_seen = event.created_at;
|
||||
// Get all members from event's tag
|
||||
let members: Vec<PublicKey> = event.tags.public_keys().copied().collect();
|
||||
// Get title from event's tag
|
||||
let title = if let Some(tag) = event.tags.find(TagKind::Title) {
|
||||
tag.content().map(|s| s.to_owned().into())
|
||||
} else {
|
||||
// TODO: create random name?
|
||||
None
|
||||
};
|
||||
|
||||
// Get unique id based on members
|
||||
let id = get_room_id(&owner, &members).into();
|
||||
|
||||
Self {
|
||||
id,
|
||||
title,
|
||||
members,
|
||||
last_seen,
|
||||
owner,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
|
||||
Reference in New Issue
Block a user