Fix a circular reference between Client and UserStore

Before this change once the UserStore had been created, the Client would
never be dropped.
This commit is contained in:
Conrad Irwin 2024-01-22 21:59:48 -07:00
parent 0b1b758f02
commit 34efb23bf6

View File

@ -146,7 +146,13 @@ impl UserStore {
}),
_maintain_current_user: cx.spawn(|this, mut cx| async move {
let mut status = client.status();
let weak = Arc::downgrade(&client);
drop(client);
while let Some(status) = status.next().await {
// if the client is dropped, the app is shutting down.
let Some(client) = weak.upgrade() else {
return Ok(());
};
match status {
Status::Connected { .. } => {
if let Some(user_id) = client.user_id() {