mirror of
https://github.com/pythops/bluetui.git
synced 2026-05-07 05:49:14 +08:00
fix the flow for display passkey
This commit is contained in:
24
src/agent.rs
24
src/agent.rs
@@ -165,17 +165,14 @@ pub async fn display_pin_code(request: DisplayPinCode, agent: AuthAgent) -> ReqR
|
||||
}
|
||||
|
||||
pub async fn display_passkey(request: DisplayPasskey, agent: AuthAgent) -> ReqResult<()> {
|
||||
agent
|
||||
.event_sender
|
||||
.send(Event::RequestDisplayPasskey(
|
||||
crate::requests::display_passkey::DisplayPasskey::new(
|
||||
request.adapter,
|
||||
request.device,
|
||||
request.passkey,
|
||||
request.entered.to_string(),
|
||||
),
|
||||
))
|
||||
.unwrap();
|
||||
let _ = agent.event_sender.send(Event::RequestDisplayPasskey(
|
||||
crate::requests::display_passkey::DisplayPasskey::new(
|
||||
request.adapter,
|
||||
request.device,
|
||||
request.passkey,
|
||||
request.entered,
|
||||
),
|
||||
));
|
||||
|
||||
tokio::select! {
|
||||
_ = agent.rx_display_passkey.recv() => {
|
||||
@@ -185,5 +182,10 @@ pub async fn display_passkey(request: DisplayPasskey, agent: AuthAgent) -> ReqRe
|
||||
_ = agent.rx_cancel.recv() => {
|
||||
Err(ReqError::Canceled)
|
||||
}
|
||||
|
||||
_ = request.cancel => {
|
||||
let _ = agent.event_sender.send(Event::DisplayPasskeySeen);
|
||||
Err(ReqError::Canceled)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ async fn main() -> AppResult<()> {
|
||||
|
||||
Event::RequestDisplayPasskey(request) => {
|
||||
if let Some(req) = &mut app.requests.display_passkey {
|
||||
req.entered.push_str(&request.entered);
|
||||
req.entered = request.entered;
|
||||
} else {
|
||||
app.requests.init_display_passkey(request);
|
||||
app.focused_block = bluetui::app::FocusedBlock::DisplayPasskey;
|
||||
|
||||
@@ -2,7 +2,7 @@ use ratatui::{
|
||||
Frame,
|
||||
layout::{Constraint, Direction, Layout, Margin},
|
||||
style::{Color, Style, Stylize},
|
||||
text::Line,
|
||||
text::{Line, Span},
|
||||
widgets::{Block, BorderType, Borders, Clear, Paragraph},
|
||||
};
|
||||
|
||||
@@ -15,11 +15,11 @@ pub struct DisplayPasskey {
|
||||
pub adapter: String,
|
||||
pub device: Address,
|
||||
pub passkey: u32,
|
||||
pub entered: String,
|
||||
pub entered: u16,
|
||||
}
|
||||
|
||||
impl DisplayPasskey {
|
||||
pub fn new(adapter: String, device: Address, passkey: u32, entered: String) -> Self {
|
||||
pub fn new(adapter: String, device: Address, passkey: u32, entered: u16) -> Self {
|
||||
Self {
|
||||
adapter,
|
||||
device,
|
||||
@@ -51,20 +51,33 @@ impl DisplayPasskey {
|
||||
.direction(Direction::Horizontal)
|
||||
.constraints([
|
||||
Constraint::Fill(1),
|
||||
Constraint::Max(60),
|
||||
Constraint::Max(70),
|
||||
Constraint::Fill(1),
|
||||
])
|
||||
.margin(1)
|
||||
.split(block)[1];
|
||||
|
||||
let message = vec![
|
||||
Line::from(format!("The Passkey: {}", self.passkey)),
|
||||
Line::from(format!("Entered passkey for the device {} ", self.device)).centered(),
|
||||
Line::from(format!("Authentication for the device {}", self.device)).centered(),
|
||||
Line::from(""),
|
||||
Line::from(self.entered.to_string())
|
||||
.centered()
|
||||
.bold()
|
||||
.bg(Color::DarkGray),
|
||||
Line::from(vec![
|
||||
Span::from("Enter the following passkey on the remote device: "),
|
||||
Span::styled(self.passkey.to_string(), Style::new().bold()),
|
||||
])
|
||||
.centered(),
|
||||
Line::from(""),
|
||||
Line::from({
|
||||
match self.entered {
|
||||
0 => ". - . - . - . - . - .",
|
||||
1 => "* - . - . - . - . - .",
|
||||
2 => "* - * - . - . - . - .",
|
||||
3 => "* - * - * - . - . - .",
|
||||
4 => "* - * - * - * - . - .",
|
||||
5 => "* - * - * - * - * - .",
|
||||
_ => "* - * - * - * - * - *",
|
||||
}
|
||||
})
|
||||
.centered(),
|
||||
];
|
||||
|
||||
let message = Paragraph::new(message).centered();
|
||||
|
||||
Reference in New Issue
Block a user