mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
45 lines
1.3 KiB
TypeScript
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})`)
|
|
}
|
|
}
|