Skip to content

Commit

Permalink
Merge pull request #229 from mash-up-kr/release/1.2.0
Browse files Browse the repository at this point in the history
Main Release/v1.2.0
  • Loading branch information
mango906 committed Jan 8, 2023
2 parents 6f512e2 + 718ba86 commit f6640c9
Show file tree
Hide file tree
Showing 93 changed files with 2,411 additions and 307 deletions.
47 changes: 42 additions & 5 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import React, { ReactNode, Suspense } from 'react';
import React, { ReactNode, Suspense, useEffect } from 'react';
import { Routes, Route, Navigate, NavigateProps, useNavigate } from 'react-router-dom';
import { Global, ThemeProvider } from '@emotion/react';
import { useRecoilValue, useRecoilCallback } from 'recoil';
import { ModalViewer, Layout, Toast } from '@/components';

import { theme, globalStyles } from './styles';

import { $me, $isAuthorized, $teams, $toast } from './store';
import { $me, $isAuthorized, $teams, $toast, $generations, $generationNumber } from './store';
import * as api from './api';
import { ACCESS_TOKEN, PATH } from './constants';

Expand All @@ -19,6 +19,8 @@ import {
CreateApplicationForm,
UpdateApplicationForm,
ApplicationFormDetail,
ActivityScoreList,
ActivityScoreDetail,
ErrorPage,
} from './pages';

Expand All @@ -41,16 +43,26 @@ const App = () => {
const TOKEN = localStorage.getItem(ACCESS_TOKEN);
const isAuthorized = useRecoilValue($isAuthorized) || !!TOKEN;
const toast = useRecoilValue($toast);
const generationNumber = useRecoilValue($generationNumber);

const getTeams = useRecoilCallback(({ set }) => async () => {
const { data: teams } = await api.getTeams(generationNumber);

set($teams, teams);
});

useRecoilCallback(({ snapshot, set, reset }) => async () => {
const isAuthorizedSnapshot = snapshot.getLoadable($isAuthorized).contents;

try {
if (!isAuthorizedSnapshot && !!TOKEN) {
const { data: me } = await api.getMyInfo();
const { data: teams } = await api.getTeams();
const [{ data: me }, { data: generations }] = await Promise.all([
api.getMyInfo(),
api.getGenerations(),
]);

set($me, { accessToken: TOKEN as string, adminMember: me });
set($teams, teams);
set($generations, generations);
}
} catch (e) {
localStorage.removeItem(ACCESS_TOKEN);
Expand All @@ -59,6 +71,15 @@ const App = () => {
}
})();

useEffect(() => {
if (!isAuthorized) {
return;
}

getTeams();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isAuthorized, generationNumber]);

return (
<ThemeProvider theme={theme}>
<Suspense fallback={null}>
Expand Down Expand Up @@ -122,6 +143,22 @@ const App = () => {
</RequiredAuth>
}
/>
<Route
path={PATH.ACTIVITY_SCORE}
element={
<RequiredAuth isAuth={isAuthorized}>
<ActivityScoreList />
</RequiredAuth>
}
/>
<Route
path={PATH.ACTIVITY_SCORE_DETAIL}
element={
<RequiredAuth isAuth={isAuthorized}>
<ActivityScoreDetail />
</RequiredAuth>
}
/>
<Route path="/" element={<Navigate to={TOKEN ? PATH.APPLICATION : PATH.LOGIN} />} />
</Route>
<Route
Expand Down
6 changes: 6 additions & 0 deletions src/api/generation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { BaseResponse, GenerationResponse } from '@/types';

import http from '@/api/core';

export const getGenerations = (): Promise<BaseResponse<GenerationResponse>> =>
http.get({ url: '/generations' });
3 changes: 3 additions & 0 deletions src/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ export * from './application';
export * from './applicationForm';
export * from './team';
export * from './sms';
export * from './generation';
export * from './member';
export * from './scoreHistory';
20 changes: 20 additions & 0 deletions src/api/member.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import {
MemberRequest,
MemberResponse,
BaseResponse,
MemberByIdRequest,
MemberByIdResponseData,
} from '@/types';
import http from '@/api/core';

export const getMembers = ({
generationNumber,
...params
}: MemberRequest): Promise<BaseResponse<MemberResponse[]>> =>
http.get({ url: `/members/${generationNumber}`, params });

export const getMemberById = ({
generationNumber,
memberId,
}: MemberByIdRequest): Promise<BaseResponse<MemberByIdResponseData>> =>
http.get({ url: `/members/${generationNumber}/${memberId}` });
9 changes: 9 additions & 0 deletions src/api/scoreHistory.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { BaseResponse, ScoreHistoryAddRequest, ScoreHistoryCancelRequest } from '@/types';
import http from '@/api/core';

export const postScoreHistoryAdd = (params: ScoreHistoryAddRequest): Promise<BaseResponse<{}>> =>
http.post({ url: '/score-history/add', data: params });

export const postScoreHistoryCancel = (
params: ScoreHistoryCancelRequest,
): Promise<BaseResponse<{}>> => http.post({ url: '/score-history/cancel', data: params });
3 changes: 2 additions & 1 deletion src/api/team.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { BaseResponse, TeamResponse } from '@/types';
import http from '@/api/core';

export const getTeams = (): Promise<BaseResponse<TeamResponse>> =>
export const getTeams = (generationNumber?: number): Promise<BaseResponse<TeamResponse>> =>
http.get({
url: '/teams',
params: { generationNumber },
});
8 changes: 8 additions & 0 deletions src/assets/svg/absent-40.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit f6640c9

Please sign in to comment.