summaryrefslogtreecommitdiff
path: root/src/euph/room.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/euph/room.rs')
-rw-r--r--src/euph/room.rs15
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,