Move functions to EuphVault and add EuphRoomVault

This commit moves all euph_* functions from Vault to EuphVault. The
previous EuphVault is now called EuphRoomVault and re-exports all
room-based functions from the EuphVault. It also implements MsgStore.
This commit is contained in:
Joscha 2022-09-09 18:52:54 +02:00
parent ff56bb2678
commit da2c3d86f5
9 changed files with 148 additions and 163 deletions

View file

@ -13,7 +13,6 @@ use toss::terminal::Terminal;
use crate::config;
use crate::euph::{self, EuphRoomEvent};
use crate::macros::{ok_or_return, some_or_return};
use crate::store::MsgStore;
use crate::ui::chat::{ChatState, Reaction};
use crate::ui::input::{key, InputEvent, KeyBindingsList};
use crate::ui::widgets::border::Border;
@ -25,7 +24,7 @@ use crate::ui::widgets::padding::Padding;
use crate::ui::widgets::text::Text;
use crate::ui::widgets::BoxedWidget;
use crate::ui::UiEvent;
use crate::vault::EuphVault;
use crate::vault::EuphRoomVault;
use super::account::{self, AccountUiState};
use super::links::{self, LinksState};
@ -65,13 +64,13 @@ pub struct EuphRoom {
ui_event_tx: mpsc::UnboundedSender<UiEvent>,
vault: EuphVault,
vault: EuphRoomVault,
room: Option<euph::Room>,
state: State,
popups: VecDeque<RoomPopup>,
chat: ChatState<euph::SmallMessage, EuphVault>,
chat: ChatState<euph::SmallMessage, EuphRoomVault>,
last_msg_sent: Option<oneshot::Receiver<Snowflake>>,
nick_list: ListState<String>,
@ -80,7 +79,7 @@ pub struct EuphRoom {
impl EuphRoom {
pub fn new(
config: config::EuphRoom,
vault: EuphVault,
vault: EuphRoomVault,
ui_event_tx: mpsc::UnboundedSender<UiEvent>,
) -> Self {
Self {
@ -368,7 +367,7 @@ impl EuphRoom {
}
key!('I') => {
if let Some(id) = self.chat.cursor().await {
if let Some(msg) = self.vault.msg(&id).await {
if let Some(msg) = self.vault.msg(id).await {
self.state = State::Links(LinksState::new(&msg.content));
}
}
@ -415,7 +414,7 @@ impl EuphRoom {
if let key!('I') = event {
if let Some(id) = self.chat.cursor().await {
if let Some(msg) = self.vault.msg(&id).await {
if let Some(msg) = self.vault.msg(id).await {
self.state = State::Links(LinksState::new(&msg.content));
}
}

View file

@ -82,7 +82,7 @@ impl Rooms {
self.euph_rooms.entry(name.clone()).or_insert_with(|| {
EuphRoom::new(
self.config.euph_room(&name),
self.vault.euph(name),
self.vault.euph().room(name),
self.ui_event_tx.clone(),
)
})
@ -97,7 +97,8 @@ impl Rooms {
async fn stabilize_rooms(&mut self) {
let mut rooms_set = self
.vault
.euph_rooms()
.euph()
.rooms()
.await
.into_iter()
.collect::<HashSet<_>>();
@ -484,7 +485,7 @@ impl Rooms {
key!(Esc) => self.state = State::ShowList,
key!(Enter) if editor.text() == *name => {
self.euph_rooms.remove(name);
self.vault.euph(name.clone()).delete();
self.vault.euph().room(name.clone()).delete();
self.state = State::ShowList;
}
_ => {