feat: user profile/settings pages (#958)

This commit is contained in:
sct
2021-02-18 11:38:24 +09:00
committed by GitHub
parent 29b97ef6d8
commit bbb683e637
50 changed files with 2388 additions and 596 deletions

View File

@@ -5,6 +5,7 @@ import {
PermissionCheckOptions,
} from '../../server/lib/permissions';
import { UserType } from '../../server/constants/user';
import { mutateCallback } from 'swr/dist/types';
export { Permission, UserType };
@@ -17,6 +18,9 @@ export interface User {
avatar: string;
permissions: number;
userType: number;
createdAt: Date;
updatedAt: Date;
requestCount: number;
}
interface UserHookResponse {
@@ -24,6 +28,10 @@ interface UserHookResponse {
loading: boolean;
error: string;
revalidate: () => Promise<boolean>;
mutate: (
data?: User | Promise<User> | mutateCallback<User> | undefined,
shouldRevalidate?: boolean | undefined
) => Promise<User | undefined>;
hasPermission: (
permission: Permission | Permission[],
options?: PermissionCheckOptions
@@ -34,7 +42,7 @@ export const useUser = ({
id,
initialData,
}: { id?: number; initialData?: User } = {}): UserHookResponse => {
const { data, error, revalidate } = useSwr<User>(
const { data, error, revalidate, mutate } = useSwr<User>(
id ? `/api/v1/user/${id}` : `/api/v1/auth/me`,
{
initialData,
@@ -57,5 +65,6 @@ export const useUser = ({
error,
revalidate,
hasPermission: checkPermission,
mutate,
};
};