@@ -9,6 +9,7 @@ use crate::notification::Notification;
99
1010use crossterm:: event:: { KeyCode , KeyEvent , KeyModifiers } ;
1111use iwdrs:: modes:: Mode ;
12+ use iwdrs:: network:: NetworkType ;
1213use tokio:: sync:: mpsc:: UnboundedSender ;
1314use tui_input:: backend:: crossterm:: EventHandler ;
1415
@@ -18,6 +19,11 @@ async fn toggle_connect(app: &mut App, sender: UnboundedSender<Event>) -> AppRes
1819 FocusedBlock :: NewNetworks => {
1920 if let Some ( net_index) = station. new_networks_state . selected ( ) {
2021 let ( net, _) = station. new_networks [ net_index] . clone ( ) ;
22+
23+ if net. network_type == NetworkType :: Eap {
24+ sender. send ( Event :: ConfigureNewEapNetwork ( net. name . clone ( ) ) ) ?;
25+ return Ok ( ( ) ) ;
26+ }
2127 tokio:: spawn ( async move {
2228 net. connect ( sender. clone ( ) ) . await . unwrap ( ) ;
2329 } ) ;
@@ -205,9 +211,72 @@ pub async fn handle_key_events(
205211 }
206212 } ,
207213
208- FocusedBlock :: WpaEntrepriseAuth => {
209- unimplemented ! ( )
214+ FocusedBlock :: RequestKeyPasshphrase => {
215+ if let Some ( req) = & mut app. auth . request_key_passphrase {
216+ match key_event. code {
217+ KeyCode :: Enter => {
218+ req. submit ( & app. agent ) . await ?;
219+ app. focused_block = FocusedBlock :: KnownNetworks ;
220+ }
221+
222+ KeyCode :: Esc => {
223+ req. cancel ( & app. agent ) . await ?;
224+ app. auth . request_key_passphrase = None ;
225+ app. focused_block = FocusedBlock :: KnownNetworks ;
226+ }
227+
228+ KeyCode :: Tab => {
229+ req. show_password = !req. show_password ;
230+ }
231+
232+ _ => {
233+ req. passphrase
234+ . handle_event ( & crossterm:: event:: Event :: Key ( key_event) ) ;
235+ }
236+ }
237+ }
210238 }
239+ FocusedBlock :: RequestPassword => {
240+ if let Some ( req) = & mut app. auth . request_password {
241+ match key_event. code {
242+ KeyCode :: Enter => {
243+ req. submit ( & app. agent ) . await ?;
244+ app. focused_block = FocusedBlock :: KnownNetworks ;
245+ }
246+
247+ KeyCode :: Esc => {
248+ req. cancel ( & app. agent ) . await ?;
249+ app. auth . request_password = None ;
250+ app. focused_block = FocusedBlock :: KnownNetworks ;
251+ }
252+
253+ KeyCode :: Tab => {
254+ req. show_password = !req. show_password ;
255+ }
256+
257+ _ => {
258+ req. password
259+ . handle_event ( & crossterm:: event:: Event :: Key ( key_event) ) ;
260+ }
261+ }
262+ }
263+ }
264+
265+ FocusedBlock :: WpaEntrepriseAuth => match key_event. code {
266+ KeyCode :: Esc => {
267+ app. focused_block = FocusedBlock :: NewNetworks ;
268+ app. auth . reset ( ) ;
269+ }
270+
271+ _ => {
272+ app. auth
273+ . eap
274+ . as_mut ( )
275+ . unwrap ( )
276+ . handle_key_events ( key_event, sender)
277+ . await ?
278+ }
279+ } ,
211280 FocusedBlock :: AdapterInfos => {
212281 if key_event. code == KeyCode :: Esc {
213282 app. focused_block = FocusedBlock :: Device ;
@@ -344,7 +413,7 @@ pub async fn handle_key_events(
344413 toggle_connect ( app, sender) . await ?
345414 }
346415 KeyCode :: Char ( 'j' ) | KeyCode :: Down => {
347- if !station. known_networks . is_empty ( ) {
416+ if !station. new_networks . is_empty ( ) {
348417 let i = match station. new_networks_state . selected ( ) {
349418 Some ( i) => {
350419 if i < station. new_networks . len ( ) - 1 {
0 commit comments