fix(web): prevent UI flash by preserving user state in fetchMe and removing CSS pulse
This commit is contained in:
@@ -45,7 +45,7 @@ export function VersionNotifier() {
|
|||||||
if (!updateAvailable) return null;
|
if (!updateAvailable) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="bg-gb-accent text-gb-bg-h px-4 py-2 text-xs font-semibold flex items-center justify-between shadow-lg z-50 animate-pulse">
|
<div className="bg-gb-accent text-gb-bg-h px-4 py-2 text-xs font-semibold flex items-center justify-between shadow-lg z-50">
|
||||||
<span>🚀 A new update is available! ({serverVersion})</span>
|
<span>🚀 A new update is available! ({serverVersion})</span>
|
||||||
<button
|
<button
|
||||||
onClick={handleReload}
|
onClick={handleReload}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ function autoSubscribePush() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useAuthStore = create<AuthState>((set) => ({
|
export const useAuthStore = create<AuthState>((set, get) => ({
|
||||||
user: null,
|
user: null,
|
||||||
isAuthenticated: false,
|
isAuthenticated: false,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
@@ -146,7 +146,9 @@ export const useAuthStore = create<AuthState>((set) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
fetchMe: async () => {
|
fetchMe: async () => {
|
||||||
|
if (!get().user) {
|
||||||
set({ isLoading: true, error: null });
|
set({ isLoading: true, error: null });
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const user = await api.get<User>(`/auth/me?t=${Date.now()}`);
|
const user = await api.get<User>(`/auth/me?t=${Date.now()}`);
|
||||||
set({ user, isAuthenticated: true, isLoading: false });
|
set({ user, isAuthenticated: true, isLoading: false });
|
||||||
|
|||||||
@@ -125,7 +125,6 @@ export const useWebSocketStore = create<WebSocketState>((set, get) => ({
|
|||||||
|
|
||||||
if (data.type === 'error') {
|
if (data.type === 'error') {
|
||||||
console.error('ws error:', data);
|
console.error('ws error:', data);
|
||||||
useAuthStore.getState().fetchMe();
|
|
||||||
socket.close();
|
socket.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user