diff --git a/data/resources/icons/scalable/actions/idp-apple-dark.svg b/data/resources/icons/scalable/actions/idp-apple-dark.svg
deleted file mode 100644
index a1c99081..00000000
--- a/data/resources/icons/scalable/actions/idp-apple-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-apple.svg b/data/resources/icons/scalable/actions/idp-apple.svg
deleted file mode 100644
index 39d8356c..00000000
--- a/data/resources/icons/scalable/actions/idp-apple.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-facebook.svg b/data/resources/icons/scalable/actions/idp-facebook.svg
deleted file mode 100644
index 9aabcdc5..00000000
--- a/data/resources/icons/scalable/actions/idp-facebook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-github-dark.svg b/data/resources/icons/scalable/actions/idp-github-dark.svg
deleted file mode 100644
index fee0a9fc..00000000
--- a/data/resources/icons/scalable/actions/idp-github-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-github.svg b/data/resources/icons/scalable/actions/idp-github.svg
deleted file mode 100644
index cb628a47..00000000
--- a/data/resources/icons/scalable/actions/idp-github.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-gitlab.svg b/data/resources/icons/scalable/actions/idp-gitlab.svg
deleted file mode 100644
index 47087deb..00000000
--- a/data/resources/icons/scalable/actions/idp-gitlab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-google-dark.svg b/data/resources/icons/scalable/actions/idp-google-dark.svg
deleted file mode 100644
index 11614169..00000000
--- a/data/resources/icons/scalable/actions/idp-google-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-google.svg b/data/resources/icons/scalable/actions/idp-google.svg
deleted file mode 100644
index 11614169..00000000
--- a/data/resources/icons/scalable/actions/idp-google.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-x-dark.svg b/data/resources/icons/scalable/actions/idp-x-dark.svg
deleted file mode 100644
index 5ba1a1eb..00000000
--- a/data/resources/icons/scalable/actions/idp-x-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/icons/scalable/actions/idp-x-light.svg b/data/resources/icons/scalable/actions/idp-x-light.svg
deleted file mode 100644
index 0a74df05..00000000
--- a/data/resources/icons/scalable/actions/idp-x-light.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/data/resources/resources.gresource.xml b/data/resources/resources.gresource.xml
index ce2b0019..43acd04d 100644
--- a/data/resources/resources.gresource.xml
+++ b/data/resources/resources.gresource.xml
@@ -19,16 +19,6 @@
icons/scalable/actions/go-next-symbolic.svg
icons/scalable/actions/go-previous-symbolic.svg
icons/scalable/actions/hide-symbolic.svg
- icons/scalable/actions/idp-apple-dark.svg
- icons/scalable/actions/idp-apple.svg
- icons/scalable/actions/idp-facebook.svg
- icons/scalable/actions/idp-github-dark.svg
- icons/scalable/actions/idp-github.svg
- icons/scalable/actions/idp-gitlab.svg
- icons/scalable/actions/idp-google-dark.svg
- icons/scalable/actions/idp-google.svg
- icons/scalable/actions/idp-x-dark.svg
- icons/scalable/actions/idp-x-light.svg
icons/scalable/actions/map-marker-symbolic.svg
icons/scalable/actions/media-playback-pause-symbolic.svg
icons/scalable/actions/media-playback-start-symbolic.svg
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 44cde3a7..31ec53a5 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -99,7 +99,6 @@ src/login/method_page.rs
src/login/mod.blp
src/login/mod.rs
src/login/session_setup_view.blp
-src/login/sso_idp_button.rs
src/secret/linux.rs
src/session/mod.rs
src/session/notifications/mod.rs
diff --git a/src/login/method_page.blp b/src/login/method_page.blp
index 35223cd0..e06657db 100644
--- a/src/login/method_page.blp
+++ b/src/login/method_page.blp
@@ -113,28 +113,16 @@ template $LoginMethodPage: Adw.NavigationPage {
}
}
- Gtk.Box sso_idp_box {
- visible: false;
- spacing: 12;
- homogeneous: true;
- hexpand: true;
- vexpand: true;
-
- accessibility {
- label: _("Single Sign-On Providers");
- }
- }
-
- Gtk.Button more_sso_btn {
+ Gtk.Button sso_button {
styles [
"standalone-button",
"pill",
]
+ label: _("Login via SSO");
can-shrink: true;
halign: center;
action-name: "login.sso";
- action-target: "@ms nothing";
}
$LoadingButton next_button {
diff --git a/src/login/method_page.rs b/src/login/method_page.rs
index f69cb2ea..8722a984 100644
--- a/src/login/method_page.rs
+++ b/src/login/method_page.rs
@@ -1,16 +1,14 @@
use adw::{prelude::*, subclass::prelude::*};
use gettextrs::gettext;
use gtk::glib;
-use ruma::{OwnedServerName, api::client::session::get_login_types::v3::LoginType};
+use ruma::OwnedServerName;
use tracing::warn;
use url::Url;
-use super::{Login, sso_idp_button::SsoIdpButton};
+use super::Login;
use crate::{components::LoadingButton, gettext_f, prelude::*, spawn_tokio, toast};
mod imp {
- use std::cell::RefCell;
-
use glib::subclass::InitializingObject;
use super::*;
@@ -28,10 +26,7 @@ mod imp {
#[template_child]
password_entry: TemplateChild,
#[template_child]
- sso_idp_box: TemplateChild,
- sso_idp_box_children: RefCell>,
- #[template_child]
- more_sso_btn: TemplateChild,
+ sso_button: TemplateChild,
#[template_child]
next_button: TemplateChild,
/// The parent `Login` object.
@@ -108,45 +103,8 @@ mod imp {
}
/// Update the SSO group.
- pub(super) fn update_sso(&self, login_types: Vec) {
- let Some(sso_login) = login_types.into_iter().find_map(|t| match t {
- LoginType::Sso(sso) => Some(sso),
- _ => None,
- }) else {
- self.sso_idp_box.set_visible(false);
- self.more_sso_btn.set_visible(false);
- return;
- };
-
- self.clean_idp_box();
-
- let mut has_unknown_methods = false;
- let mut has_known_methods = false;
-
- if !sso_login.identity_providers.is_empty() {
- let mut sso_idp_box_children = self.sso_idp_box_children.borrow_mut();
- sso_idp_box_children.reserve(sso_login.identity_providers.len());
-
- for identity_provider in sso_login.identity_providers {
- if let Some(btn) = SsoIdpButton::new(identity_provider) {
- self.sso_idp_box.append(&btn);
- sso_idp_box_children.push(btn);
-
- has_known_methods = true;
- } else {
- has_unknown_methods = true;
- }
- }
- }
- self.sso_idp_box.set_visible(has_known_methods);
-
- if has_known_methods {
- self.more_sso_btn.set_label(&gettext("More SSO Providers"));
- self.more_sso_btn.set_visible(has_unknown_methods);
- } else {
- self.more_sso_btn.set_label(&gettext("Login via SSO"));
- self.more_sso_btn.set_visible(true);
- }
+ pub(super) fn update_sso(&self, supports_sso: bool) {
+ self.sso_button.set_visible(supports_sso);
}
/// Whether the current state allows to login with a password.
@@ -210,14 +168,6 @@ mod imp {
self.password_entry.set_text("");
self.next_button.set_is_loading(false);
self.update_next_state();
- self.clean_idp_box();
- }
-
- /// Empty the identity providers box.
- fn clean_idp_box(&self) {
- for child in self.sso_idp_box_children.borrow_mut().drain(..) {
- self.sso_idp_box.remove(&child);
- }
}
}
}
@@ -239,11 +189,11 @@ impl LoginMethodPage {
&self,
homeserver_url: &Url,
domain_name: Option<&OwnedServerName>,
- login_types: Vec,
+ supports_sso: bool,
) {
let imp = self.imp();
imp.update_title(homeserver_url, domain_name);
- imp.update_sso(login_types);
+ imp.update_sso(supports_sso);
imp.update_next_state();
}
diff --git a/src/login/mod.rs b/src/login/mod.rs
index 9c9da4bf..a0869a6d 100644
--- a/src/login/mod.rs
+++ b/src/login/mod.rs
@@ -23,7 +23,6 @@ mod in_browser_page;
mod local_server;
mod method_page;
mod session_setup_view;
-mod sso_idp_button;
use self::{
advanced_dialog::LoginAdvancedDialog,
@@ -105,14 +104,9 @@ mod imp {
klass.set_css_name("login");
klass.set_accessible_role(gtk::AccessibleRole::Group);
- klass.install_action_async(
- "login.sso",
- Some(&Option::::static_variant_type()),
- |obj, _, variant| async move {
- let idp = variant.and_then(|v| v.get::