Skip to content

Commit ac0fceb

Browse files
committed
Merge branch 'feature/patron' into develop
2 parents dfbd5c4 + 272f700 commit ac0fceb

File tree

9 files changed

+327
-133
lines changed

9 files changed

+327
-133
lines changed

.env.development

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
REACT_APP_PYCONKR_API=https://api-dev.pycon.kr
1+
REACT_APP_PYCONKR_API=https://api-dev.pycon.kr
2+
REACT_APP_PYCONKR_SHOP_API=https://shop-api.dev.pycon.kr

.env.production

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
REACT_APP_PYCONKR_API=https://api.pycon.kr
2+
REACT_APP_PYCONKR_SHOP_API=https://shop-api.pycon.kr

src/api/sponsor.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import { getErrorMessage } from "api";
22
import instance from "lib/axios";
33
import {
4+
APIPatron,
45
APISponsor,
56
APISponsorBenefit,
67
APISponsorLevel,
78
APISponsorLevelWithSponsor,
89
} from "models/api/sponsor";
9-
import { Sponsor, SponsorBenefit, SponsorLevel, SponsorLevelWithSponsor } from "models/sponsor";
10+
import {
11+
Patron,
12+
Sponsor,
13+
SponsorBenefit,
14+
SponsorLevel,
15+
SponsorLevelWithSponsor,
16+
} from "models/sponsor";
1017

1118
export function detailSponsor(id: string): Promise<Sponsor> {
1219
return new Promise((resolve, reject) => {
@@ -78,3 +85,17 @@ export function listSponsorBenefits(): Promise<SponsorBenefit[]> {
7885
});
7986
});
8087
}
88+
89+
export function listPatrons(): Promise<Patron[]> {
90+
return new Promise((resolve, reject) => {
91+
instance
92+
.get<APIPatron[]>(`${process.env.REACT_APP_PYCONKR_SHOP_API}/v1/ext/patron/`)
93+
.then((response) => {
94+
resolve(Patron.fromAPIs(response.data));
95+
})
96+
.catch((error) => {
97+
console.error(error);
98+
reject(getErrorMessage(error));
99+
});
100+
});
101+
}

src/components/Nav/menus.ts

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
import { useDispatch } from "react-redux"
1+
import { useDispatch } from "react-redux";
22

3-
import { openGlobalDialog, setLanguage } from "store/Core"
4-
import { DIALOG_CONST_PROGRAM_NOT_HELD_ON_2024 } from "store/Core/dialog"
3+
import { openGlobalDialog, setLanguage } from "store/Core";
4+
import { DIALOG_CONST_PROGRAM_NOT_HELD_ON_2024 } from "store/Core/dialog";
55

66
export type MenuElementOnClickArgType = {
7-
setOpenMenu: React.Dispatch<React.SetStateAction<boolean>>
8-
navigate?: (path: string) => void
9-
dispatch: ReturnType<typeof useDispatch>
10-
}
7+
setOpenMenu: React.Dispatch<React.SetStateAction<boolean>>;
8+
navigate?: (path: string) => void;
9+
dispatch: ReturnType<typeof useDispatch>;
10+
};
1111

1212
export type MenuElementType = {
13-
name: string
14-
style?: React.CSSProperties
15-
path?: string
16-
onClick?: (_: MenuElementOnClickArgType) => void
17-
}
13+
name: string;
14+
style?: React.CSSProperties;
15+
path?: string;
16+
onClick?: (_: MenuElementOnClickArgType) => void;
17+
};
1818

19-
export type MenuType = { [key: string]: MenuElementType & { sub?: MenuElementType[] } }
19+
export type MenuType = { [key: string]: MenuElementType & { sub?: MenuElementType[] } };
2020

2121
const Menus: MenuType = {
2222
about: {
@@ -29,8 +29,11 @@ const Menus: MenuType = {
2929
{
3030
name: "파이콘 한국 행동 강령",
3131
onClick: ({ setOpenMenu }) => {
32-
setOpenMenu(false)
33-
window.open("https://pythonkr.github.io/pycon-code-of-conduct/ko/coc/a_intent_and_purpose.html", "_blank")
32+
setOpenMenu(false);
33+
window.open(
34+
"https://pythonkr.github.io/pycon-code-of-conduct/ko/coc/a_intent_and_purpose.html",
35+
"_blank"
36+
);
3437
},
3538
},
3639
{
@@ -63,33 +66,33 @@ const Menus: MenuType = {
6366
program: {
6467
name: "프로그램",
6568
onClick: ({ setOpenMenu, dispatch }) => {
66-
setOpenMenu(false)
67-
dispatch(openGlobalDialog(DIALOG_CONST_PROGRAM_NOT_HELD_ON_2024))
68-
}
69+
setOpenMenu(false);
70+
dispatch(openGlobalDialog(DIALOG_CONST_PROGRAM_NOT_HELD_ON_2024));
71+
},
6972
},
7073
ticket: {
7174
name: "티켓 구매",
7275
onClick: ({ setOpenMenu }) => {
73-
setOpenMenu(false)
74-
window.open("https://shop.pycon.kr/ticket", "_blank")
75-
}
76+
setOpenMenu(false);
77+
window.open("https://shop.pycon.kr/ticket", "_blank");
78+
},
7679
},
7780
session: {
7881
name: "세션",
7982
sub: [
8083
{
8184
name: "세션 목록",
8285
onClick: ({ setOpenMenu, navigate }) => {
83-
navigate?.("/session")
84-
setOpenMenu(false)
85-
}
86+
navigate?.("/session");
87+
setOpenMenu(false);
88+
},
8689
},
8790
{
8891
name: "세션 시간표",
8992
onClick: ({ setOpenMenu, navigate }) => {
90-
navigate?.("/session/timetable")
91-
setOpenMenu(false)
92-
}
93+
navigate?.("/session/timetable");
94+
setOpenMenu(false);
95+
},
9396
},
9497
],
9598
},
@@ -98,12 +101,12 @@ const Menus: MenuType = {
98101
sub: [
99102
{
100103
name: "후원사 안내",
101-
path: "/sponsoring/sponsor/prospectus"
104+
path: "/sponsoring/sponsor/prospectus",
105+
},
106+
{
107+
name: "개인 후원자",
108+
path: "/sponsoring/patron",
102109
},
103-
// {
104-
// name: "개인 후원자",
105-
// path: "/sponsoring/patron",
106-
// },
107110
// {
108111
// name: "후원사 혜택 안내",
109112
// path: "/sponsoring/sponsor/benefit",
@@ -128,19 +131,19 @@ const Menus: MenuType = {
128131
{
129132
name: "한국어",
130133
onClick: ({ setOpenMenu, dispatch }) => {
131-
setOpenMenu(false)
132-
dispatch(setLanguage("KOR"))
133-
}
134+
setOpenMenu(false);
135+
dispatch(setLanguage("KOR"));
136+
},
134137
},
135138
{
136139
name: "English",
137140
onClick: ({ setOpenMenu, dispatch }) => {
138-
setOpenMenu(false)
139-
dispatch(setLanguage("ENG"))
140-
}
141+
setOpenMenu(false);
142+
dispatch(setLanguage("ENG"));
143+
},
141144
},
142-
]
143-
}
144-
} as const
145+
],
146+
},
147+
} as const;
145148

146-
export default Menus
149+
export default Menus;

0 commit comments

Comments
 (0)