diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx
index 5719898..c2e7ba3 100644
--- a/src/components/header/index.tsx
+++ b/src/components/header/index.tsx
@@ -32,7 +32,7 @@ export default function Header() {
useEffect(() => {
-
+
const cookieLocale = document.cookie.split("; ")
.find((row) => row.startsWith("MYNEXTAPP_LOCALE"))
?.split("=")[1];
@@ -43,7 +43,7 @@ export default function Header() {
} else {
setLocale(cookieLocale)
}
-
+
} else {
let browserLocale = navigator.language.slice(0, 2);
@@ -405,7 +405,8 @@ export default function Header() {
value={connectionType}
onChange={(e) => setConnectionType(e.target.value)}
>
-
+
+
@@ -464,12 +465,14 @@ export default function Header() {
>
{transI18n("connect")}
-
+ {connectionType !== "Native" && (
+
+ )}
diff --git a/src/lib/socket.ts b/src/lib/socket.ts
index 392ec93..838dfa4 100644
--- a/src/lib/socket.ts
+++ b/src/lib/socket.ts
@@ -13,6 +13,16 @@ const notify = (msg: string, type: 'info' | 'success' | 'error' = 'info') => {
else toast.info(msg);
};
+function safeParse(json: unknown | string) {
+ try {
+ return typeof json === "string" ? JSON.parse(json) : json;
+ } catch (e) {
+ console.error("JSON parse error:", e, json);
+ return null;
+ }
+}
+
+
export const connectSocket = (): Socket => {
const { host, port, connectionType, setStatus } = useSocketStore.getState();
const {
@@ -30,7 +40,10 @@ export const connectSocket = (): Socket => {
} = useBattleDataStore.getState();
let url = `${host}:${port}`;
- if (connectionType === "FireflyPSLocal") {
+ if (connectionType === "Native") {
+ url = "http://localhost:1305"
+ }
+ else if (connectionType === "PS") {
url = "http://localhost:21000"
}
@@ -80,17 +93,60 @@ export const connectSocket = (): Socket => {
if (isSocketConnected()) onConnect();
- socket.on("OnSetBattleLineup", (json) => onSetBattleLineupService(JSON.parse(json)));
- socket.on("OnTurnEnd", (json) => onTurnEndService(JSON.parse(json)));
- socket.on("OnUseSkill", (json) => onUseSkillService(JSON.parse(json)));
- socket.on("OnKill", (json) => onKillService(JSON.parse(json)));
- socket.on("OnDamage", (json) => onDamageService(JSON.parse(json)));
- socket.on('OnBattleBegin', (json) => onBattleBegin(JSON.parse(json)));
- socket.on('OnTurnBegin', (json) => onTurnBeginService(JSON.parse(json)));
- socket.on('OnBattleEnd', (json) => onBattleEndService(JSON.parse(json)));
- socket.on('OnUpdateCycle', (json) => onUpdateCycleService(JSON.parse(json)));
- socket.on('OnUpdateWave', (json) => OnUpdateWaveService(JSON.parse(json)));
- socket.on('OnCreateBattle', (json) => onCreateBattleService(JSON.parse(json)));
+ socket.on("OnSetBattleLineup", (json) => {
+ const data = safeParse(json);
+ if (data) onSetBattleLineupService(data);
+ });
+
+ socket.on("OnTurnEnd", (json) => {
+ const data = safeParse(json);
+ if (data) onTurnEndService(data);
+ });
+
+ socket.on("OnUseSkill", (json) => {
+ const data = safeParse(json);
+ if (data) onUseSkillService(data);
+ });
+
+ socket.on("OnKill", (json) => {
+ const data = safeParse(json);
+ if (data) onKillService(data);
+ });
+
+ socket.on("OnDamage", (json) => {
+ const data = safeParse(json);
+ if (data) onDamageService(data);
+ });
+
+ socket.on("OnBattleBegin", (json) => {
+ const data = safeParse(json);
+ if (data) onBattleBegin(data);
+ });
+
+ socket.on("OnTurnBegin", (json) => {
+ const data = safeParse(json);
+ if (data) onTurnBeginService(data);
+ });
+
+ socket.on("OnBattleEnd", (json) => {
+ const data = safeParse(json);
+ if (data) onBattleEndService(data);
+ });
+
+ socket.on("OnUpdateCycle", (json) => {
+ const data = safeParse(json);
+ if (data) onUpdateCycleService(data);
+ });
+
+ socket.on("OnUpdateWave", (json) => {
+ const data = safeParse(json);
+ if (data) OnUpdateWaveService(data);
+ });
+
+ socket.on("OnCreateBattle", (json) => {
+ const data = safeParse(json);
+ if (data) onCreateBattleService(data);
+ });
socket.on("Error", (msg: string) => {
console.error("Server Error:", msg);
diff --git a/src/stores/socketSettingStore.ts b/src/stores/socketSettingStore.ts
index 006061e..209ed4d 100644
--- a/src/stores/socketSettingStore.ts
+++ b/src/stores/socketSettingStore.ts
@@ -18,7 +18,7 @@ const useSocketStore = create()(
host: "http://localhost",
port: 3443,
status: false,
- connectionType: "FireflyPSLocal",
+ connectionType: "Native",
setHost: (host: string) => set({ host }),
setConnectionType: (connectionType: string) => set({ connectionType }),
setPort: (port: number) => set({ port }),