feature (UI): hiding password in login screen
This commit is contained in:
parent
2c894e895e
commit
124406e475
|
@ -3,18 +3,18 @@ use crossterm::{
|
|||
event::{self, DisableMouseCapture, EnableMouseCapture, Event, read},
|
||||
execute,
|
||||
terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
|
||||
style::{style},
|
||||
};
|
||||
use anyhow::{Error, Result};
|
||||
use std::io::Stdout;
|
||||
use std::io;
|
||||
use crossterm::style::style;
|
||||
use tui::{backend::CrosstermBackend, layout::{Constraint, Direction, Layout, Rect}, widgets::{Block, Borders, Widget}, Terminal, Frame};
|
||||
use tui::layout::Alignment;
|
||||
use tui::style::{Color, Modifier, Style};
|
||||
use tui::text::{Spans, Span, Text};
|
||||
use tui::widgets::{Paragraph, Wrap};
|
||||
use tui_textarea::{Input, Key, TextArea};
|
||||
|
||||
use tui_textarea::Key::Char;
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
enum SetupInputPosition {
|
||||
|
@ -198,6 +198,7 @@ impl UI {
|
|||
let mut homeserver = TextArea::default();
|
||||
let mut username = TextArea::default();
|
||||
let mut password = TextArea::default();
|
||||
let mut password_data = TextArea::default();
|
||||
|
||||
|
||||
homeserver.set_block(
|
||||
|
@ -283,7 +284,7 @@ impl UI {
|
|||
SetupInputPosition::Ok
|
||||
},
|
||||
SetupInputPosition::Ok => {
|
||||
if app.accounts_manager.add(&homeserver.lines()[0], &username.lines()[0], &password.lines()[0]).await.is_ok() {
|
||||
if app.accounts_manager.add(&homeserver.lines()[0], &username.lines()[0], &password_data.lines()[0]).await.is_ok() {
|
||||
return Ok(())
|
||||
}
|
||||
|
||||
|
@ -295,13 +296,18 @@ impl UI {
|
|||
}
|
||||
}
|
||||
input => {
|
||||
let textarea = match input_index {
|
||||
SetupInputPosition::Homeserver => &mut homeserver,
|
||||
SetupInputPosition::Username => &mut username,
|
||||
SetupInputPosition::Password => &mut password,
|
||||
match input_index {
|
||||
SetupInputPosition::Homeserver => { homeserver.input(input); },
|
||||
SetupInputPosition::Username => { username.input(input); },
|
||||
SetupInputPosition::Password => {
|
||||
password_data.input(input.clone());
|
||||
match input.key {
|
||||
Char(_) => { password.input(Input { key: Char('*'), ctrl: false, alt: false }); },
|
||||
_ => { password.input(input); },
|
||||
}
|
||||
},
|
||||
_ => continue,
|
||||
};
|
||||
textarea.input(input);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Reference in New Issue