diff --git a/src/apis/user/userController.ts b/src/apis/user/userController.ts index 0b56ced..ccb4383 100644 --- a/src/apis/user/userController.ts +++ b/src/apis/user/userController.ts @@ -30,3 +30,13 @@ export const addUserInfo = async (apiKey: string) => { throw error } } + +export const syncCharacter = async () => { + try { + const response = await basicApi.post(`/api/game-character/sync-character`) + return response.data + } catch (error) { + console.error('Error syncing character:', error) + throw error + } +} diff --git a/src/components/character/CharacterPage.tsx b/src/components/character/CharacterPage.tsx index 88ef241..66e8d89 100644 --- a/src/components/character/CharacterPage.tsx +++ b/src/components/character/CharacterPage.tsx @@ -6,11 +6,18 @@ import { InventoryContainer } from './inventory/InventoryContainer' import { StatContainer } from './StatContainer' import { useCharacterData } from '../../hooks/character/useCharacterData' import { useInventory } from '../../hooks/character/useInventory' -import { useNavigate } from 'react-router-dom' + import { useUserStore } from '../../store/userStore' import { searchCharacterOcid } from '../../apis/character/characterController' -export const CharacterPage = () => { +import { FiAlertTriangle, FiSearch } from 'react-icons/fi' +import Button from '../common/Button' + +interface CharacterPageProps { + type: 'character' | 'search' +} + +export const CharacterPage = ({ type }: CharacterPageProps) => { const { characterStats, ability, hyperStat, basic, isLoading, error } = useCharacterData() const [characterName, setCharacterName] = useState('') @@ -18,7 +25,7 @@ export const CharacterPage = () => { const { inventory } = useInventory() const [showStats, setShowStats] = useState(true) - const nav = useNavigate() + const { setCharacterOcid } = useUserStore() const [searchLoading, setSearchLoading] = useState(false) @@ -36,39 +43,168 @@ export const CharacterPage = () => { return } setCharacterOcid(ocid) - } catch (error) { - console.error(error) + } catch { alert('캐릭터 검색에 실패했습니다.') } finally { setSearchLoading(false) } } - if (isLoading) { + if (error) { return (
- 캐릭터 정보를 불러오는 중... -
++ 본캐릭터는 넥슨 OpenAPI에서 레벨이 가장 높은 + 캐릭터를 기준으로 자동 설정됩니다. +
++ + 정보가 정확하지 않다면 + + 동기화 + + 버튼을 눌러주세요 + +
++ 2023년 12월 21일 이후의 데이터만 조회할 수 있습니다. +
++ 본캐릭터는 넥슨 OpenAPI에서 레벨이 가장 높은 캐릭터를 + 기준으로 자동 설정됩니다. +
++ + 정보가 정확하지 않다면 + + 동기화 + 버튼을 눌러주세요 +
+
+ 관리자로 초대할 때는 반드시 해당 길드원의{' '}
+ 본캐릭터를 등록해야 합니다.
+
+ 본캐릭터는 넥슨 OpenAPI에서 레벨이 가장 높은 캐릭터를 기준으로
+ 자동 설정됩니다.
+