refactor: login-logout action

This commit is contained in:
mokurin000
2025-07-31 02:04:49 +08:00
parent 125091c76d
commit 7742a8b011
5 changed files with 86 additions and 60 deletions

View File

@@ -1,6 +1,8 @@
use aes::cipher::{block_padding::UnpadError, inout::PadError};
use snafu::Snafu;
use crate::title::model::LoginError;
#[derive(Debug, Snafu)]
pub enum ApiError {
JoinError,
@@ -33,6 +35,12 @@ pub enum ApiError {
Request {
source: nyquest::Error,
},
#[snafu(display("login error: {source}"))]
#[snafu(context(false))]
Login {
source: LoginError,
},
}
impl From<UnpadError> for ApiError {

View File

@@ -8,7 +8,7 @@ mod user_logout_api;
pub use user_logout_api::{UserLogoutApi, UserLogoutApiResp};
mod user_login_api;
pub use user_login_api::{UserLoginApi, UserLoginApiResp};
pub use user_login_api::{LoginError, UserLoginApi, UserLoginApiResp};
mod get_user_data_api;
pub use get_user_data_api::{GetUserDataApi, GetUserDataApiResp};

View File

@@ -52,3 +52,28 @@ impl UserLoginApi {
}
}
}
impl UserLoginApiResp {
pub fn error(&self) -> Option<LoginError> {
match self.return_code {
1 => None,
100 => Some(LoginError::AlreadyLogged),
102 => Some(LoginError::QRCodeExpired),
103 => Some(LoginError::AccountUnregistered),
error @ _ => Some(LoginError::Unknown { error }),
}
}
}
#[derive(Debug, snafu::Snafu)]
pub enum LoginError {
#[snafu(display("QRCode was expired"))]
QRCodeExpired,
#[snafu(display("You did not logout last session"))]
AlreadyLogged,
#[snafu(display("userId does not exist"))]
AccountUnregistered,
#[snafu(display("Unknown error: {error}"))]
Unknown { error: i32 },
}