diff --git a/src/assets/badges.ts b/src/assets/badges.ts index 3a66a16..01dfbf3 100644 --- a/src/assets/badges.ts +++ b/src/assets/badges.ts @@ -1,30 +1,30 @@ -import type { Badge, ParsedMessage } from './types'; +import type { Badge, ParsedMessage } from './types' -export function getBadges(badges: Badge[], badgesToFind: { setId: string; version: string; }[]) { - const foundBadges = []; - if(!badges) return +export function getBadges(badges: Badge[], badgesToFind: { setId: string; version: string }[]) { + const foundBadges = [] + if (!badges) return - for (let badgeToFind of badgesToFind) { + for (const badgeToFind of badgesToFind) { const badge = badges .filter((badge) => badge.setId === badgeToFind.setId) - .find((badge) => badge.version === badgeToFind.version); + .find((badge) => badge.version === badgeToFind.version) if (badge) { - foundBadges.push(badge); + foundBadges.push(badge) } } - return foundBadges; + return foundBadges } export const getBadgesFromMessage = (message: ParsedMessage, allBadges: Badge[]) => { - let badgesString = message.data.tags.badges; - if (!badgesString) return; - let badges = badgesString.split(','); - let formatedBadges = badges.map((badgeWithVersion: string) => { - const [setId, version] = badgeWithVersion.split('/'); - return { setId, version }; - }); - - return getBadges(allBadges, formatedBadges); - } \ No newline at end of file + const badgesString = message.data.tags.badges + if (!badgesString) return + const badges = badgesString.split(',') + const formatedBadges = badges.map((badgeWithVersion: string) => { + const [setId, version] = badgeWithVersion.split('/') + return { setId, version } + }) + + return getBadges(allBadges, formatedBadges) +} diff --git a/src/assets/messageParser.ts b/src/assets/messageParser.ts index 8b9ed45..45573cc 100644 --- a/src/assets/messageParser.ts +++ b/src/assets/messageParser.ts @@ -1,48 +1,46 @@ -import type { Badge, ParsedMessage } from "./types"; +import type { Badge, ParsedMessage } from './types' import { getBadgesFromMessage } from './badges' - export function parseMessage(messageData: string, allBadges: Badge[]): ParsedMessage { - const message = JSON.parse(messageData); - - switch (message.type) { - case "PRIVMSG": { - const tags = message.tags - const username = message.username - const data: ParsedMessage = { - type: "PRIVMSG", - data: { message: message.message, username, tags }, - }; + const message = JSON.parse(messageData) - const badges = getBadgesFromMessage(data, allBadges); - data.data.badges = badges + switch (message.type) { + case 'PRIVMSG': { + const tags = message.tags + const username = message.username + const data: ParsedMessage = { + type: 'PRIVMSG', + data: { message: message.message, username, tags } + } - return data + const badges = getBadgesFromMessage(data, allBadges) + data.data.badges = badges + + return data + } + case 'USERNOTICE': { + const username = message.tags.login + const resub = message.tags['msg-id'] === 'resub' + const months = parseInt(message.tags['msg-param-cumulative-months']) + return { + type: 'USERNOTICE', + data: { username, resub, months } } - case "USERNOTICE": { - const username = message.tags.login; - const resub = message.tags["msg-id"] === "resub"; - const months = parseInt(message.tags["msg-param-cumulative-months"]); - return { - type: "USERNOTICE", - data: { username, resub, months }, - }; - } - case "CLEARMSG": { - return { - type: "CLEARMSG", - data: { - username: message.tags['@login'], - } + } + case 'CLEARMSG': { + return { + type: 'CLEARMSG', + data: { + username: message.tags['@login'] } } - // Add more cases for other message types here - default: { - return { - type: "UNKNOWN", - data: { message }, - }; + } + // Add more cases for other message types here + default: { + return { + type: 'UNKNOWN', + data: { message } } } } - \ No newline at end of file +} diff --git a/src/assets/qualitySelector.ts b/src/assets/qualitySelector.ts index 7b07d6f..3fc8f7d 100644 --- a/src/assets/qualitySelector.ts +++ b/src/assets/qualitySelector.ts @@ -6,14 +6,14 @@ import type { QualityLevelList, QualityLevel } from 'videojs-contrib-quality-lev export const createQualitySelector = (player: any) => { const qualityLevels: QualityLevelList = player.qualityLevels() - const MenuButton = videojs.getComponent('MenuButton'); - const MenuItem = videojs.getComponent('MenuItem'); - let formatedQualities: {name: string, index: number, id:string}[]; + const MenuButton = videojs.getComponent('MenuButton') + const MenuItem = videojs.getComponent('MenuItem') + let formatedQualities: { name: string; index: number; id: string }[] const setQuality = (id: string) => { - const found = formatedQualities.find(i => i.id === id) - for(let quality of qualityLevels.levels_) { - if(quality.id !== id) { + const found = formatedQualities.find((i) => i.id === id) + for (const quality of qualityLevels.levels_) { + if (quality.id !== id) { quality.enabled = false } else { quality.enabled = true @@ -21,7 +21,7 @@ export const createQualitySelector = (player: any) => { } qualityLevels.selectedIndex_ = found?.index - qualityLevels.trigger({ type: 'change', selectedIndex: found?.index}) + qualityLevels.trigger({ type: 'change', selectedIndex: found?.index }) } class CustomMenuButton extends MenuButton { @@ -30,13 +30,13 @@ export const createQualitySelector = (player: any) => { createItems() { const player = this.player() - return this.options_.items.map((item : {name: string}) => { + return this.options_.items.map((item: { name: string }) => { const qualitySelectorButton = new MenuItem(player, { label: item.name }) qualitySelectorButton.handleClick = (data) => { const qualityClicked = data.currentTarget.innerText - const id = formatedQualities.find(i => i.name === qualityClicked)?.id + const id = formatedQualities.find((i) => i.name === qualityClicked)?.id - if(id) { + if (id) { setQuality(id) } } @@ -45,7 +45,7 @@ export const createQualitySelector = (player: any) => { }) } } - videojs.registerComponent('CustomMenuButton', CustomMenuButton); + videojs.registerComponent('CustomMenuButton', CustomMenuButton) qualityLevels.on('addqualitylevel', () => { formatedQualities = qualityLevels.levels_.map((quality: QualityLevel) => { @@ -56,14 +56,13 @@ export const createQualitySelector = (player: any) => { } }) - player.controlBar.addChild('CustomMenuButton', { title: 'Qualities', items: formatedQualities - }); + }) }) qualityLevels.on('change', function () { - const qualityLabel = qualityLevels[qualityLevels.selectedIndex].height?.toString() + 'p' + // TODO: Change label off button }) } diff --git a/src/assets/types/Badge.ts b/src/assets/types/Badge.ts index cb8f853..e70b28f 100644 --- a/src/assets/types/Badge.ts +++ b/src/assets/types/Badge.ts @@ -1,7 +1,7 @@ export interface Badge { - id: string, - title: string, - setId: string, - version: string, - images: { [k:string]: string } -} \ No newline at end of file + id: string + title: string + setId: string + version: string + images: { [k: string]: string } +} diff --git a/src/assets/types/ParsedMessage.ts b/src/assets/types/ParsedMessage.ts index ce22c63..f375b4d 100644 --- a/src/assets/types/ParsedMessage.ts +++ b/src/assets/types/ParsedMessage.ts @@ -1,5 +1,4 @@ export interface ParsedMessage { - type: string; - data: { [k: string]: any }; -}; - \ No newline at end of file + type: string + data: { [k: string]: any } +} diff --git a/src/assets/types/index.ts b/src/assets/types/index.ts index b199bcb..f85d431 100644 --- a/src/assets/types/index.ts +++ b/src/assets/types/index.ts @@ -1,2 +1,2 @@ export * from './Badge' -export * from './ParsedMessage' \ No newline at end of file +export * from './ParsedMessage' diff --git a/src/components/LoadingScreen.vue b/src/components/LoadingScreen.vue index b84bead..d4fa7d9 100644 --- a/src/components/LoadingScreen.vue +++ b/src/components/LoadingScreen.vue @@ -1,8 +1,8 @@ \ No newline at end of file + + diff --git a/src/components/StreamPreview.vue b/src/components/StreamPreview.vue index 6efdbe7..7baf2dc 100644 --- a/src/components/StreamPreview.vue +++ b/src/components/StreamPreview.vue @@ -29,7 +29,7 @@ export default { ) const data = await streamDataFetch.json() - if(data.stream) { + if (data.stream) { data.stream.streamer = { name: props.name, pfp: data.pfp } streamData = data.stream } @@ -60,25 +60,25 @@ export default { diff --git a/src/views/CategoryView.vue b/src/views/CategoryView.vue index efe8afa..fbdc26e 100644 --- a/src/views/CategoryView.vue +++ b/src/views/CategoryView.vue @@ -20,15 +20,17 @@ export default { const game: string = this.$route.params.game.toString() try { - const res = await fetch(`${protocol}${import.meta.env.VITE_BACKEND_DOMAIN}/api/discover/${game}`) - if (!res.ok) { - return this.data = { status: 'error' } - } - this.data = await res.json() - } catch (err) { - this.data = { status: 'error' } - console.error(err) + const res = await fetch( + `${protocol}${import.meta.env.VITE_BACKEND_DOMAIN}/api/discover/${game}` + ) + if (!res.ok) { + return (this.data = { status: 'error' }) } + this.data = await res.json() + } catch (err) { + this.data = { status: 'error' } + console.error(err) + } }, methods: { abbreviate(text: number) { diff --git a/src/views/HomepageView.vue b/src/views/HomepageView.vue index 827c159..cddc02d 100644 --- a/src/views/HomepageView.vue +++ b/src/views/HomepageView.vue @@ -7,10 +7,9 @@ import LoadingScreen from '@/components/LoadingScreen.vue' export default { async setup() { const protocol = import.meta.env.VITE_HTTPS === 'true' ? 'https://' : 'http://' - + let data: Ref = ref() let frontend_url = protocol + import.meta.env.VITE_INSTANCE_DOMAIN - return { data, @@ -30,7 +29,7 @@ export default { }, filterSearches(toFilter: string) { - const categories: HTMLCollectionOf = this.$refs.categoryItem as HTMLCollectionOf + const categories = this.$refs.categoryItem const wantedTags: string[] = toFilter.split(',').filter((v) => v.toLowerCase()) for (let category of categories as any) { @@ -100,7 +99,6 @@ export default { console.error(error) this.data = { status: 'error' } } - }, components: { StreamPreviewVue, @@ -111,7 +109,6 @@ export default {