Skip to content

Commit e4e7ae0

Browse files
authored
Merge pull request #50 from linux-credentials/push-moulysxkqxzz
Refactor GUI code into single module
2 parents 532882a + f1ccee8 commit e4e7ae0

12 files changed

Lines changed: 60 additions & 106 deletions

File tree

xyz-iinuwa-credential-manager-portal-gtk/src/credential_service/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use libwebauthn::{
1818
use crate::{
1919
credential_service::{hybrid::HybridEvent, usb::UsbEvent},
2020
dbus::{CredentialRequest, CredentialResponse},
21-
view_model::{Device, Transport},
21+
gui::view_model::{Device, Transport},
2222
};
2323

2424
use hybrid::{HybridHandler, HybridState, HybridStateInternal};

xyz-iinuwa-credential-manager-portal-gtk/src/credential_service/server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use futures_lite::Stream;
77
use tokio::sync::{mpsc, oneshot};
88

99
use crate::dbus::{CredentialRequest, CredentialResponse};
10-
use crate::view_model::Device;
10+
use crate::gui::view_model::Device;
1111

1212
use super::hybrid::{HybridHandler, HybridState};
1313
use super::usb::{UsbHandler, UsbState};

xyz-iinuwa-credential-manager-portal-gtk/src/credential_service/usb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use tracing::{debug, warn};
1515

1616
use crate::{
1717
dbus::{CredentialRequest, GetAssertionResponseInternal},
18-
view_model::Credential,
18+
gui::view_model::Credential,
1919
};
2020

2121
use super::{AuthenticatorResponse, CredentialResponse, Error};

xyz-iinuwa-credential-manager-portal-gtk/src/dbus.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ use zbus::{
2525
};
2626

2727
use crate::credential_service::CredentialManagementClient;
28-
use crate::gui::ViewRequest;
29-
use crate::view_model::{CredentialType, Operation};
28+
use crate::gui::{
29+
view_model::{CredentialType, Operation},
30+
ViewRequest,
31+
};
3032
use crate::webauthn::{
3133
self, GetPublicKeyCredentialUnsignedExtensionsResponse, PublicKeyCredentialParameters,
3234
};
Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1+
pub mod view_model;
2+
13
use std::thread;
24

35
use async_std::channel::Receiver;
4-
use gettextrs::{gettext, LocaleCategory};
5-
use gtk::{gio, glib};
66
use tokio::sync::oneshot;
77

8-
use crate::application::ExampleApplication;
9-
use crate::config::{GETTEXT_PACKAGE, LOCALEDIR, RESOURCES_FILE};
10-
use crate::{
11-
credential_service::CredentialServiceClient,
12-
view_model::{self, Operation, ViewEvent, ViewUpdate},
13-
};
8+
use crate::credential_service::CredentialServiceClient;
9+
10+
use view_model::{Operation, ViewEvent, ViewUpdate};
1411

1512
pub struct ViewRequest {
1613
pub operation: Operation,
@@ -45,27 +42,8 @@ fn run_gui<C: CredentialServiceClient + Send + Sync + 'static>(client: C, reques
4542
println!("event loop ended?");
4643
});
4744

48-
start_gtk_app(tx_event, rx_update);
45+
view_model::gtk::start_gtk_app(tx_event, rx_update);
4946

5047
async_std::task::block_on(event_loop.cancel());
5148
response_tx.send(()).unwrap();
5249
}
53-
54-
fn start_gtk_app(
55-
tx_event: async_std::channel::Sender<ViewEvent>,
56-
rx_update: async_std::channel::Receiver<ViewUpdate>,
57-
) {
58-
// Prepare i18n
59-
gettextrs::setlocale(LocaleCategory::LcAll, "");
60-
gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR).expect("Unable to bind the text domain");
61-
gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain");
62-
63-
if glib::application_name().is_none() {
64-
glib::set_application_name(&gettext("Credential Manager"));
65-
}
66-
let res = gio::Resource::load(RESOURCES_FILE).expect("Could not load gresource file");
67-
gio::resources_register(&res);
68-
69-
let app = ExampleApplication::new(tx_event, rx_update);
70-
app.run();
71-
}

xyz-iinuwa-credential-manager-portal-gtk/src/application.rs renamed to xyz-iinuwa-credential-manager-portal-gtk/src/gui/view_model/gtk/application.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,9 @@ use gtk::prelude::*;
66
use gtk::subclass::prelude::*;
77
use gtk::{gdk, gio, glib};
88

9+
use super::{window::ExampleApplicationWindow, ViewModel};
910
use crate::config::{APP_ID, PKGDATADIR, PROFILE, VERSION};
10-
use crate::view_model::gtk::ViewModel;
11-
use crate::view_model::{ViewEvent, ViewUpdate};
12-
use crate::window::ExampleApplicationWindow;
11+
use crate::gui::view_model::{ViewEvent, ViewUpdate};
1312

1413
mod imp {
1514
use super::*;

xyz-iinuwa-credential-manager-portal-gtk/src/view_model/gtk/credential.rs renamed to xyz-iinuwa-credential-manager-portal-gtk/src/gui/view_model/gtk/credential.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,19 @@ impl CredentialObject {
4747
}
4848
}
4949

50-
impl From<crate::view_model::Credential> for CredentialObject {
51-
fn from(value: crate::view_model::Credential) -> Self {
50+
impl From<crate::gui::view_model::Credential> for CredentialObject {
51+
fn from(value: crate::gui::view_model::Credential) -> Self {
5252
Self::new(&value.id, &value.name, &value.username)
5353
}
5454
}
5555

56-
impl From<&crate::view_model::Credential> for CredentialObject {
57-
fn from(value: &crate::view_model::Credential) -> Self {
56+
impl From<&crate::gui::view_model::Credential> for CredentialObject {
57+
fn from(value: &crate::gui::view_model::Credential) -> Self {
5858
Self::new(&value.id, &value.name, &value.username)
5959
}
6060
}
6161

62-
impl From<CredentialObject> for crate::view_model::Credential {
62+
impl From<CredentialObject> for crate::gui::view_model::Credential {
6363
fn from(value: CredentialObject) -> Self {
6464
Self {
6565
id: value.id(),

xyz-iinuwa-credential-manager-portal-gtk/src/view_model/gtk/device.rs renamed to xyz-iinuwa-credential-manager-portal-gtk/src/gui/view_model/gtk/device.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use gtk::glib;
55
use gtk::prelude::*;
66
use gtk::subclass::prelude::*;
77

8-
use crate::view_model::Transport;
8+
use crate::gui::view_model::Transport;
99

1010
mod imp {
1111
use super::*;
@@ -62,21 +62,21 @@ fn transport_name(transport: &Transport) -> &'static str {
6262
// Transport::PasskeyProvider => ("symbolic-link-symbolic", "ACME Password Manager"),
6363
}
6464
}
65-
impl From<crate::view_model::Device> for DeviceObject {
66-
fn from(value: crate::view_model::Device) -> Self {
65+
impl From<crate::gui::view_model::Device> for DeviceObject {
66+
fn from(value: crate::gui::view_model::Device) -> Self {
6767
let name = transport_name(&value.transport);
6868
Self::new(&value.id, &value.transport, name)
6969
}
7070
}
7171

72-
impl From<&crate::view_model::Device> for DeviceObject {
73-
fn from(value: &crate::view_model::Device) -> Self {
72+
impl From<&crate::gui::view_model::Device> for DeviceObject {
73+
fn from(value: &crate::gui::view_model::Device) -> Self {
7474
let name = transport_name(&value.transport);
7575
Self::new(&value.id, &value.transport, name)
7676
}
7777
}
7878

79-
impl TryFrom<DeviceObject> for crate::view_model::Device {
79+
impl TryFrom<DeviceObject> for crate::gui::view_model::Device {
8080
type Error = String;
8181

8282
fn try_from(value: DeviceObject) -> Result<Self, Self::Error> {

xyz-iinuwa-credential-manager-portal-gtk/src/view_model/gtk/mod.rs renamed to xyz-iinuwa-credential-manager-portal-gtk/src/gui/view_model/gtk/mod.rs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
mod application;
12
pub mod credential;
23
pub mod device;
4+
mod window;
35

46
use async_std::channel::{Receiver, Sender};
7+
use gettextrs::{gettext, LocaleCategory};
58
use glib::clone;
69
use gtk::gdk::Texture;
710
use gtk::gdk_pixbuf::Pixbuf;
@@ -12,13 +15,16 @@ use gtk::subclass::prelude::*;
1215
use qrcode::QrCode;
1316
use tracing::debug;
1417

15-
use self::credential::CredentialObject;
16-
use self::device::DeviceObject;
18+
use crate::config::{GETTEXT_PACKAGE, LOCALEDIR, RESOURCES_FILE};
19+
use application::ExampleApplication;
1720

1821
use super::Transport;
1922
use super::{Credential, Device};
2023
use super::{ViewEvent, ViewUpdate};
2124

25+
use self::credential::CredentialObject;
26+
use self::device::DeviceObject;
27+
2228
mod imp {
2329
use std::cell::RefCell;
2430

@@ -51,7 +57,7 @@ mod imp {
5157
#[property(get, set)]
5258
pub failed: RefCell<bool>,
5359

54-
// pub(super) vm: RefCell<Option<crate::view_model::ViewModel>>,
60+
// pub(super) vm: RefCell<Option<crate::gui::view_model::ViewModel>>,
5561
pub(super) rx: RefCell<Option<Receiver<ViewUpdate>>>,
5662
pub(super) tx: RefCell<Option<Sender<ViewEvent>>>,
5763
// hybrid_qr_state: HybridState,
@@ -337,3 +343,22 @@ impl ViewModel {
337343
tx.send(event).await.unwrap();
338344
}
339345
}
346+
347+
pub fn start_gtk_app(
348+
tx_event: async_std::channel::Sender<ViewEvent>,
349+
rx_update: async_std::channel::Receiver<ViewUpdate>,
350+
) {
351+
// Prepare i18n
352+
gettextrs::setlocale(LocaleCategory::LcAll, "");
353+
gettextrs::bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR).expect("Unable to bind the text domain");
354+
gettextrs::textdomain(GETTEXT_PACKAGE).expect("Unable to switch to the text domain");
355+
356+
if glib::application_name().is_none() {
357+
glib::set_application_name(&gettext("Credential Manager"));
358+
}
359+
let res = gio::Resource::load(RESOURCES_FILE).expect("Could not load gresource file");
360+
gio::resources_register(&res);
361+
362+
let app = ExampleApplication::new(tx_event, rx_update);
363+
app.run();
364+
}

xyz-iinuwa-credential-manager-portal-gtk/src/window.rs renamed to xyz-iinuwa-credential-manager-portal-gtk/src/gui/view_model/gtk/window.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ use gtk::{
99
};
1010
use gtk::{prelude::*, Picture};
1111

12-
use crate::application::ExampleApplication;
12+
use super::application::ExampleApplication;
13+
use super::{device::DeviceObject, ViewModel};
1314
use crate::config::{APP_ID, PROFILE};
14-
use crate::view_model::gtk::{device::DeviceObject, ViewModel};
15-
use crate::view_model::Transport;
15+
use crate::gui::view_model::Transport;
1616

1717
mod imp {
1818
use gtk::Picture;

0 commit comments

Comments
 (0)