refactor: simplify profile lookup and navigation logic commit

This commit is contained in:
mengstabketemaw
2026-06-27 09:37:29 +03:00
parent 83dafbfd7c
commit 1a472a6db3
3 changed files with 30 additions and 59 deletions

View File

@@ -46,7 +46,7 @@ export function LoginPage() {
const [rememberMe, setRememberMe] = useState(true);
const [loginTrigger] = useApiMutation<LoginPayload>();
const [meTrigger] = useApiMutation<AuthUser>();
const [profileCheckTrigger] = useApiMutation<{ total: number; items: Array<{ id: string; user: { id: string }; isComplete: boolean }> }>();
const [profileCheckTrigger] = useApiMutation<{ id: string }>();
const {
register,
@@ -72,31 +72,35 @@ export function LoginPage() {
}).unwrap();
dispatch(setUser(me));
let hasProfile = false;
try {
const profiles = await profileCheckTrigger({
url: `/profiles?q=${encodeURIComponent('i=user')}`,
const profile = await profileCheckTrigger({
url: `/profiles/by-user/${me.id}`,
method: 'GET',
}).unwrap();
const userProfile = profiles.items?.find((p) => p.user?.id === me.id);
if (userProfile?.isComplete) {
authStorage.setProfileId(userProfile.id);
} else {
navigate('/profile-setup');
return;
}
authStorage.setProfileId(profile.id);
hasProfile = true;
} catch {
// profile not found — redirect to setup
}
if (!me.isPhoneNumberVerified) {
navigate('/otp-verify', {
state: {
email: me.email,
phoneNumber: me.phoneNumber,
needsProfile: !hasProfile,
},
});
return;
}
if (!hasProfile) {
navigate('/profile-setup');
return;
}
if (me.isPhoneNumberVerified) {
navigate(loginRedirectPath);
} else {
navigate('/otp-verify', {
state: { email: me.email, phoneNumber: me.phoneNumber },
});
}
navigate(loginRedirectPath);
} catch {
notify.error('Invalid email or password');
} finally {