fix(mobile): refresh official position on login
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import type { MobileIdentity, OrgSnapshotResponse, RoleKey } from '@/types/api';
|
||||
import type { MobileIdentity, RoleKey } from '@/types/api';
|
||||
import { apiRequest } from './api';
|
||||
import {
|
||||
getAuth,
|
||||
hasSelectedPosition,
|
||||
normalizePosition,
|
||||
roleKey,
|
||||
@@ -56,18 +55,15 @@ export const goToMobileTarget = (url: string) => {
|
||||
uni.redirectTo({ url });
|
||||
};
|
||||
|
||||
export const hydratePositionFromOrg = async (phone = getAuth().phone): Promise<UserPosition | ''> => {
|
||||
const keyword = phone.trim();
|
||||
if (!keyword) return '';
|
||||
export const hydratePositionFromOrg = async (): Promise<UserPosition | ''> => {
|
||||
try {
|
||||
const snapshot = await apiRequest<OrgSnapshotResponse>({
|
||||
url: `/api/aihr/org/snapshot?keyword=${encodeURIComponent(keyword)}&status=active&pageSize=1`,
|
||||
const identity = await apiRequest<MobileIdentity>({
|
||||
url: '/api/aihr/mobile/me',
|
||||
method: 'GET',
|
||||
timeout: 15000,
|
||||
clearAuthOnUnauthorized: false
|
||||
});
|
||||
const officialPosition = snapshot.rows?.[0]?.positionName || '';
|
||||
return saveSelectedPosition(officialPosition);
|
||||
return saveSelectedPosition(identity.positionName);
|
||||
} catch {
|
||||
return '';
|
||||
}
|
||||
@@ -77,9 +73,10 @@ export const nextUserRouteAfterLogin = async (redirect: string) => {
|
||||
const role = await hydrateMobileRole();
|
||||
const roleRoute = routeForMobileRole(role, redirect);
|
||||
if (roleRoute !== redirect) return roleRoute;
|
||||
if (!isUserRoute(redirect) || hasSelectedPosition()) return redirect;
|
||||
if (!isUserRoute(redirect)) return redirect;
|
||||
const officialPosition = await hydratePositionFromOrg();
|
||||
return normalizePosition(officialPosition) ? redirect : positionSetupUrl(redirect);
|
||||
if (normalizePosition(officialPosition) || hasSelectedPosition()) return redirect;
|
||||
return positionSetupUrl(redirect);
|
||||
};
|
||||
|
||||
export const ensureEmployeePosition = async (redirect: string) => {
|
||||
|
||||
Reference in New Issue
Block a user