Skip to content

Commit 069c2ff

Browse files
committed
Don't panic when the user cancels
1 parent 7a69ecb commit 069c2ff

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

  • xyz-iinuwa-credential-manager-portal-gtk/src

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use ring::digest;
2424

2525
pub(crate) async fn start_service(service_name: &str, path: &str) -> Result<Connection> {
2626
let (gui_tx, gui_rx) = async_std::channel::bounded(1);
27-
let lock: Arc<AsyncMutex<Sender<(CredentialRequest, Sender<CredentialResponse>)>>> = Arc::new(AsyncMutex::new(gui_tx));
27+
let lock: Arc<AsyncMutex<Sender<(CredentialRequest, Sender<Option<CredentialResponse>>)>>> = Arc::new(AsyncMutex::new(gui_tx));
2828
start_gui_thread(gui_rx);
2929
connection::Builder::session()?
3030
.name(service_name)?
@@ -33,7 +33,7 @@ pub(crate) async fn start_service(service_name: &str, path: &str) -> Result<Conn
3333
.await
3434
}
3535

36-
fn start_gui_thread(rx: Receiver<(CredentialRequest, Sender<CredentialResponse>)>) {
36+
fn start_gui_thread(rx: Receiver<(CredentialRequest, Sender<Option<CredentialResponse>>)>) {
3737
thread::Builder::new()
3838
.name("gui".into())
3939
.spawn(move || {
@@ -60,7 +60,7 @@ fn start_gui_thread(rx: Receiver<(CredentialRequest, Sender<CredentialResponse>)
6060

6161
async_std::task::block_on(event_loop.cancel());
6262
let lock = data.lock().unwrap();
63-
let response = lock.as_ref().unwrap().clone();
63+
let response = lock.as_ref().cloned();
6464
response_tx.send_blocking(response).unwrap();
6565
}
6666
})
@@ -84,7 +84,7 @@ fn start_gtk_app(tx_event: Sender<ViewEvent>, rx_update: Receiver<ViewUpdate>) {
8484
}
8585

8686
struct CredentialManager {
87-
app_lock: Arc<AsyncMutex<Sender<(CredentialRequest, Sender<CredentialResponse>)>>>,
87+
app_lock: Arc<AsyncMutex<Sender<(CredentialRequest, Sender<Option<CredentialResponse>>)>>>,
8888
}
8989

9090
#[interface(name = "xyz.iinuwa.credentials.CredentialManagerUi1")]
@@ -115,7 +115,7 @@ impl CredentialManager {
115115
let (data_tx, data_rx) = async_std::channel::bounded(1);
116116
tx.send((request, data_tx)).await.unwrap();
117117
let data_rx = Arc::new(data_rx);
118-
if let CredentialResponse::CreatePublicKeyCredentialResponse(cred_response) = data_rx.recv().await.unwrap() {
118+
if let Some(CredentialResponse::CreatePublicKeyCredentialResponse(cred_response)) = data_rx.recv().await.unwrap() {
119119
let public_key_response = CreatePublicKeyCredentialResponse::try_from_ctap2_response(&cred_response, client_data_json)?;
120120
Ok(public_key_response.into())
121121
}
@@ -169,7 +169,7 @@ impl CredentialManager {
169169
tx.send((request, data_tx)).await.unwrap();
170170
let data_rx = Arc::new(data_rx);
171171
match data_rx.recv().await {
172-
Ok(CredentialResponse::GetPublicKeyCredentialResponse(cred_response)) => {
172+
Ok(Some(CredentialResponse::GetPublicKeyCredentialResponse(cred_response))) => {
173173
let public_key_response = GetPublicKeyCredentialResponse::try_from_ctap2_response(&cred_response, client_data_json)?;
174174
Ok(public_key_response.into())
175175
},

0 commit comments

Comments
 (0)