Browse Source

error: Improve secret portal error instructions

merge-requests/1716/head
Kévin Commaille 2 years ago
parent
commit
f4e6a887f9
No known key found for this signature in database
GPG Key ID: C971D9DBC9D678D
  1. 5
      data/resources/style.css
  2. 1
      po/POTFILES.in
  3. 26
      src/error_page.rs
  4. 71
      src/error_page.ui

5
data/resources/style.css

@ -174,6 +174,11 @@ button.overlaid {
background-color: alpha(@error_bg_color,.3);
}
.card.command {
border-radius: 6px;
font-size: 90%;
}
/* Components */

1
po/POTFILES.in

@ -33,6 +33,7 @@ src/components/user_page.ui
src/components/user_profile_dialog.ui
src/contrib/qr_code_scanner/mod.ui
src/contrib/qr_code.rs
src/error_page.rs
src/error_page.ui
src/identity_verification_view/accept_request_page.rs
src/identity_verification_view/accept_request_page.ui

26
src/error_page.rs

@ -1,6 +1,9 @@
use adw::{prelude::*, subclass::prelude::*};
use gettextrs::gettext;
use gtk::{self, glib, CompositeTemplate};
use crate::toast;
/// The possible error subpages.
#[derive(Debug, Clone, Copy, strum::AsRefStr)]
#[strum(serialize_all = "kebab-case")]
@ -24,6 +27,8 @@ mod imp {
#[template_child]
pub linux_secret_instructions: TemplateChild<adw::Clamp>,
#[template_child]
pub secret_service_override_command: TemplateChild<gtk::Label>,
#[template_child]
pub session_error_page: TemplateChild<adw::StatusPage>,
}
@ -35,6 +40,8 @@ mod imp {
fn class_init(klass: &mut Self::Class) {
Self::bind_template(klass);
Self::Type::bind_template_callbacks(klass);
klass.set_accessible_role(gtk::AccessibleRole::Group);
}
@ -54,6 +61,7 @@ glib::wrapper! {
@extends gtk::Widget, adw::Bin, @implements gtk::Accessible;
}
#[gtk::template_callbacks]
impl ErrorPage {
pub fn new() -> Self {
glib::Object::new()
@ -67,13 +75,29 @@ impl ErrorPage {
imp.linux_secret_instructions.set_visible(false);
#[cfg(target_os = "linux")]
imp.linux_secret_instructions.set_visible(true);
{
imp.linux_secret_instructions.set_visible(true);
imp.secret_service_override_command.set_markup(&format!(
"<tt>flatpak --user override --talk-name=org.freedesktop.secrets {}</tt>",
crate::config::APP_ID
));
}
imp.secret_error_page.set_description(Some(message));
imp.stack
.set_visible_child_name(ErrorSubpage::Secret.as_ref());
}
/// Copy the secret service override command to the clipboard.
#[template_callback]
fn copy_secret_service_override_command(&self) {
let command = self.imp().secret_service_override_command.label();
self.clipboard()
.set_text(command.trim_start_matches("<tt>").trim_end_matches("</tt>"));
toast!(self, gettext("Command copied to clipboard"));
}
/// Display the given session error.
pub fn display_session_error(&self, message: &str) {
let imp = self.imp();

71
src/error_page.ui

@ -22,7 +22,7 @@
<property name="name">secret</property>
<property name="child">
<object class="AdwStatusPage" id="secret_error_page">
<property name="title" translatable="yes">Secret Service Error</property>
<property name="title" translatable="yes">Secret Portal Error</property>
<property name="icon-name">key-symbolic</property>
<property name="vexpand">true</property>
<child>
@ -30,13 +30,13 @@
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">24</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel">
<property name="wrap">true</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Fractal relies on a Secret Service Provider to manage your sensitive session information and an error occurred while we were trying to store or get your session.</property>
<property name="label" translatable="yes">Fractal relies on a Secret Portal to manage your sensitive session information and an error occurred while we were trying to restore your sessions.</property>
</object>
</child>
<child>
@ -48,7 +48,7 @@
<property name="wrap">true</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Here are a few things that might help you fix issues with the Secret Service:</property>
<property name="label" translatable="yes">Here are a few things that might help you fix issues with the Secret Portal:</property>
</object>
</child>
<child>
@ -65,7 +65,68 @@
<property name="wrap">true</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Make sure you have a Secret Service Provider installed, like gnome-keyring.</property>
<property name="label" translatable="yes">Make sure you have a Secret Portal Backend Provider installed, like gnome-keyring.</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="spacing">6</property>
<child>
<object class="GtkLabel">
<property name="valign">start</property>
<property name="label">•</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel">
<property name="wrap">true</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">If you prefer to use a Secret Service Provider instead, you need to allow Fractal to interact with it, like this:</property>
</object>
</child>
<child>
<object class="GtkBox">
<child>
<object class="GtkScrolledWindow">
<property name="vscrollbar-policy">never</property>
<property name="child">
<object class="GtkLabel" id="secret_service_override_command">
<property name="xalign">0.0</property>
<property name="hexpand">True</property>
<property name="selectable">True</property>
<property name="margin-start">10</property>
<property name="margin-end">10</property>
</object>
</property>
</object>
</child>
<child>
<object class="GtkButton">
<property name="icon-name">copy-symbolic</property>
<property name="tooltip-text" translatable="yes">Copy Command to Clipboard</property>
<property name="valign">center</property>
<property name="halign">end</property>
<property name="margin-start">3</property>
<signal name="clicked" handler="copy_secret_service_override_command" swapped="yes"/>
<style>
<class name="flat"/>
</style>
</object>
</child>
<style>
<class name="card" />
<class name="linked" />
<class name="command" />
</style>
</object>
</child>
</object>
</child>
</object>

Loading…
Cancel
Save