Don't download room history in ephemeral mode

This commit is contained in:
Joscha 2022-08-22 21:01:09 +02:00
parent 68bd6042c5
commit 4956027027

View file

@ -74,14 +74,23 @@ impl State {
event_tx: mpsc::UnboundedSender<Event>, event_tx: mpsc::UnboundedSender<Event>,
mut event_rx: mpsc::UnboundedReceiver<Event>, mut event_rx: mpsc::UnboundedReceiver<Event>,
euph_room_event_tx: mpsc::UnboundedSender<EuphRoomEvent>, euph_room_event_tx: mpsc::UnboundedSender<EuphRoomEvent>,
ephemeral: bool,
) { ) {
let vault = self.vault.clone(); let vault = self.vault.clone();
let name = self.name.clone(); let name = self.name.clone();
let result = select! { let result = if ephemeral {
_ = canary => Ok(()), select! {
_ = Self::reconnect(&vault, &name, &event_tx) => Ok(()), _ = canary => Ok(()),
_ = Self::regularly_request_logs(&event_tx) => Ok(()), _ = Self::reconnect(&vault, &name, &event_tx) => Ok(()),
e = self.handle_events(&mut event_rx, &euph_room_event_tx) => e, e = self.handle_events(&mut event_rx, &euph_room_event_tx) => e,
}
} else {
select! {
_ = canary => Ok(()),
_ = Self::reconnect(&vault, &name, &event_tx) => Ok(()),
e = self.handle_events(&mut event_rx, &euph_room_event_tx) => e,
_ = Self::regularly_request_logs(&event_tx) => Ok(()),
}
}; };
if let Err(e) = result { if let Err(e) = result {
@ -406,6 +415,7 @@ impl Room {
let (canary_tx, canary_rx) = oneshot::channel(); let (canary_tx, canary_rx) = oneshot::channel();
let (event_tx, event_rx) = mpsc::unbounded_channel(); let (event_tx, event_rx) = mpsc::unbounded_channel();
let (euph_room_event_tx, euph_room_event_rx) = mpsc::unbounded_channel(); let (euph_room_event_tx, euph_room_event_rx) = mpsc::unbounded_channel();
let ephemeral = vault.vault().ephemeral();
let state = State { let state = State {
name: vault.room().to_string(), name: vault.room().to_string(),
@ -415,7 +425,13 @@ impl Room {
requesting_logs: Arc::new(Mutex::new(false)), requesting_logs: Arc::new(Mutex::new(false)),
}; };
task::spawn(state.run(canary_rx, event_tx.clone(), event_rx, euph_room_event_tx)); task::spawn(state.run(
canary_rx,
event_tx.clone(),
event_rx,
euph_room_event_tx,
ephemeral,
));
let new_room = Self { let new_room = Self {
canary: canary_tx, canary: canary_tx,