diff --git a/src/assets/badges.ts b/src/assets/badges.ts new file mode 100644 index 0000000..ed8b2ca --- /dev/null +++ b/src/assets/badges.ts @@ -0,0 +1,30 @@ +import type { Badge } from './types'; + +export function getBadges(badges: Badge[], badgesToFind: { setId: string; version: string; }[]) { + const foundBadges = []; + if(!badges) return + + for (let badgeToFind of badgesToFind) { + const badge = badges + .filter((badge) => badge.setId === badgeToFind.setId) + .find((badge) => badge.version === badgeToFind.version); + + if (badge) { + foundBadges.push(badge); + } + } + + return foundBadges; +} + +export const getBadgesFromMessage = (message: { username: string, channel: string, message: string, messageType: string, tags: Record }, allBadges: Badge[]) => { + let badgesString = message.tags.badges; + if (!badgesString) return; + let badges = badgesString.split(','); + let formatedBadges = badges.map((badgeWithVersion) => { + const [setId, version] = badgeWithVersion.split('/'); + return { setId, version }; + }); + + return getBadges(allBadges, formatedBadges); + } \ No newline at end of file diff --git a/src/assets/types/Badge.ts b/src/assets/types/Badge.ts new file mode 100644 index 0000000..cb8f853 --- /dev/null +++ b/src/assets/types/Badge.ts @@ -0,0 +1,7 @@ +export interface Badge { + id: string, + title: string, + setId: string, + version: string, + images: { [k:string]: string } +} \ No newline at end of file diff --git a/src/assets/types/ParsedMessage.ts b/src/assets/types/ParsedMessage.ts new file mode 100644 index 0000000..ba020c8 --- /dev/null +++ b/src/assets/types/ParsedMessage.ts @@ -0,0 +1,5 @@ +export interface ParsedMessage { + type: string; + data: any; +}; + \ No newline at end of file diff --git a/src/assets/types/index.ts b/src/assets/types/index.ts new file mode 100644 index 0000000..b199bcb --- /dev/null +++ b/src/assets/types/index.ts @@ -0,0 +1,2 @@ +export * from './Badge' +export * from './ParsedMessage' \ No newline at end of file