| import AudioPlayer from '@/app/components/base/audio-btn/audio' |
| declare global { |
| |
| 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) |
| } |
| } |
|
|