Support leaving rooms (#45)

This commit is contained in:
Ulyssa 2023-04-28 16:52:33 -07:00
parent 50023bad40
commit a5c25f2487
No known key found for this signature in database
GPG key ID: 1B3965A3D18B9B64
9 changed files with 177 additions and 37 deletions

View file

@ -43,11 +43,13 @@ use modalkit::{
WriteFlags,
},
editing::completion::CompletionList,
input::dialog::PromptYesNo,
input::InputContext,
widgets::{TermOffset, TerminalCursor, WindowOps},
};
use crate::base::{
IambAction,
IambError,
IambId,
IambInfo,
@ -218,6 +220,24 @@ impl RoomState {
Err(IambError::NotJoined.into())
}
},
RoomAction::Leave(skip_confirm) => {
if let Some(room) = store.application.worker.client.get_joined_room(self.id()) {
if skip_confirm {
room.leave().await.map_err(IambError::from)?;
Ok(vec![])
} else {
let msg = "Do you really want to leave this room?";
let leave = IambAction::Room(RoomAction::Leave(true));
let prompt = PromptYesNo::new(msg, vec![Action::from(leave)]);
let prompt = Box::new(prompt);
Err(UIError::NeedConfirm(prompt))
}
} else {
Err(IambError::NotJoined.into())
}
},
RoomAction::Members(mut cmd) => {
let width = Count::Exact(30);
let act =