refactor happend and its perfectly fine
This commit is contained in:
@@ -11,7 +11,7 @@ use anyhow::{Context, Result};
|
||||
use crate::tui::functions::common::{
|
||||
form::{save as form_save, revert as form_revert},
|
||||
login::{save as login_save, revert as login_revert},
|
||||
register::{save as register_save, revert as register_revert},
|
||||
register::{revert as register_revert},
|
||||
};
|
||||
|
||||
pub async fn handle_core_action(
|
||||
@@ -32,9 +32,6 @@ pub async fn handle_core_action(
|
||||
if app_state.ui.show_login {
|
||||
let message = login_save(auth_state, login_state, auth_client, app_state).await.context("Login save action failed")?;
|
||||
Ok(EventOutcome::Ok(message))
|
||||
} else if app_state.ui.show_register {
|
||||
let message = register_save(register_state, auth_client, app_state).await.context("Register save_and_quit action failed")?;
|
||||
Ok(EventOutcome::Ok(message))
|
||||
} else {
|
||||
let save_outcome = form_save(
|
||||
form_state,
|
||||
@@ -57,8 +54,6 @@ pub async fn handle_core_action(
|
||||
"save_and_quit" => {
|
||||
let message = if app_state.ui.show_login {
|
||||
login_save(auth_state, login_state, auth_client, app_state).await.context("Login save n quit action failed")?
|
||||
} else if app_state.ui.show_register {
|
||||
register_save(register_state, auth_client, app_state).await.context("Register save n quit action failed")?
|
||||
} else {
|
||||
let save_outcome = form_save(
|
||||
form_state,
|
||||
|
||||
@@ -12,11 +12,7 @@ use anyhow::{Context, Result};
|
||||
use crate::tui::{
|
||||
terminal::core::TerminalCore,
|
||||
functions::{
|
||||
common::{
|
||||
form::SaveOutcome,
|
||||
login,
|
||||
register,
|
||||
},
|
||||
common::{form::SaveOutcome, login, register},
|
||||
},
|
||||
{intro, admin},
|
||||
};
|
||||
@@ -42,8 +38,8 @@ use crate::modes::{
|
||||
};
|
||||
use crate::functions::modes::navigation::{admin_nav, add_table_nav};
|
||||
use crate::config::binds::key_sequences::KeySequenceTracker;
|
||||
use tokio::spawn;
|
||||
use tokio::sync::mpsc;
|
||||
use tokio::spawn;
|
||||
use crate::tui::functions::common::login::LoginResult;
|
||||
use crate::tui::functions::common::register::RegisterResult;
|
||||
|
||||
@@ -286,50 +282,8 @@ impl EventHandler {
|
||||
}
|
||||
UiContext::Register => {
|
||||
let register_action_message = match index {
|
||||
0 => { // "Register" button pressed
|
||||
// Clone necessary data
|
||||
let username = register_state.username.clone();
|
||||
let email = register_state.email.clone();
|
||||
let password = register_state.password.clone();
|
||||
let password_confirmation = register_state.password_confirmation.clone();
|
||||
let role = register_state.role.clone();
|
||||
|
||||
// 1. Client-side validation (similar to register::save)
|
||||
if username.trim().is_empty() {
|
||||
app_state.show_dialog("Registration Failed", "Username cannot be empty.", vec!["OK".to_string()], DialogPurpose::RegisterFailed);
|
||||
"Username cannot be empty.".to_string()
|
||||
} else if !password.is_empty() && password != password_confirmation {
|
||||
app_state.show_dialog("Registration Failed", "Passwords do not match.", vec!["OK".to_string()], DialogPurpose::RegisterFailed);
|
||||
"Passwords do not match.".to_string()
|
||||
} else {
|
||||
// 2. Show Loading Dialog
|
||||
app_state.show_loading_dialog("Registering", "Please wait...");
|
||||
|
||||
// 3. Clone sender for the task
|
||||
let sender = self.register_result_sender.clone();
|
||||
|
||||
// 4. Spawn the registration task
|
||||
spawn(async move {
|
||||
let register_outcome = match AuthClient::new().await {
|
||||
Ok(mut auth_client) => {
|
||||
// Handle optional fields correctly for the gRPC call
|
||||
let password_opt = if password.is_empty() { None } else { Some(password) };
|
||||
let password_conf_opt = if password_confirmation.is_empty() { None } else { Some(password_confirmation) };
|
||||
let role_opt = if role.is_empty() { None } else { Some(role) };
|
||||
|
||||
match auth_client.register(username.clone(), email, password_opt, password_conf_opt, role_opt).await {
|
||||
Ok(response) => register::RegisterResult::Success(response),
|
||||
Err(e) => register::RegisterResult::Failure(format!("{}", e)),
|
||||
}
|
||||
}
|
||||
Err(e) => register::RegisterResult::ConnectionError(format!("Failed to create AuthClient: {}", e)),
|
||||
};
|
||||
let _ = sender.send(register_outcome).await;
|
||||
});
|
||||
|
||||
// 5. Return immediately
|
||||
"Registration initiated.".to_string()
|
||||
}
|
||||
0 => {
|
||||
register::initiate_registration(register_state, app_state, self.register_result_sender.clone())
|
||||
},
|
||||
1 => register::back_to_login(register_state, app_state, buffer_state).await,
|
||||
_ => "Invalid Login Option".to_string(),
|
||||
|
||||
Reference in New Issue
Block a user