feat: first commit
This commit is contained in:
46
src/utils/app.ts
Normal file
46
src/utils/app.ts
Normal file
@ -0,0 +1,46 @@
|
||||
import { RoleType, PageUrl } from '@/constants/app';
|
||||
import { CollectEventName } from '@/constants/event';
|
||||
import { ANCHOR_TAB_LIST, COMPANY_TAB_LIST } from '@/hooks/use-config';
|
||||
import http from '@/http';
|
||||
import { API } from '@/http/api';
|
||||
import store from '@/store';
|
||||
import { changeRoleType, changeHomePage } from '@/store/actions';
|
||||
import { selectRoleType } from '@/store/selector';
|
||||
import { sleep } from '@/utils/common';
|
||||
import { collectEvent } from '@/utils/event';
|
||||
import { switchTab } from '@/utils/route';
|
||||
import Toast from '@/utils/toast';
|
||||
|
||||
const postSwitchRoleType = (appMode: RoleType) => {
|
||||
const data = { roleType: appMode };
|
||||
return http.post(API.APP_MODE_SWITCH, { data });
|
||||
};
|
||||
|
||||
export const getRoleType = () => selectRoleType(store.getState());
|
||||
|
||||
export const isAnchorMode = () => getRoleType() === RoleType.Anchor;
|
||||
|
||||
export const isCompanyMode = () => getRoleType() === RoleType.Company;
|
||||
|
||||
export const switchDefaultTab = async () => {
|
||||
await sleep(1);
|
||||
const mode = getRoleType();
|
||||
const tabList = mode === RoleType.Anchor ? ANCHOR_TAB_LIST : COMPANY_TAB_LIST;
|
||||
const item = tabList[0];
|
||||
store.dispatch(changeHomePage(item.type));
|
||||
switchTab(item.pagePath as PageUrl);
|
||||
};
|
||||
|
||||
export const switchRoleType = async (appMode?: RoleType) => {
|
||||
if (!appMode) {
|
||||
const curMode = getRoleType();
|
||||
appMode = curMode === RoleType.Anchor ? RoleType.Company : RoleType.Anchor;
|
||||
}
|
||||
try {
|
||||
await postSwitchRoleType(appMode);
|
||||
store.dispatch(changeRoleType(appMode));
|
||||
} catch (e) {
|
||||
collectEvent(CollectEventName.SWITCH_APP_MODE_FAILED);
|
||||
Toast.error('切换失败请重试');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user