Browse Source

chore: Upgrade matrix-sdk and other cargo dependencies

merge-requests/1461/head
Kévin Commaille 3 years ago
parent
commit
ba09929fe6
No known key found for this signature in database
GPG Key ID: 29A48C1F03620416
  1. 761
      Cargo.lock
  2. 15
      Cargo.toml
  3. 2
      src/components/auth_dialog.rs
  4. 2
      src/contrib/qr_code_scanner/camera_paintable.rs
  5. 2
      src/login/advanced_dialog.rs
  6. 172
      src/session/model/room/mod.rs
  7. 6
      src/session/model/room/timeline/mod.rs
  8. 2
      src/session/model/room_list.rs
  9. 2
      src/session/model/session.rs
  10. 17
      src/session/view/content/room_details/general_page/mod.rs
  11. 2
      src/session/view/content/room_details/history_viewer/timeline.rs
  12. 4
      src/session/view/content/room_details/invite_subpage/invitee_list.rs
  13. 2
      src/session/view/content/room_history/attachment_dialog.rs
  14. 2
      src/session/view/content/room_history/message_row/content.rs
  15. 4
      src/session/view/content/room_history/mod.rs
  16. 2
      src/session/view/create_dm_dialog/dm_user.rs
  17. 4
      src/session/view/create_dm_dialog/dm_user_list.rs
  18. 2
      src/utils/media.rs
  19. 2
      src/utils/mod.rs

761
Cargo.lock generated

File diff suppressed because it is too large Load Diff

15
Cargo.toml

@ -26,10 +26,10 @@ ashpd = { version = "0.4", default-features = false, features = [
"tracing", "tracing",
"tokio", "tokio",
] } ] }
async-stream = "0.3"
djb_hash = "0.1" djb_hash = "0.1"
eyeball-im = "0.2" eyeball-im = "0.2"
futures = "0.3" futures-channel = "0.3"
futures-util = "0.3"
geo-uri = "0.2" geo-uri = "0.2"
gettext-rs = { version = "0.7", features = ["gettext-system"] } gettext-rs = { version = "0.7", features = ["gettext-system"] }
gst = { version = "0.20", package = "gstreamer" } gst = { version = "0.20", package = "gstreamer" }
@ -78,7 +78,7 @@ features = ["v4_10"]
[dependencies.matrix-sdk] [dependencies.matrix-sdk]
git = "https://github.com/matrix-org/matrix-rust-sdk.git" git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "1dea482e4399aaca5e96611e732ed06c3de2d4a6" rev = "4643bae28445e058080896a280083b32fd403146"
features = [ features = [
"socks", "socks",
"sso-login", "sso-login",
@ -89,14 +89,14 @@ features = [
[dependencies.matrix-sdk-ui] [dependencies.matrix-sdk-ui]
git = "https://github.com/matrix-org/matrix-rust-sdk.git" git = "https://github.com/matrix-org/matrix-rust-sdk.git"
rev = "1dea482e4399aaca5e96611e732ed06c3de2d4a6" rev = "4643bae28445e058080896a280083b32fd403146"
default-features = false default-features = false
features = ["e2e-encryption", "native-tls"] features = ["e2e-encryption", "native-tls"]
[dependencies.ruma] [dependencies.ruma]
# version = "0.8.2" # version = "0.8.2"
git = "https://github.com/ruma/ruma.git" git = "https://github.com/ruma/ruma.git"
rev = "a641adb4287267ba9c4778ac1ee83b4ecab11e26" rev = "f1772ae5bc1d849655498f51b0fec7b0ef10e339"
features = [ features = [
"unstable-unspecified", "unstable-unspecified",
"client-api-c", "client-api-c",
@ -117,8 +117,3 @@ version = "0.3"
[dependencies.sourceview] [dependencies.sourceview]
package = "sourceview5" package = "sourceview5"
version = "0.6" version = "0.6"
# FIXME: Remove when matrix-sdk dependencies don't pin zeroize (conflict with oo7)
[patch.crates-io.x25519-dalek]
git = "https://github.com/A6GibKm/x25519-dalek"
rev = "9f19028c34107eea87d37bcee2eb2b350ec34cfe"

2
src/components/auth_dialog.rs

@ -308,7 +308,7 @@ impl AuthDialog {
/// Lets the user complete the current stage. /// Lets the user complete the current stage.
async fn show_and_wait_for_response(&self) -> Result<(), AuthError> { async fn show_and_wait_for_response(&self) -> Result<(), AuthError> {
let (sender, receiver) = futures::channel::oneshot::channel(); let (sender, receiver) = futures_channel::oneshot::channel();
let sender = Cell::new(Some(sender)); let sender = Cell::new(Some(sender));
let handler_id = self.connect_response(move |_, response| { let handler_id = self.connect_response(move |_, response| {

2
src/contrib/qr_code_scanner/camera_paintable.rs

@ -207,7 +207,7 @@ impl CameraPaintable {
let paintable = sink.property::<gdk::Paintable>("paintable"); let paintable = sink.property::<gdk::Paintable>("paintable");
// Workaround: we wait for the first frame so that we don't show a black frame // Workaround: we wait for the first frame so that we don't show a black frame
let (sender, receiver) = futures::channel::oneshot::channel(); let (sender, receiver) = futures_channel::oneshot::channel();
let sender = Cell::new(Some(sender)); let sender = Cell::new(Some(sender));
paintable.connect_invalidate_contents(move |_| { paintable.connect_invalidate_contents(move |_| {

2
src/login/advanced_dialog.rs

@ -96,7 +96,7 @@ impl LoginAdvancedDialog {
} }
pub async fn run_future(&self) { pub async fn run_future(&self) {
let (sender, receiver) = futures::channel::oneshot::channel(); let (sender, receiver) = futures_channel::oneshot::channel();
let sender = Cell::new(Some(sender)); let sender = Cell::new(Some(sender));
self.connect_close_request(move |_| { self.connect_close_request(move |_| {

172
src/session/model/room/mod.rs

@ -368,12 +368,7 @@ impl Room {
let matrix_room = self.matrix_room(); let matrix_room = self.matrix_room();
let handle = spawn_tokio!(async move { let handle = spawn_tokio!(async move { matrix_room.forget().await });
match matrix_room {
MatrixRoom::Left(room) => room.forget().await,
_ => unimplemented!(),
}
});
match handle.await.unwrap() { match handle.await.unwrap() {
Ok(_) => { Ok(_) => {
@ -453,170 +448,182 @@ impl Room {
self.set_category_internal(category); self.set_category_internal(category);
let handle = spawn_tokio!(async move { let handle = spawn_tokio!(async move {
match matrix_room { match matrix_room.state() {
MatrixRoom::Invited(room) => match category { RoomState::Invited => match category {
RoomType::Invited => {} RoomType::Invited => {}
RoomType::Favorite => { RoomType::Favorite => {
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if !tags.contains_key(&TagName::Favorite) { if !tags.contains_key(&TagName::Favorite) {
room.set_tag(TagName::Favorite, TagInfo::new()).await?; matrix_room
.set_tag(TagName::Favorite, TagInfo::new())
.await?;
} }
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
} }
room.accept_invitation().await?; matrix_room.join().await?;
} }
RoomType::Normal => { RoomType::Normal => {
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
} }
if room.is_direct().await.unwrap_or_default() { if matrix_room.is_direct().await.unwrap_or_default() {
room.set_is_direct(false).await?; matrix_room.set_is_direct(false).await?;
} }
room.accept_invitation().await?; matrix_room.join().await?;
} }
RoomType::LowPriority => { RoomType::LowPriority => {
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
if !tags.contains_key(&TagName::LowPriority) { if !tags.contains_key(&TagName::LowPriority) {
room.set_tag(TagName::LowPriority, TagInfo::new()).await?; matrix_room
.set_tag(TagName::LowPriority, TagInfo::new())
.await?;
} }
} }
room.accept_invitation().await?; matrix_room.join().await?;
} }
RoomType::Left => { RoomType::Left => {
room.reject_invitation().await?; matrix_room.leave().await?;
} }
RoomType::Outdated => unimplemented!(), RoomType::Outdated => unimplemented!(),
RoomType::Space => unimplemented!(), RoomType::Space => unimplemented!(),
RoomType::Direct => { RoomType::Direct => {
if !room.is_direct().await.unwrap_or_default() { if !matrix_room.is_direct().await.unwrap_or_default() {
room.set_is_direct(true).await?; matrix_room.set_is_direct(true).await?;
} }
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
} }
room.accept_invitation().await?; matrix_room.join().await?;
} }
}, },
MatrixRoom::Joined(room) => match category { RoomState::Joined => match category {
RoomType::Invited => {} RoomType::Invited => {}
RoomType::Favorite => { RoomType::Favorite => {
room.set_tag(TagName::Favorite, TagInfo::new()).await?; matrix_room
.set_tag(TagName::Favorite, TagInfo::new())
.await?;
if previous_category == RoomType::LowPriority { if previous_category == RoomType::LowPriority {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
} }
RoomType::Normal => { RoomType::Normal => {
if room.is_direct().await.unwrap_or_default() { if matrix_room.is_direct().await.unwrap_or_default() {
room.set_is_direct(false).await?; matrix_room.set_is_direct(false).await?;
} }
match previous_category { match previous_category {
RoomType::Favorite => { RoomType::Favorite => {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
RoomType::LowPriority => { RoomType::LowPriority => {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
_ => {} _ => {}
} }
} }
RoomType::LowPriority => { RoomType::LowPriority => {
room.set_tag(TagName::LowPriority, TagInfo::new()).await?; matrix_room
.set_tag(TagName::LowPriority, TagInfo::new())
.await?;
if previous_category == RoomType::Favorite { if previous_category == RoomType::Favorite {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
} }
RoomType::Left => { RoomType::Left => {
room.leave().await?; matrix_room.leave().await?;
} }
RoomType::Outdated => unimplemented!(), RoomType::Outdated => unimplemented!(),
RoomType::Space => unimplemented!(), RoomType::Space => unimplemented!(),
RoomType::Direct => { RoomType::Direct => {
if !room.is_direct().await.unwrap_or_default() { if !matrix_room.is_direct().await.unwrap_or_default() {
room.set_is_direct(true).await?; matrix_room.set_is_direct(true).await?;
} }
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
} }
} }
}, },
MatrixRoom::Left(room) => match category { RoomState::Left => match category {
RoomType::Invited => {} RoomType::Invited => {}
RoomType::Favorite => { RoomType::Favorite => {
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if !tags.contains_key(&TagName::Favorite) { if !tags.contains_key(&TagName::Favorite) {
room.set_tag(TagName::Favorite, TagInfo::new()).await?; matrix_room
.set_tag(TagName::Favorite, TagInfo::new())
.await?;
} }
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
} }
room.join().await?; matrix_room.join().await?;
} }
RoomType::Normal => { RoomType::Normal => {
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
} }
room.join().await?; matrix_room.join().await?;
} }
RoomType::LowPriority => { RoomType::LowPriority => {
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
if !tags.contains_key(&TagName::LowPriority) { if !tags.contains_key(&TagName::LowPriority) {
room.set_tag(TagName::LowPriority, TagInfo::new()).await?; matrix_room
.set_tag(TagName::LowPriority, TagInfo::new())
.await?;
} }
} }
room.join().await?; matrix_room.join().await?;
} }
RoomType::Left => {} RoomType::Left => {}
RoomType::Outdated => unimplemented!(), RoomType::Outdated => unimplemented!(),
RoomType::Space => unimplemented!(), RoomType::Space => unimplemented!(),
RoomType::Direct => { RoomType::Direct => {
if !room.is_direct().await.unwrap_or_default() { if !matrix_room.is_direct().await.unwrap_or_default() {
room.set_is_direct(true).await?; matrix_room.set_is_direct(true).await?;
} }
if let Some(tags) = room.tags().await? { if let Some(tags) = matrix_room.tags().await? {
if tags.contains_key(&TagName::LowPriority) { if tags.contains_key(&TagName::LowPriority) {
room.remove_tag(TagName::LowPriority).await?; matrix_room.remove_tag(TagName::LowPriority).await?;
} }
if tags.contains_key(&TagName::Favorite) { if tags.contains_key(&TagName::Favorite) {
room.remove_tag(TagName::Favorite).await?; matrix_room.remove_tag(TagName::Favorite).await?;
} }
} }
room.join().await?; matrix_room.join().await?;
} }
}, },
} }
@ -645,8 +652,8 @@ impl Room {
let matrix_room = self.matrix_room(); let matrix_room = self.matrix_room();
match matrix_room { match matrix_room.state() {
MatrixRoom::Joined(_) => { RoomState::Joined => {
if matrix_room.is_space() { if matrix_room.is_space() {
self.set_category_internal(RoomType::Space); self.set_category_internal(RoomType::Space);
} else { } else {
@ -678,8 +685,8 @@ impl Room {
); );
} }
} }
MatrixRoom::Invited(_) => self.set_category_internal(RoomType::Invited), RoomState::Invited => self.set_category_internal(RoomType::Invited),
MatrixRoom::Left(_) => self.set_category_internal(RoomType::Left), RoomState::Left => self.set_category_internal(RoomType::Left),
}; };
} }
@ -688,7 +695,8 @@ impl Room {
} }
fn setup_typing(&self) { fn setup_typing(&self) {
let MatrixRoom::Joined(matrix_room) = self.matrix_room() else { let matrix_room = self.matrix_room();
if matrix_room.state() != RoomState::Joined {
return; return;
}; };
@ -1258,7 +1266,8 @@ impl Room {
/// Redact `redacted_event_id` in this room because of `reason`. /// Redact `redacted_event_id` in this room because of `reason`.
pub fn redact(&self, redacted_event_id: OwnedEventId, reason: Option<String>) { pub fn redact(&self, redacted_event_id: OwnedEventId, reason: Option<String>) {
let MatrixRoom::Joined(matrix_room) = self.matrix_room() else { let matrix_room = self.matrix_room();
if matrix_room.state() != RoomState::Joined {
return; return;
}; };
@ -1281,7 +1290,8 @@ impl Room {
} }
pub fn send_typing_notification(&self, is_typing: bool) { pub fn send_typing_notification(&self, is_typing: bool) {
let MatrixRoom::Joined(matrix_room) = self.matrix_room() else { let matrix_room = self.matrix_room();
if matrix_room.state() != RoomState::Joined {
return; return;
}; };
@ -1313,12 +1323,12 @@ impl Room {
pub async fn accept_invite(&self) -> MatrixResult<()> { pub async fn accept_invite(&self) -> MatrixResult<()> {
let matrix_room = self.matrix_room(); let matrix_room = self.matrix_room();
let MatrixRoom::Invited(matrix_room) = matrix_room else { if matrix_room.state() != RoomState::Invited {
error!("Can’t accept invite, because this room isn’t an invited room"); error!("Can’t accept invite, because this room isn’t an invited room");
return Ok(()); return Ok(());
}; }
let handle = spawn_tokio!(async move { matrix_room.accept_invitation().await }); let handle = spawn_tokio!(async move { matrix_room.join().await });
match handle.await.unwrap() { match handle.await.unwrap() {
Ok(_) => Ok(()), Ok(_) => Ok(()),
Err(error) => { Err(error) => {
@ -1331,12 +1341,12 @@ impl Room {
pub async fn reject_invite(&self) -> MatrixResult<()> { pub async fn reject_invite(&self) -> MatrixResult<()> {
let matrix_room = self.matrix_room(); let matrix_room = self.matrix_room();
let MatrixRoom::Invited(matrix_room) = matrix_room else { if matrix_room.state() != RoomState::Invited {
error!("Can’t reject invite, because this room isn’t an invited room"); error!("Can’t reject invite, because this room isn’t an invited room");
return Ok(()); return Ok(());
}; }
let handle = spawn_tokio!(async move { matrix_room.reject_invitation().await }); let handle = spawn_tokio!(async move { matrix_room.leave().await });
match handle.await.unwrap() { match handle.await.unwrap() {
Ok(_) => Ok(()), Ok(_) => Ok(()),
Err(error) => { Err(error) => {
@ -1500,7 +1510,8 @@ impl Room {
body: &str, body: &str,
info: AttachmentInfo, info: AttachmentInfo,
) { ) {
let MatrixRoom::Joined(matrix_room) = self.matrix_room() else { let matrix_room = self.matrix_room();
if matrix_room.state() != RoomState::Joined {
return; return;
}; };
@ -1544,17 +1555,18 @@ impl Room {
/// Returns `Ok(())` if all the invites are sent successfully, otherwise /// Returns `Ok(())` if all the invites are sent successfully, otherwise
/// returns the list of users who could not be invited. /// returns the list of users who could not be invited.
pub async fn invite<'a>(&self, users: &'a [User]) -> Result<(), Vec<&'a User>> { pub async fn invite<'a>(&self, users: &'a [User]) -> Result<(), Vec<&'a User>> {
let MatrixRoom::Joined(matrix_room) = self.matrix_room() else { let matrix_room = self.matrix_room();
if matrix_room.state() != RoomState::Joined {
error!("Can’t invite users, because this room isn’t a joined room"); error!("Can’t invite users, because this room isn’t a joined room");
return Ok(()); return Ok(());
}; }
let user_ids: Vec<OwnedUserId> = users.iter().map(|user| user.user_id()).collect(); let user_ids: Vec<OwnedUserId> = users.iter().map(|user| user.user_id()).collect();
let handle = spawn_tokio!(async move { let handle = spawn_tokio!(async move {
let invitations = user_ids let invitations = user_ids
.iter() .iter()
.map(|user_id| matrix_room.invite_user_by_id(user_id)); .map(|user_id| matrix_room.invite_user_by_id(user_id));
futures::future::join_all(invitations).await futures_util::future::join_all(invitations).await
}); });
let mut failed_invites = Vec::new(); let mut failed_invites = Vec::new();

6
src/session/model/room/timeline/mod.rs

@ -4,7 +4,7 @@ mod virtual_item;
use std::{collections::HashMap, sync::Arc}; use std::{collections::HashMap, sync::Arc};
use eyeball_im::VectorDiff; use eyeball_im::VectorDiff;
use futures::StreamExt; use futures_util::StreamExt;
use gtk::{gio, glib, glib::clone, prelude::*, subclass::prelude::*}; use gtk::{gio, glib, glib::clone, prelude::*, subclass::prelude::*};
use log::{error, warn}; use log::{error, warn};
use matrix_sdk::Error as MatrixError; use matrix_sdk::Error as MatrixError;
@ -515,7 +515,7 @@ impl Timeline {
self.imp().timeline.set(matrix_timeline.clone()).unwrap(); self.imp().timeline.set(matrix_timeline.clone()).unwrap();
let (mut sender, mut receiver) = futures::channel::mpsc::channel(100); let (mut sender, mut receiver) = futures_channel::mpsc::channel(100);
let (values, timeline_stream) = matrix_timeline.subscribe().await; let (values, timeline_stream) = matrix_timeline.subscribe().await;
if !values.is_empty() { if !values.is_empty() {
@ -548,7 +548,7 @@ impl Timeline {
let room_id = self.room().room_id().to_owned(); let room_id = self.room().room_id().to_owned();
let matrix_timeline = self.matrix_timeline(); let matrix_timeline = self.matrix_timeline();
let (mut sender, mut receiver) = futures::channel::mpsc::channel(8); let (mut sender, mut receiver) = futures_channel::mpsc::channel(8);
let stream = matrix_timeline.back_pagination_status(); let stream = matrix_timeline.back_pagination_status();
let fut = stream.for_each(move |status| { let fut = stream.for_each(move |status| {

2
src/session/model/room_list.rs

@ -161,7 +161,7 @@ impl RoomList {
if let Some(room) = self.get(room_id) { if let Some(room) = self.get(room_id) {
Some(room) Some(room)
} else { } else {
let (sender, receiver) = futures::channel::oneshot::channel(); let (sender, receiver) = futures_channel::oneshot::channel();
let room_id = room_id.to_owned(); let room_id = room_id.to_owned();
let sender = Cell::new(Some(sender)); let sender = Cell::new(Some(sender));

2
src/session/model/session.rs

@ -1,7 +1,7 @@
use std::{collections::HashSet, time::Duration}; use std::{collections::HashSet, time::Duration};
use adw::{prelude::*, subclass::prelude::*}; use adw::{prelude::*, subclass::prelude::*};
use futures::StreamExt; use futures_util::StreamExt;
use gettextrs::gettext; use gettextrs::gettext;
use gtk::{ use gtk::{
self, gio, glib, self, gio, glib,

17
src/session/view/content/room_details/general_page/mod.rs

@ -8,7 +8,7 @@ use gtk::{
CompositeTemplate, CompositeTemplate,
}; };
use log::error; use log::error;
use matrix_sdk::room::Room as MatrixRoom; use matrix_sdk::RoomState;
use ruma::{ use ruma::{
assign, assign,
events::{ events::{
@ -238,10 +238,11 @@ impl GeneralPage {
async fn change_avatar(&self, file: gio::File) { async fn change_avatar(&self, file: gio::File) {
let room = self.room(); let room = self.room();
let MatrixRoom::Joined(matrix_room) = room.matrix_room() else { let matrix_room = room.matrix_room();
if matrix_room.state() != RoomState::Joined {
error!("Cannot change avatar of room not joined"); error!("Cannot change avatar of room not joined");
return; return;
}; }
let imp = self.imp(); let imp = self.imp();
let avatar = &imp.avatar; let avatar = &imp.avatar;
@ -300,10 +301,11 @@ impl GeneralPage {
async fn remove_avatar(&self) { async fn remove_avatar(&self) {
let room = self.room(); let room = self.room();
let MatrixRoom::Joined(matrix_room) = room.matrix_room() else { let matrix_room = room.matrix_room();
if matrix_room.state() != RoomState::Joined {
error!("Cannot remove avatar of room not joined"); error!("Cannot remove avatar of room not joined");
return; return;
}; }
let imp = self.imp(); let imp = self.imp();
let avatar = &*imp.avatar; let avatar = &*imp.avatar;
@ -488,10 +490,11 @@ impl GeneralPage {
return; return;
} }
let MatrixRoom::Joined(matrix_room) = room.matrix_room() else { let matrix_room = room.matrix_room();
if matrix_room.state() != RoomState::Joined {
error!("Cannot change name or topic of room not joined"); error!("Cannot change name or topic of room not joined");
return; return;
}; }
if name_changed { if name_changed {
let matrix_room = matrix_room.clone(); let matrix_room = matrix_room.clone();

2
src/session/view/content/room_details/history_viewer/timeline.rs

@ -31,7 +31,7 @@ mod imp {
sync::Arc, sync::Arc,
}; };
use futures::lock::Mutex; use futures_util::lock::Mutex;
use once_cell::{sync::Lazy, unsync::OnceCell}; use once_cell::{sync::Lazy, unsync::OnceCell};
use super::*; use super::*;

4
src/session/view/content/room_details/invite_subpage/invitee_list.rs

@ -34,7 +34,7 @@ mod imp {
collections::HashMap, collections::HashMap,
}; };
use futures::future::AbortHandle; use futures_util::future::AbortHandle;
use glib::subclass::Signal; use glib::subclass::Signal;
use once_cell::{sync::Lazy, unsync::OnceCell}; use once_cell::{sync::Lazy, unsync::OnceCell};
@ -330,7 +330,7 @@ impl InviteeList {
client.send(request, None).await client.send(request, None).await
}); });
let (future, handle) = futures::future::abortable(handle); let (future, handle) = futures_util::future::abortable(handle);
if let Some(abort_handle) = self.imp().abort_handle.replace(Some(handle)) { if let Some(abort_handle) = self.imp().abort_handle.replace(Some(handle)) {
abort_handle.abort(); abort_handle.abort();

2
src/session/view/content/room_history/attachment_dialog.rs

@ -97,7 +97,7 @@ impl AttachmentDialog {
/// Returns `gtk::ResponseType::Ok` if the user clicked on send, otherwise /// Returns `gtk::ResponseType::Ok` if the user clicked on send, otherwise
/// returns `gtk::ResponseType::Cancel`. /// returns `gtk::ResponseType::Cancel`.
pub async fn run_future(&self) -> gtk::ResponseType { pub async fn run_future(&self) -> gtk::ResponseType {
let (sender, receiver) = futures::channel::oneshot::channel(); let (sender, receiver) = futures_channel::oneshot::channel();
let sender = Cell::new(Some(sender)); let sender = Cell::new(Some(sender));
let handler_id = self.connect_close_request( let handler_id = self.connect_close_request(

2
src/session/view/content/room_history/message_row/content.rs

@ -140,7 +140,7 @@ impl MessageContent {
reply.set_related_content_sender(sender.upcast_ref()); reply.set_related_content_sender(sender.upcast_ref());
build_content( build_content(
reply.related_content(), reply.related_content(),
TimelineItemContent::Message(related_content.message().clone()), related_content.content().clone(),
ContentFormat::Compact, ContentFormat::Compact,
sender, sender,
&room, &room,

4
src/session/view/content/room_history/mod.rs

@ -16,7 +16,7 @@ use ashpd::{
desktop::location::{Accuracy, LocationProxy}, desktop::location::{Accuracy, LocationProxy},
WindowIdentifier, WindowIdentifier,
}; };
use futures::TryFutureExt; use futures_util::TryFutureExt;
use geo_uri::GeoUri; use geo_uri::GeoUri;
use gettextrs::gettext; use gettextrs::gettext;
use gtk::{ use gtk::{
@ -1036,7 +1036,7 @@ impl RoomHistory {
// We want to be listening for new locations whenever the session is up // We want to be listening for new locations whenever the session is up
// otherwise we might lose the first response and will have to wait for a future // otherwise we might lose the first response and will have to wait for a future
// update by geoclue // update by geoclue
let (_, location) = futures::try_join!( let (_, location) = futures_util::try_join!(
proxy.start(&session, &identifier).into_future(), proxy.start(&session, &identifier).into_future(),
proxy.receive_location_updated().into_future() proxy.receive_location_updated().into_future()
)?; )?;

2
src/session/view/create_dm_dialog/dm_user.rs

@ -150,7 +150,7 @@ impl DmUser {
async fn create_dm( async fn create_dm(
client: matrix_sdk::Client, client: matrix_sdk::Client,
other_user: ruma::OwnedUserId, other_user: ruma::OwnedUserId,
) -> Result<matrix_sdk::room::Joined, matrix_sdk::Error> { ) -> Result<matrix_sdk::Room, matrix_sdk::Error> {
let request = assign!(create_room::v3::Request::new(), let request = assign!(create_room::v3::Request::new(),
{ {
is_direct: true, is_direct: true,

4
src/session/view/create_dm_dialog/dm_user_list.rs

@ -27,7 +27,7 @@ mod imp {
collections::HashMap, collections::HashMap,
}; };
use futures::future::AbortHandle; use futures_util::future::AbortHandle;
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
use super::*; use super::*;
@ -187,7 +187,7 @@ impl DmUserList {
let search_term_clone = search_term.clone(); let search_term_clone = search_term.clone();
let handle = spawn_tokio!(async move { client.search_users(&search_term_clone, 20).await }); let handle = spawn_tokio!(async move { client.search_users(&search_term_clone, 20).await });
let (future, handle) = futures::future::abortable(handle); let (future, handle) = futures_util::future::abortable(handle);
if let Some(abort_handle) = self.imp().abort_handle.replace(Some(handle)) { if let Some(abort_handle) = self.imp().abort_handle.replace(Some(handle)) {
abort_handle.abort(); abort_handle.abort();

2
src/utils/media.rs

@ -125,7 +125,7 @@ async fn get_gstreamer_media_info(file: &gio::File) -> Option<gst_pbutils::Disco
let timeout = gst::ClockTime::from_seconds(15); let timeout = gst::ClockTime::from_seconds(15);
let discoverer = gst_pbutils::Discoverer::new(timeout).ok()?; let discoverer = gst_pbutils::Discoverer::new(timeout).ok()?;
let (sender, receiver) = futures::channel::oneshot::channel(); let (sender, receiver) = futures_channel::oneshot::channel();
let sender = Mutex::new(Cell::new(Some(sender))); let sender = Mutex::new(Cell::new(Some(sender)));
discoverer.connect_discovered(move |_, info, _| { discoverer.connect_discovered(move |_, info, _| {
if let Some(sender) = sender.lock().unwrap().take() { if let Some(sender) = sender.lock().unwrap().take() {

2
src/utils/mod.rs

@ -13,7 +13,7 @@ use std::{
rc::{Rc, Weak}, rc::{Rc, Weak},
}; };
use futures::{ use futures_util::{
future::{self, Either, Future}, future::{self, Either, Future},
pin_mut, pin_mut,
}; };

Loading…
Cancel
Save