From 8669989e76889716974a92b1b4fd0e19ac0e9670 Mon Sep 17 00:00:00 2001 From: Killer Fish <61081555+Fiszh@users.noreply.github.com> Date: Mon, 30 Mar 2026 21:59:36 +0200 Subject: [PATCH] 3.4.3 1. Fixed 7TV API being spammed if set not found 2. Added format and type check commands --- app/.prettierignore | 3 ++- app/package.json | 6 +++-- app/src/components/ChatMessage.svelte | 15 +++++-------- app/src/lib/emotes.ts | 32 ++++++++++++++++++--------- app/src/lib/services/7TV/main.ts | 12 +++++++++- 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/app/.prettierignore b/app/.prettierignore index 5591f06..7eafe18 100644 --- a/app/.prettierignore +++ b/app/.prettierignore @@ -2,4 +2,5 @@ node_modules /build /.svelte-kit .env -.env.* \ No newline at end of file +.env.* +static/manifest.json \ No newline at end of file diff --git a/app/package.json b/app/package.json index 42b484a..286076b 100644 --- a/app/package.json +++ b/app/package.json @@ -1,7 +1,7 @@ { "name": "uchat", "private": true, - "version": "3.4.2", + "version": "3.4.3", "type": "module", "scripts": { "dev": "vite dev", @@ -10,7 +10,9 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "dev:open": "vite dev --open --host" + "dev:open": "vite dev --open --host", + "typecheck": "bunx tsc --noEmit && bunx prettier --check .", + "fmt": "bunx prettier --write ." }, "devDependencies": { "@sveltejs/adapter-static": "^3.0.10", diff --git a/app/src/components/ChatMessage.svelte b/app/src/components/ChatMessage.svelte index f4e1ac1..c0652f2 100644 --- a/app/src/components/ChatMessage.svelte +++ b/app/src/components/ChatMessage.svelte @@ -95,29 +95,24 @@ : ([] as parsedBadge[]); let emoteText = message.text; - async function parse() { - emoteText = await replaceWithEmotes( + const parse = async () => + (emoteText = await replaceWithEmotes( message.text, message.tags, message.tags["source-room-id"] ?? message.tags["room-id"], chatSettings, - ); - } + )); parse(); if (!window.location.search) { emotes.subscribe(() => parse()); - badges.subscribe(async () => { - parsedBadges = parseBadges(tags); - }); + badges.subscribe(async () => (parsedBadges = parseBadges(tags))); settings.subscribe(() => parse()); } else { - badges.subscribe(async (e) => { - FFZBadges = e["FFZ"]; - }); + badges.subscribe(async (e) => (FFZBadges = e["FFZ"])); } // THIS CAN BE KEPT ON OVERLAY diff --git a/app/src/lib/emotes.ts b/app/src/lib/emotes.ts index ca91cb0..8ae12f7 100644 --- a/app/src/lib/emotes.ts +++ b/app/src/lib/emotes.ts @@ -25,19 +25,29 @@ export async function getChannelEmotesViaTwitchID(twitchID: string) { const SevenTV_user_data = await SevenTV_main.getUserViaTwitchID(twitchID); - emotes.update((emoteData) => { - emoteData["7TV"]["channel"][twitchID] = - SevenTV_user_data?.emote_data as ParsedEmote[]; - - return emoteData; - }); + if (SevenTV_user_data) { + emotes.update((emoteData) => { + if ("emote_data" in SevenTV_user_data) + emoteData["7TV"]["channel"][twitchID] = + SevenTV_user_data?.emote_data as ParsedEmote[]; + + if ( + "id" in SevenTV_user_data && + SevenTV_user_data["id"] == null + ) + emoteData["7TV"]["channel"][twitchID] = + [] as ParsedEmote[]; + + return emoteData; + }); - if (SevenTV_user_data?.id) { - globals.SevenTVID = SevenTV_user_data.id; - } + if (SevenTV_user_data?.id) { + globals.SevenTVID = SevenTV_user_data.id; + } - if (SevenTV_user_data?.emote_set_id) { - globals.SevenTVemoteSetId = SevenTV_user_data.emote_set_id; + if ("emote_set_id" in SevenTV_user_data) { + globals.SevenTVemoteSetId = SevenTV_user_data.emote_set_id; + } } } } catch (e) { diff --git a/app/src/lib/services/7TV/main.ts b/app/src/lib/services/7TV/main.ts index bd31f91..aee6d15 100755 --- a/app/src/lib/services/7TV/main.ts +++ b/app/src/lib/services/7TV/main.ts @@ -191,8 +191,12 @@ interface UserInfo { }; } +interface UserInfoInvalid { + id: null; +} + async function getUserViaTwitchID(twitchID: string | number) { - let user_info: UserInfo | null = null; + let user_info: UserInfo | UserInfoInvalid | null = null; try { const response = await fetch( @@ -223,6 +227,12 @@ async function getUserViaTwitchID(twitchID: string | number) { }, }; } + } else { + if (response.status == 404) { + user_info = { + id: null, + }; + } } } catch (error) { throw new Error(`Error fetching user data: ${error}`);