1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import AudioPlayer from '@/app/components/base/audio-btn/audio'
- declare global {
- // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
- interface AudioPlayerManager {
- instance: AudioPlayerManager
- }
- }
- export class AudioPlayerManager {
- private static instance: AudioPlayerManager
- private audioPlayers: AudioPlayer | null = null
- private msgId: string | undefined
- private constructor() {
- }
- public static getInstance(): AudioPlayerManager {
- if (!AudioPlayerManager.instance) {
- AudioPlayerManager.instance = new AudioPlayerManager()
- this.instance = AudioPlayerManager.instance
- }
- return AudioPlayerManager.instance
- }
- public getAudioPlayer(url: string, isPublic: boolean, id: string | undefined, msgContent: string | null | undefined, voice: string | undefined, callback: ((event: string) => {}) | null): AudioPlayer {
- if (this.msgId && this.msgId === id && this.audioPlayers) {
- this.audioPlayers.setCallback(callback)
- return this.audioPlayers
- }
- else {
- if (this.audioPlayers) {
- try {
- this.audioPlayers.pauseAudio()
- this.audioPlayers.cacheBuffers = []
- this.audioPlayers.sourceBuffer?.abort()
- }
- catch (e) {
- }
- }
- this.msgId = id
- this.audioPlayers = new AudioPlayer(url, isPublic, id, msgContent, voice, callback)
- return this.audioPlayers
- }
- }
- public resetMsgId(msgId: string) {
- this.msgId = msgId
- this.audioPlayers?.resetMsgId(msgId)
- }
- }
|