wip: refactor

This commit is contained in:
2024-12-25 13:44:16 +07:00
parent 37d810d9e5
commit 0745b497f0
13 changed files with 117 additions and 120 deletions

View File

@@ -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)]