Skip to content

Commit b6527a2

Browse files
authored
Merge pull request workadventure#2982 from thecodingmachine/hotfix-emoji-local-storage
Fix emoji local storage issue
2 parents ec8763b + ea09e42 commit b6527a2

File tree

5 files changed

+24
-18
lines changed

5 files changed

+24
-18
lines changed

play/src/front/Administration/AnalyticsClient.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { POSTHOG_API_KEY, POSTHOG_URL } from "../Enum/EnvironmentVariable";
2-
import type { Emoji } from "../Stores/EmoteStore";
32
import type { PostHog } from "posthog-js";
3+
import { Emoji } from "../Stores/Utils/emojiSchema";
44
// eslint-disable-next-line @typescript-eslint/no-explicit-any
55
declare let window: any;
66

play/src/front/Components/ActionBar/ActionBar.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
subMenusStore,
4949
additionnalButtonsMenu,
5050
} from "../../Stores/MenuStore";
51-
import type { Emoji } from "../../Stores/EmoteStore";
5251
import {
5352
emoteDataStore,
5453
emoteDataStoreLoading,
@@ -73,6 +72,7 @@
7372
import { modalIframeStore, modalVisibilityStore } from "../../Stores/ModalStore";
7473
import { userHasAccessToBackOfficeStore } from "../../Stores/GameStore";
7574
import { AddButtonActionBarEvent } from "../../Api/Events/Ui/ButtonActionBarEvent";
75+
import { Emoji } from "../../Stores/Utils/emojiSchema";
7676
7777
const menuImg = gameManager.currentStartedRoom?.miniLogo ?? WorkAdventureImg;
7878

play/src/front/Connexion/LocalUserStore.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { LocalUser } from "./LocalUser";
22
import { areCharacterLayersValid, isUserNameValid } from "./LocalUser";
3-
import type { Emoji } from "../Stores/EmoteStore";
43
import { z } from "zod";
4+
import { arrayEmoji, Emoji } from "../Stores/Utils/emojiSchema";
55

66
const playerNameKey = "playerName";
77
const selectedPlayerKey = "selectedPlayer";
@@ -398,19 +398,19 @@ class LocalUserStore {
398398
getEmojiFavorite(): Map<number, Emoji> | null {
399399
const value = localStorage.getItem(emojiFavorite);
400400
if (value == undefined) return null;
401-
402-
const emojis = JSON.parse(value);
403-
if (!Array.isArray(emojis)) {
401+
try {
402+
const emojis: Emoji[] = JSON.parse(value);
403+
arrayEmoji.parse(emojis);
404+
const map = new Map<number, Emoji>();
405+
emojis.forEach((value, index) => {
406+
map.set(index + 1, value);
407+
});
408+
return map;
409+
} catch (e) {
404410
localStorage.removeItem(emojiFavorite);
411+
console.error("The localStorage key 'emojiFavorite' format is incorrect:", e);
405412
return null;
406413
}
407-
408-
const array: Array<Emoji> = JSON.parse(value) as Array<Emoji>;
409-
const map: Map<number, Emoji> = new Map<number, Emoji>();
410-
array.forEach((value, index) => {
411-
map.set(index + 1, value);
412-
});
413-
return map;
414414
}
415415
}
416416

play/src/front/Stores/EmoteStore.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
import { get, writable } from "svelte/store";
22
import { localUserStore } from "../Connexion/LocalUserStore";
3-
4-
export interface Emoji {
5-
emoji: string;
6-
name: string;
7-
}
3+
import { Emoji } from "./Utils/emojiSchema";
84

95
function createEmoteMenuStore() {
106
const { subscribe, set } = writable(false);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { z } from "zod";
2+
3+
export const isEmoji = z.object({
4+
emoji: z.string(),
5+
name: z.string(),
6+
});
7+
8+
export const arrayEmoji = z.array(isEmoji);
9+
10+
export type Emoji = z.infer<typeof isEmoji>;

0 commit comments

Comments
 (0)