From f277a1af142a3ba9f1aa9adae7c4dd46c75d82d6 Mon Sep 17 00:00:00 2001 From: gs0428 Date: Sat, 17 Feb 2024 03:05:26 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feature-072:=20=EC=9E=84=EC=8B=9C=20?= =?UTF-8?q?=ED=86=A0=ED=81=B0=20=EB=B0=9C=EA=B8=89=20API=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 6 +++++- src/apis/videos.ts | 14 ++++++++++++++ src/components/Home/SearchYoutube.tsx | 7 ++++++- src/models/video.ts | 4 ++++ src/utils/getTokenInCookie.ts | 7 +++++++ 5 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/utils/getTokenInCookie.ts diff --git a/src/App.tsx b/src/App.tsx index cb1a2c7..e7ae2cf 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -41,15 +41,19 @@ import useUpdateCategories from '@/hooks/useUpdateCategories'; // Store import { userTokenState } from '@/stores/user'; +import { getTempToken } from './apis/videos'; const App = () => { const userToken = useRecoilValue(userTokenState); const { updateCategories } = useUpdateCategories(); useEffect(() => { + (async () => { + const response = await getTempToken(); + document.cookie = `tempToken=${response.result.tempToken}`; + })(); userToken && updateCategories(); }, [updateCategories, userToken]); - return ( diff --git a/src/apis/videos.ts b/src/apis/videos.ts index 91008fe..9bdf070 100644 --- a/src/apis/videos.ts +++ b/src/apis/videos.ts @@ -1,5 +1,6 @@ import { APIBaseResponse, APIResponse } from '@/models/config/axios'; import { + ITempTokenResponse, IVideo, UpdateVideoCategoryRequest, UpdateVideoRequest, @@ -91,3 +92,16 @@ export const createDummyVideoToMine = async ( return response.data; }; + +export const getTempToken = async (): Promise< + APIResponse +> => { + const response = await axiosInstance.get('/'); + return response.data; +}; + +export const getVideoModeling = async (url: string) => { + const response = await axiosInstance.get(`/video/?v=${url}`); + console.log(response); + return response.data; +}; diff --git a/src/components/Home/SearchYoutube.tsx b/src/components/Home/SearchYoutube.tsx index f8856e8..474f46e 100644 --- a/src/components/Home/SearchYoutube.tsx +++ b/src/components/Home/SearchYoutube.tsx @@ -13,6 +13,7 @@ import { import VideoIcon from '@/assets/icons/video.svg?react'; import WarningIcon from '@/assets/icons/warning.svg?react'; +import { getVideoModeling } from '@/apis/videos'; interface SearchBarProps { onSearch: (value: string) => void; @@ -27,6 +28,10 @@ const SearchYoutube: React.FC = ({ onSearch, searchRef }) => { const setModalOpen = useSetRecoilState(recommendationModalState); + const onStartConvert = async () => { + await getVideoModeling(inputLink); + }; + const handleSubmit = (event: FormEvent) => { event.preventDefault(); if (isValidYoutubeLink(inputLink)) { @@ -112,7 +117,7 @@ const SearchYoutube: React.FC = ({ onSearch, searchRef }) => { + document.cookie + .split(';') + .find((cookie) => cookie.includes('tempToken')) + ?.split('=')[1]; + +export default getTokenInCookie; From 25e80b6f27d667f6f41b2e4b9e960926635b1005 Mon Sep 17 00:00:00 2001 From: gs0428 Date: Sat, 17 Feb 2024 03:37:04 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feature-072:=20=ED=94=BC=EB=93=9C=EB=B0=B1?= =?UTF-8?q?=20API=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/feedback.ts | 6 ++++++ src/components/layout/footer/SendEmail.tsx | 11 ++++++++++- src/styles/layout/footer/index.ts | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/apis/feedback.ts diff --git a/src/apis/feedback.ts b/src/apis/feedback.ts new file mode 100644 index 0000000..a97c901 --- /dev/null +++ b/src/apis/feedback.ts @@ -0,0 +1,6 @@ +import axiosInstance from './config/instance'; + +export const postFeedback = async (text: string) => { + const response = await axiosInstance.post('/feedback', { text }); + return response; +}; diff --git a/src/components/layout/footer/SendEmail.tsx b/src/components/layout/footer/SendEmail.tsx index 2862a6d..4716724 100644 --- a/src/components/layout/footer/SendEmail.tsx +++ b/src/components/layout/footer/SendEmail.tsx @@ -2,6 +2,7 @@ import * as FooterStyle from '@/styles/layout/footer'; import { useState } from 'react'; import SendEmailImage from '@/assets/mail.png'; +import { postFeedback } from '@/apis/feedback'; const SendEmail = () => { const [feedback, setFeedback] = useState(''); @@ -9,6 +10,8 @@ const SendEmail = () => { const handleInputFeedback = (e: React.ChangeEvent) => setFeedback(e.target.value); + const onSendFeedback = async () => await postFeedback(feedback); + return ( @@ -18,7 +21,13 @@ const SendEmail = () => { value={feedback} onChange={handleInputFeedback} /> - 보내기 + + 보내기 + ); }; diff --git a/src/styles/layout/footer/index.ts b/src/styles/layout/footer/index.ts index 8e8d4c6..2410db9 100644 --- a/src/styles/layout/footer/index.ts +++ b/src/styles/layout/footer/index.ts @@ -46,6 +46,14 @@ export const SendEmailButton = styled.button` color: ${theme.color.white}; border: 0; cursor: pointer; + transition: all 0.2s; + + &.disabled { + cursor: default; + background-color: ${theme.color.gray200}; + color: ${theme.color.gray300}; + border: 0; + } `; export const AboutViNOWrap = styled.div` From e2da220ba9ab0b746b5ace52044eb3f6ede2d0d6 Mon Sep 17 00:00:00 2001 From: gs0428 Date: Sat, 17 Feb 2024 03:38:58 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feature-072:=20=ED=94=BC=EB=93=9C=EB=B0=B1?= =?UTF-8?q?=20=EC=A0=84=EC=86=A1=20=EC=8B=9C=20=EC=9E=85=EB=A0=A5=EB=9E=80?= =?UTF-8?q?=20=EC=B4=88=EA=B8=B0=ED=99=94=20=ED=95=98=EB=8A=94=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/footer/SendEmail.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/layout/footer/SendEmail.tsx b/src/components/layout/footer/SendEmail.tsx index 4716724..5516af5 100644 --- a/src/components/layout/footer/SendEmail.tsx +++ b/src/components/layout/footer/SendEmail.tsx @@ -10,7 +10,14 @@ const SendEmail = () => { const handleInputFeedback = (e: React.ChangeEvent) => setFeedback(e.target.value); - const onSendFeedback = async () => await postFeedback(feedback); + const onSendFeedback = async () => { + const res = await postFeedback(feedback); + if (res.data.success) { + setFeedback(''); + return; + } + alert('피드백을 전송하는 과정에서 오류가 발생했습니다.'); + }; return (