Bilibili-Evolved/registry/lib/components/live/badge-helper/auto-match.ts
2021-10-26 13:19:37 +08:00

45 lines
1.3 KiB
TypeScript

import { getMedalList } from './badge'
export const autoMatchMedal = async () => {
const { getUID } = await import('@/core/utils')
if (!getUID()) {
return
}
const { getComponentSettings } = await import('@/core/settings')
const { options } = getComponentSettings('badgeHelper')
if (!options.autoMatchMedal) {
return
}
const match = document.URL.match(/^https:\/\/live\.bilibili\.com\/(blanc\/)?([\d]+)/)
if (!match) {
return
}
const roomID = parseInt(match[2])
if (Number.isNaN(roomID)) {
console.warn('roomID not found')
return
}
const medalList = await getMedalList()
if (!options.defaultMedalID) {
const activeMedal = medalList.find(m => m.isActive)
if (activeMedal) {
options.defaultMedalID = activeMedal.id
console.log(`set defaultMedalID to activeMedal (${activeMedal.id})`)
}
}
const defaultMedal = options.defaultMedalID
? medalList.find(m => m.id === options.defaultMedalID)
: medalList.find(m => m.isActive)
const matchMedal = medalList.find(m => m.roomID === roomID)
if (!matchMedal) {
if (defaultMedal) {
await defaultMedal.activate()
console.log(`no matchMedal, fallback to defaultMedal (${defaultMedal.id})`)
}
} else {
await matchMedal.activate()
console.log(`activated matchMedal (${matchMedal.id})`)
}
}