diff options
Diffstat (limited to 'src/euph/room.rs')
-rw-r--r-- | src/euph/room.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/euph/room.rs b/src/euph/room.rs index 3d332fd..c4397ec 100644 --- a/src/euph/room.rs +++ b/src/euph/room.rs @@ -56,6 +56,7 @@ enum Event { #[derive(Debug)] struct State { name: String, + domain: String, username: Option<String>, force_username: bool, password: Option<String>, @@ -79,16 +80,17 @@ impl State { ) { let vault = self.vault.clone(); let name = self.name.clone(); + let domain = self.domain.clone(); let result = if ephemeral { select! { _ = canary => Ok(()), - _ = Self::reconnect(&vault, &name, &event_tx) => Ok(()), + _ = Self::reconnect(&vault, &name, &domain, &event_tx) => Ok(()), e = self.handle_events(&mut event_rx, &euph_room_event_tx) => e, } } else { select! { _ = canary => Ok(()), - _ = Self::reconnect(&vault, &name, &event_tx) => Ok(()), + _ = Self::reconnect(&vault, &name, &domain, &event_tx) => Ok(()), e = self.handle_events(&mut event_rx, &euph_room_event_tx) => e, _ = Self::regularly_request_logs(&event_tx) => Ok(()), } @@ -107,11 +109,12 @@ impl State { async fn reconnect( vault: &EuphRoomVault, name: &str, + domain: &str, event_tx: &mpsc::UnboundedSender<Event>, ) -> anyhow::Result<()> { loop { info!("e&{}: connecting", name); - let connected = if let Some((conn_tx, mut conn_rx)) = Self::connect(vault, name).await? + let connected = if let Some((conn_tx, mut conn_rx)) = Self::connect(vault, name, domain).await? { info!("e&{}: connected", name); event_tx.send(Event::Connected(conn_tx))?; @@ -164,13 +167,14 @@ impl State { async fn connect( vault: &EuphRoomVault, name: &str, + domain: &str, ) -> anyhow::Result<Option<(ConnTx, ConnRx)>> { // TODO Set user agent? let cookies = Self::get_cookies(vault.vault()).await; let cookies = HeaderValue::from_str(&cookies).expect("valid cookies"); - match euphoxide::connect("euphoria.io", name, true, Some(cookies), TIMEOUT).await { + match euphoxide::connect(domain, name, true, Some(cookies), TIMEOUT).await { Ok((tx, rx, set_cookies)) => { Self::update_cookies(vault.vault(), &set_cookies); Ok(Some((tx, rx))) @@ -465,7 +469,8 @@ impl Room { let ephemeral = vault.vault().vault().ephemeral(); let state = State { - name: vault.room().to_string(), + name: vault.local_room().to_string(), + domain: vault.domain().to_string(), username, force_username, password, |