aboutsummaryrefslogtreecommitdiff
path: root/src/managers/updating-queue-embed.ts
blob: 37732de075cf10b21af4abc549c7f152154c1d0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import {inject, injectable} from 'inversify';
import {TYPES} from '../types.js';
import PlayerManager from '../managers/player.js';
import UpdatingQueueEmbed from '../services/updating-queue-embed.js';

@injectable()
export default class {
  private readonly embedsByGuild: Map<string, UpdatingQueueEmbed>;
  private readonly playerManager: PlayerManager;

  constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager) {
    this.embedsByGuild = new Map();
    this.playerManager = playerManager;
  }

  get(guildId: string): UpdatingQueueEmbed {
    let embed = this.embedsByGuild.get(guildId);

    if (!embed) {
      const player = this.playerManager.get(guildId);

      if (!player) {
        throw new Error('Player does not exist for guild.');
      }

      embed = new UpdatingQueueEmbed(player);

      this.embedsByGuild.set(guildId, embed);
    }

    return embed;
  }
}