Compare commits
1 Commits
master
...
chat-patch
| Author | SHA1 | Date | |
|---|---|---|---|
| fec148dcb5 |
@@ -10,7 +10,6 @@ pub enum Command {
|
|||||||
ChangeSubject(String),
|
ChangeSubject(String),
|
||||||
ChangeSigner(SignerKind),
|
ChangeSigner(SignerKind),
|
||||||
ToggleBackup,
|
ToggleBackup,
|
||||||
Subject,
|
|
||||||
Copy(PublicKey),
|
Copy(PublicKey),
|
||||||
Relays(PublicKey),
|
Relays(PublicKey),
|
||||||
Njump(PublicKey),
|
Njump(PublicKey),
|
||||||
|
|||||||
@@ -154,6 +154,7 @@ impl ChatPanel {
|
|||||||
|
|
||||||
// Define all functions that will run after the current cycle
|
// Define all functions that will run after the current cycle
|
||||||
cx.defer_in(window, |this, window, cx| {
|
cx.defer_in(window, |this, window, cx| {
|
||||||
|
this.connect(cx);
|
||||||
this.handle_notifications(cx);
|
this.handle_notifications(cx);
|
||||||
this.subscribe_room_events(window, cx);
|
this.subscribe_room_events(window, cx);
|
||||||
this.get_messages(window, cx);
|
this.get_messages(window, cx);
|
||||||
@@ -179,6 +180,14 @@ impl ChatPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get messaging relays and announcement for each member
|
||||||
|
fn connect(&mut self, cx: &mut Context<Self>) {
|
||||||
|
if let Some(room) = self.room.upgrade() {
|
||||||
|
let task = room.read(cx).connect(cx);
|
||||||
|
self.tasks.push(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Handle nostr notifications
|
/// Handle nostr notifications
|
||||||
fn handle_notifications(&mut self, cx: &mut Context<Self>) {
|
fn handle_notifications(&mut self, cx: &mut Context<Self>) {
|
||||||
let nostr = NostrRegistry::global(cx);
|
let nostr = NostrRegistry::global(cx);
|
||||||
@@ -247,11 +256,13 @@ impl ChatPanel {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Subscribe to room events
|
||||||
fn subscribe_room_events(&mut self, window: &mut Window, cx: &mut Context<Self>) {
|
fn subscribe_room_events(&mut self, window: &mut Window, cx: &mut Context<Self>) {
|
||||||
if let Some(room) = self.room.upgrade() {
|
if let Some(room) = self.room.upgrade() {
|
||||||
self.subscriptions.push(
|
self.subscriptions.push(cx.subscribe_in(
|
||||||
// Subscribe to room events
|
&room,
|
||||||
cx.subscribe_in(&room, window, move |this, _room, event, window, cx| {
|
window,
|
||||||
|
move |this, _room, event, window, cx| {
|
||||||
match event {
|
match event {
|
||||||
RoomEvent::Incoming(message) => {
|
RoomEvent::Incoming(message) => {
|
||||||
this.insert_message(message, false, cx);
|
this.insert_message(message, false, cx);
|
||||||
@@ -260,8 +271,8 @@ impl ChatPanel {
|
|||||||
this.get_messages(window, cx);
|
this.get_messages(window, cx);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}),
|
},
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -645,9 +656,6 @@ impl ChatPanel {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Command::Subject => {
|
|
||||||
self.open_subject(window, cx);
|
|
||||||
}
|
|
||||||
Command::Copy(public_key) => {
|
Command::Copy(public_key) => {
|
||||||
self.copy_author(public_key, cx);
|
self.copy_author(public_key, cx);
|
||||||
}
|
}
|
||||||
@@ -660,47 +668,6 @@ impl ChatPanel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open_subject(&mut self, window: &mut Window, cx: &mut Context<Self>) {
|
|
||||||
let subject_input = self.subject_input.clone();
|
|
||||||
|
|
||||||
window.open_modal(cx, move |this, _window, cx| {
|
|
||||||
let subject = subject_input.read(cx).value();
|
|
||||||
|
|
||||||
this.title("Change subject")
|
|
||||||
.show_close(true)
|
|
||||||
.confirm()
|
|
||||||
.child(
|
|
||||||
v_flex()
|
|
||||||
.gap_2()
|
|
||||||
.child(
|
|
||||||
v_flex()
|
|
||||||
.gap_1p5()
|
|
||||||
.child(
|
|
||||||
div()
|
|
||||||
.text_sm()
|
|
||||||
.text_color(cx.theme().text_muted)
|
|
||||||
.child(SharedString::from("Subject:")),
|
|
||||||
)
|
|
||||||
.child(TextInput::new(&subject_input).small()),
|
|
||||||
)
|
|
||||||
.child(
|
|
||||||
div()
|
|
||||||
.italic()
|
|
||||||
.text_xs()
|
|
||||||
.text_color(cx.theme().text_placeholder)
|
|
||||||
.child(SharedString::from(
|
|
||||||
"Subject will be updated when you send a new message.",
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.on_ok(move |_ev, window, cx| {
|
|
||||||
window
|
|
||||||
.dispatch_action(Box::new(Command::ChangeSubject(subject.to_string())), cx);
|
|
||||||
true
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
fn open_relays(&mut self, public_key: &PublicKey, window: &mut Window, cx: &mut Context<Self>) {
|
fn open_relays(&mut self, public_key: &PublicKey, window: &mut Window, cx: &mut Context<Self>) {
|
||||||
let profile = self.profile(public_key, cx);
|
let profile = self.profile(public_key, cx);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user