wip
Seto Elkahfi committed
Aug 4, 2024 at 20:15 UTC
bd6ecfdfd7484ecb45672c98931651d2aeea7cc9
6 files changed
+58
-56
backend/musik88-web/app/controllers/api/v1/user_controller.rb
+2
@@ -7,9 +7,11 @@ module Api
7
def login
8
find_user
9
if @user&.valid_password?(params[:password])
10
+ logger.debug 'User logged in.'
11
sign_in(:user, @user)
12
render_success
13
else
14
+ logger.debug 'Invalid credentials.'
15
render_error 'Invalid credentials.'
16
end
17
end
frontend/splitfire-desktop/app/debug/page.tsx
+1
-1
@@ -9,7 +9,7 @@ import {
9
import { useEffect, useState } from "react";
10
import { TauriResponse } from "@/models/shared";
11
import { useLogger } from "@/lib/logger";
12
-import { LoadingView } from "@/components/ui/LoadingView";
12
+import { LoadingView } from "@/components/ui/loading-view";
13
import { Button } from "@/components/button";
14
15
enum State {
frontend/splitfire-desktop/app/login/page.tsx
+1
-1
@@ -10,7 +10,7 @@ import { AccountLoginResponse } from "@/models/account";
10
import { useRouter } from "next/navigation";
11
import { TauriResponse } from "@/models/shared";
12
import { Mode } from "@/models/mode";
13
-import { LoadingView } from "@/components/ui/LoadingView";
13
+import { LoadingView } from "@/components/ui/loading-view";
14
import { useLogger } from "@/lib/logger";
15
import { Button } from "@/components/button";
16
frontend/splitfire-desktop/app/split/_components/button-split.tsx
+1
-1
@@ -1,4 +1,4 @@
1
-import { LoadingView } from "@/components/ui/LoadingView";
1
+import { LoadingView } from "@/components/ui/loading-view";
2
import { UserContext } from "@/lib/current-user-context";
3
import { AudioFile, Status } from "@/models/audio-file";
4
import { CountdownTimerIcon, LapTimerIcon, RocketIcon } from "@radix-ui/react-icons";
frontend/splitfire-desktop/components/ui/loading-view.tsx
renamed
+1
-1
@@ -1,6 +1,6 @@
1
export function LoadingView() {
2
// Tailwindcss loading spinner
3
- return <div className="flex justify-center items-center h-screen">
3
+ return <div className="flex justify-center items-center">
4
<div className="animate-spin rounded-full h-32 w-32 border-t-2 border-b-2 border-red-500"></div>
5
</div>
6
}
\ No newline at end of file
frontend/splitfire-desktop/src-tauri/src/rest/account.rs
+52
-52
@@ -1,13 +1,17 @@
1
use crate::{
2
command::constants::{
3
- base_url_builder, PATH_ACCOUNT_LOGIN, PATH_ACCOUNT_LOGOUT, PATH_ACCOUNT_PROFILE, PATH_ACCOUNT_REGISTER
3
+ base_url_builder, PATH_ACCOUNT_LOGIN, PATH_ACCOUNT_LOGOUT, PATH_ACCOUNT_PROFILE,
4
+ PATH_ACCOUNT_REGISTER,
5
},
6
models::{
6
- account::{AccountLoginResponse, AccountProfileResponse, AccountRegisterResponse, LoginResponse, ProfileResponse, RegisterResponse},
7
+ account::{
8
+ AccountLoginResponse, AccountProfileResponse, AccountRegisterResponse, LoginResponse,
9
+ ProfileResponse, RegisterResponse,
10
+ },
11
player::TauriResponse,
12
},
13
};
10
-use log::debug;
14
+use log::{debug, error};
15
use reqwest::Client;
16
use serde_json::json;
17
use tauri;
@@ -29,65 +33,64 @@ pub async fn account_login(username: String, password: String) -> AccountLoginRe
33
.send()
34
.await;
35
32
- match response {
33
- Ok(response) => {
34
- let token = match response.headers().get("Authorization") {
35
- Some(token) => {
36
- // Trim Bearer prefix
37
- let token = match token.to_str() {
38
- Ok(token) => token.trim_start_matches("Bearer "),
39
- Err(e) => {
40
- println!("Failed to get token: {:?}", e);
41
- return AccountLoginResponse {
42
- status: TauriResponse::Error,
43
- message: "Failed to get token".to_string(),
44
- access_token: None,
45
- user: None,
46
- };
47
- }
48
- };
49
- Some(token.to_string())
50
- }
51
- None => {
52
- println!("Failed to get token");
53
- return AccountLoginResponse {
54
- status: TauriResponse::Error,
55
- message: "Failed to get token".to_string(),
56
- access_token: None,
57
- user: None,
58
- };
59
- }
36
+ let res = match response {
37
+ Ok(response) => response,
38
+ Err(e) => {
39
+ debug!("Failed to get response: {:?}", e);
40
+ return AccountLoginResponse {
41
+ status: TauriResponse::Error,
42
+ message: e.to_string(),
43
+ access_token: None,
44
+ user: None,
45
};
61
- debug!("Token: {:?}", token);
62
- let res: LoginResponse = match response.json().await {
63
- Ok(json) => json,
46
+ }
47
+ };
48
+ let token = match res.headers().get("Authorization") {
49
+ Some(token) => {
50
+ // Trim Bearer prefix
51
+ let token = match token.to_str() {
52
+ Ok(token) => token.trim_start_matches("Bearer "),
53
Err(e) => {
65
- println!("Failed to parse response: {:?}", e);
54
+ error!("Cannot convert token to str: {:?}", e);
55
return AccountLoginResponse {
56
status: TauriResponse::Error,
68
- message: "Failed to parse response".to_string(),
57
+ message: e.to_string(),
58
access_token: None,
59
user: None,
60
};
61
}
62
};
74
- debug!("Login response: {:?}", res);
75
- AccountLoginResponse {
76
- status: TauriResponse::Success,
77
- message: res.message,
78
- access_token: token,
79
- user: res.user,
80
- }
63
+ Some(token.to_string())
64
}
65
+ None => {
66
+ error!("No Authorization header found.");
67
+ return AccountLoginResponse {
68
+ status: TauriResponse::Error,
69
+ message: "No Authorization header found".to_string(),
70
+ access_token: None,
71
+ user: None,
72
+ };
73
+ }
74
+ };
75
+ debug!("Token: {:?}", token);
76
+ let res: LoginResponse = match res.json().await {
77
+ Ok(json) => json,
78
Err(e) => {
83
- println!("Failed to get response: {:?}", e);
84
- AccountLoginResponse {
79
+ error!("Failed to parse response: {:?}", e);
80
+ return AccountLoginResponse {
81
status: TauriResponse::Error,
86
- message: "Failed to get response".to_string(),
82
+ message: e.to_string(),
83
access_token: None,
84
user: None,
89
- }
85
+ };
86
}
87
+ };
88
+ debug!("Login response: {:?}", res);
89
+ AccountLoginResponse {
90
+ status: TauriResponse::Success,
91
+ message: res.message,
92
+ access_token: token,
93
+ user: res.user,
94
}
95
}
96
@@ -164,13 +167,10 @@ pub async fn account_register(
167
168
#[tauri::command]
169
pub async fn account_profile(user_id: String) -> AccountProfileResponse {
167
- debug!("Getting profile for user_id {}", user_id);
170
+ debug!("Getting profile for user_id {}", user_id);
171
// Get profile
172
let url = account_url_builder(PATH_ACCOUNT_PROFILE).replace("{userId}", &user_id);
170
- let response = Client::new()
171
- .get(&url)
172
- .send()
173
- .await;
173
+ let response = Client::new().get(&url).send().await;
174
175
let response = match response {
176
Ok(response) => response,