mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-07 08:06:37 +08:00
fix(frontend): keep browser API on same-origin rewrites in dev
Document that NEXT_PUBLIC_WAVELET_BACKEND_URL must stay unset for local next dev so axios hits /api/* and Next rewrites proxy to the backend.
This commit is contained in:
@@ -17,6 +17,7 @@ import type {
|
||||
UpdateUserRequest,
|
||||
} from '@/lib/services/admin';
|
||||
import services from '@/lib/services';
|
||||
import { useTranslations } from 'next-intl';
|
||||
|
||||
/** 用户列表查询参数 */
|
||||
export interface UserQueryParams {
|
||||
@@ -69,6 +70,7 @@ export function AdminUsersProvider({
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
const t = useTranslations('contexts.adminUsers');
|
||||
// State
|
||||
const [users, setUsers] = useState<AdminUser[]>([]);
|
||||
const [total, setTotal] = useState(0);
|
||||
@@ -237,7 +239,10 @@ export function AdminUsersProvider({
|
||||
is_active: !user.is_active,
|
||||
});
|
||||
toast.success(
|
||||
`已${!user.is_active ? '启用' : '禁用'}用户 ${user.username}`,
|
||||
t('userStatusChanged', {
|
||||
action: !user.is_active ? t('enabled') : t('disabled'),
|
||||
username: user.username,
|
||||
}),
|
||||
);
|
||||
} catch {
|
||||
// Revert on error
|
||||
@@ -246,7 +251,7 @@ export function AdminUsersProvider({
|
||||
u.id === user.id ? { ...u, is_active: originalStatus } : u,
|
||||
),
|
||||
);
|
||||
toast.error('更新状态失败');
|
||||
toast.error(t('updateStatusFailed'));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -261,10 +266,10 @@ export function AdminUsersProvider({
|
||||
setTotal((prev) => prev + 1);
|
||||
// Clear cache because data changed
|
||||
cacheRef.current = {};
|
||||
toast.success(`已成功创建用户 ${newUser.username}`);
|
||||
toast.success(t('userCreated', { username: newUser.username }));
|
||||
return newUser;
|
||||
} catch (err) {
|
||||
toast.error(err instanceof Error ? err.message : '创建用户失败');
|
||||
toast.error(err instanceof Error ? err.message : t('createUserFailed'));
|
||||
throw err;
|
||||
}
|
||||
};
|
||||
@@ -275,9 +280,9 @@ export function AdminUsersProvider({
|
||||
setUsers((prev) => prev.filter((u) => u.id !== user.id));
|
||||
setTotal((prev) => Math.max(0, prev - 1));
|
||||
cacheRef.current = {};
|
||||
toast.success(`已删除用户 ${user.username}`);
|
||||
toast.success(t('userDeleted', { username: user.username }));
|
||||
} catch (err) {
|
||||
toast.error(err instanceof Error ? err.message : '删除用户失败');
|
||||
toast.error(err instanceof Error ? err.message : t('deleteUserFailed'));
|
||||
throw err;
|
||||
}
|
||||
};
|
||||
@@ -287,9 +292,9 @@ export function AdminUsersProvider({
|
||||
await services.adminUser.updateUser(id, req);
|
||||
setUsers((prev) => prev.map((u) => (u.id === id ? { ...u, ...req } : u)));
|
||||
cacheRef.current = {};
|
||||
toast.success('更新用户信息成功');
|
||||
toast.success(t('updateUserSuccess'));
|
||||
} catch (err) {
|
||||
toast.error(err instanceof Error ? err.message : '更新用户信息失败');
|
||||
toast.error(err instanceof Error ? err.message : t('updateUserFailed'));
|
||||
throw err;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user