R50 通知推送:dispatcher 投递服务、业务事件接入与员工推送开关

这个提交包含在:
2026-04-05 11:21:39 +08:00
父节点 ff0a677bf3
当前提交 47e10e6acc
共修改 24 个文件,包含 1701 行新增和 197 行删除
+24 -1
查看文件
@@ -32,6 +32,7 @@ type AuthContextValue = AuthState & {
changePassword: (oldPassword: string, newPassword: string) => Promise<void>;
logout: () => Promise<void>;
bootstrapByRefresh: () => Promise<void>;
refreshMe: () => Promise<void>;
clearSession: () => void;
offlineAccessMode: boolean;
};
@@ -248,6 +249,27 @@ export function AuthProvider({ children }: PropsWithChildren) {
}
}, [clearSession]);
const refreshMe = useCallback(async () => {
let accessToken = tokenRef.current;
if (!accessToken) {
const refreshed = await refreshSession();
accessToken = refreshed.accessToken;
tokenRef.current = accessToken;
}
const me = await fetchCurrentEmployee(accessToken);
const permissions = resolvePermissionsForRoles(me.roleCodes ?? []);
setOfflineAccessMode(false);
writeOfflineAuthSnapshot(me, permissions);
setState((previous) => ({
...previous,
accessToken,
me,
permissions,
ready: true,
}));
}, []);
useEffect(() => {
configureHttpAuth({
getAccessToken: () => tokenRef.current,
@@ -311,10 +333,11 @@ export function AuthProvider({ children }: PropsWithChildren) {
changePassword,
logout,
bootstrapByRefresh,
refreshMe,
clearSession,
offlineAccessMode,
}),
[bootstrapByRefresh, changePassword, clearSession, login, logout, offlineAccessMode, state],
[bootstrapByRefresh, changePassword, clearSession, login, logout, offlineAccessMode, refreshMe, state],
);
return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;