feat: Refactor API interactions and enhance user settings management

- Updated ezpp API to include user info retrieval and improved error handling.
- Introduced new writable stores for current user info and loading states.
- Added gamemode enums and utility functions for better gamemode handling.
- Refactored global state management to use consistent naming conventions.
- Enhanced loading and login components to provide better user feedback.
- Updated user settings to include preferred mode and type.
- Improved layout and page components for better state management and user experience.
This commit is contained in:
2025-07-03 11:46:50 +02:00
parent 892f2cea07
commit 651592c333
13 changed files with 680 additions and 128 deletions

View File

@@ -1,6 +1,97 @@
export type EZPPUserResponse = {
code: number;
message: string;
user?: EZPPUser;
};
export type EZPPUser = {
id: number;
donor: boolean;
name: string;
email: string;
};
export type EZPPUserInfoResponse = {
status: string;
player: EZPPUserInfo;
};
export type EZPPUserInfo = {
info: {
id: number;
name: string;
safe_name: string;
priv: number;
country: string;
silence_end: number;
donor_end: number;
creation_time: number;
latest_activity: number;
clan_id: number;
clan_priv: number;
preferred_mode: number;
preferred_type: number;
play_style: number;
custom_badge_enabled: number;
custom_badge_name: string;
custom_badge_icon: string;
custom_badge_color: string;
userpage_content: string;
recentFailed: number;
social_discord: string;
social_youtube: string;
social_twitter: string;
social_twitch: string;
social_github: string;
social_osu: string;
clan: {
id: number;
name: string;
tag: string;
owner: number;
created_at: Date;
};
username_history: string[];
};
stats: {
[key: string]: {
id: number;
mode: number;
tscore: number;
rscore: number;
pp: number;
plays: number;
playtime: number;
acc: number;
max_combo: number;
total_hits: number;
replay_views: number;
xh_count: number;
x_count: number;
sh_count: number;
s_count: number;
a_count: number;
level: number;
level_progress: number;
rank: number;
country_rank: number;
history: {
pp: number[];
};
};
};
events: {
userId: number;
name: string;
mapId: number;
setId: number;
artist: string;
title: string;
version: string;
mode: number;
rank: number;
grade: string;
event: 'GAINED' | 'LOST';
time: Date;
}[];
};