Skip to content

Commit b751cf4

Browse files
committed
refactor: extract event names to const
1 parent 53710ce commit b751cf4

7 files changed

Lines changed: 44 additions & 23 deletions

File tree

src/clients/discord/discord.event-subscriber.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Injectable, Scope } from '@nestjs/common';
22
import { OnEvent } from '@nestjs/event-emitter';
33
import { DiscordVoiceService } from './discord.voice.service';
44
import { PlaybackService } from '../../playback/playback.service';
5+
import { EventNames } from '../../events/names';
56

67
@Injectable({ scope: Scope.DEFAULT })
78
export class DiscordEventSubscriberService {
@@ -10,7 +11,7 @@ export class DiscordEventSubscriberService {
1011
private readonly playbackService: PlaybackService,
1112
) {}
1213

13-
@OnEvent('internal.voice.controls.setVolume')
14+
@OnEvent(EventNames.Controls.SetVolume)
1415
private onChangeVolume({ volume }: { volume: number }) {
1516
this.discordVoiceService.changeCurrentResourceVolume(volume);
1617
this.playbackService.setVolume(volume);

src/clients/discord/discord.voice.service.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { JellyfinStreamBuilderService } from '../jellyfin/jellyfin.stream.builde
3131
import { JellyfinWebSocketService } from '../jellyfin/jellyfin.websocket.service';
3232

3333
import { buildErrorMessage, buildMessage } from './discord.message.builder';
34+
import { EventNames } from '../../events/names';
3435

3536
@Injectable()
3637
export class DiscordVoiceService implements OnModuleDestroy {
@@ -59,7 +60,7 @@ export class DiscordVoiceService implements OnModuleDestroy {
5960
}
6061
}
6162

62-
@OnEvent('internal.audio.track.announce')
63+
@OnEvent(EventNames.Circuit.AnnounceTrack)
6364
handleOnNewTrack(track: Track) {
6465
const url = track.getStreamUrl(this.jellyfinStreamBuilder);
6566
const resource = createAudioResource(url, {
@@ -215,26 +216,26 @@ export class DiscordVoiceService implements OnModuleDestroy {
215216
/**
216217
* Pauses the current audio player
217218
*/
218-
@OnEvent('internal.voice.controls.pause')
219+
@OnEvent(EventNames.Controls.Pause)
219220
pause() {
220221
this.createAndReturnOrGetAudioPlayer().pause();
221222
const track = this.playbackService.getPlaylistOrDefault().getActiveTrack();
222223
if (track) {
223224
track.playing = false;
224225
}
225-
this.eventEmitter.emit('playback.state.pause', true);
226+
this.eventEmitter.emit(EventNames.Circuit.Paused, true);
226227
}
227228

228229
/**
229230
* Stops the audio player
230231
*/
231-
@OnEvent('internal.voice.controls.stop')
232+
@OnEvent(EventNames.Controls.Stop)
232233
stop(force: boolean): boolean {
233234
const hasStopped = this.createAndReturnOrGetAudioPlayer().stop(force);
234235
if (hasStopped) {
235236
const playlist = this.playbackService.getPlaylistOrDefault();
236237
this.eventEmitter.emit(
237-
'internal.audio.track.finish',
238+
EventNames.Circuit.FinishedTrack,
238239
playlist.getActiveTrack(),
239240
);
240241
playlist.clear();
@@ -251,7 +252,7 @@ export class DiscordVoiceService implements OnModuleDestroy {
251252
if (track) {
252253
track.playing = true;
253254
}
254-
this.eventEmitter.emit('playback.state.pause', false);
255+
this.eventEmitter.emit(EventNames.Circuit.Paused, false);
255256
}
256257

257258
/**
@@ -269,7 +270,7 @@ export class DiscordVoiceService implements OnModuleDestroy {
269270
* Checks if the current state is paused or not and toggles the states to the opposite.
270271
* @returns The new paused state - true: paused, false: unpaused
271272
*/
272-
@OnEvent('internal.voice.controls.togglePause')
273+
@OnEvent(EventNames.Controls.TogglePause)
273274
togglePaused(): boolean {
274275
if (this.isPaused()) {
275276
this.unpause();
@@ -399,7 +400,7 @@ export class DiscordVoiceService implements OnModuleDestroy {
399400

400401
if (finishedTrack) {
401402
finishedTrack.playing = false;
402-
this.eventEmitter.emit('internal.audio.track.finish', finishedTrack);
403+
this.eventEmitter.emit(EventNames.Circuit.FinishedTrack, finishedTrack);
403404
}
404405

405406
const hasNextTrack = playlist.hasNextTrackInPlaylist();

src/clients/jellyfin/jellyfin.websocket.service.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
import { JellyfinSearchService } from './search/jellyfin.search.service';
2020
import { JellyfinService } from './jellyfin.service';
2121
import { z } from 'zod';
22+
import { EventNames } from '../../events/names';
2223

2324
@Injectable()
2425
export class JellyfinWebSocketService implements OnModuleDestroy {
@@ -135,19 +136,19 @@ export class JellyfinWebSocketService implements OnModuleDestroy {
135136
) {
136137
switch (request.Command) {
137138
case PlaystateCommand.PlayPause:
138-
this.eventEmitter.emit('internal.voice.controls.togglePause');
139+
this.eventEmitter.emit(EventNames.Controls.TogglePause);
139140
break;
140141
case PlaystateCommand.Pause:
141-
this.eventEmitter.emit('internal.voice.controls.pause');
142+
this.eventEmitter.emit(EventNames.Controls.Pause);
142143
break;
143144
case PlaystateCommand.Stop:
144-
this.eventEmitter.emit('internal.voice.controls.stop');
145+
this.eventEmitter.emit(EventNames.Controls.Stop);
145146
break;
146147
case PlaystateCommand.NextTrack:
147-
this.eventEmitter.emit('internal.audio.track.next');
148+
this.eventEmitter.emit(EventNames.Circuit.NextTrack);
148149
break;
149150
case PlaystateCommand.PreviousTrack:
150-
this.eventEmitter.emit('internal.audio.track.previous');
151+
this.eventEmitter.emit(EventNames.Circuit.PreviousTrack);
151152
break;
152153
default:
153154
this.logger.warn(
@@ -192,7 +193,7 @@ export class JellyfinWebSocketService implements OnModuleDestroy {
192193

193194
switch (data.Name) {
194195
case 'SetVolume':
195-
this.eventEmitter.emit('internal.voice.controls.setVolume', {
196+
this.eventEmitter.emit(EventNames.Controls.SetVolume, {
196197
volume: data.Arguments.Volume,
197198
});
198199
break;

src/clients/jellyfin/jellyfinPlayStateService.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { Interval } from '@nestjs/schedule';
1414
import { Track } from '../../models/track';
1515

1616
import { PlaybackService } from '../../playback/playback.service';
17+
import { EventNames } from '../../events/names';
1718

1819
@Injectable()
1920
export class JellyfinPlayStateService {
@@ -48,7 +49,7 @@ export class JellyfinPlayStateService {
4849
this.logger.debug('Reported playback capabilities successfully');
4950
}
5051

51-
@OnEvent('internal.audio.track.announce')
52+
@OnEvent(EventNames.Circuit.AnnounceTrack)
5253
private async onPlaybackNewTrack(track: Track) {
5354
this.logger.debug(`Reporting playback start on track '${track.id}'`);
5455
await this.playStateApi.reportPlaybackStart({
@@ -59,7 +60,7 @@ export class JellyfinPlayStateService {
5960
});
6061
}
6162

62-
@OnEvent('internal.audio.track.finish')
63+
@OnEvent(EventNames.Circuit.FinishedTrack)
6364
private async onPlaybackFinished(track: Track) {
6465
if (!track) {
6566
this.logger.error(
@@ -76,13 +77,13 @@ export class JellyfinPlayStateService {
7677
});
7778
}
7879

79-
@OnEvent('playback.state.pause')
80+
@OnEvent(EventNames.Circuit.Paused)
8081
private async onPlaybackPause(paused: boolean) {
8182
const track = this.playbackService.getPlaylistOrDefault().getActiveTrack();
8283

8384
if (!track) {
8485
this.logger.error(
85-
'Unable to report changed playstate to Jellyfin because no track was active',
86+
'Unable to report changed play state to Jellyfin because no track was active',
8687
);
8788
return;
8889
}

src/events/names.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export const EventNames = {
2+
Controls: {
3+
SetVolume: 'internal.voice.controls.setVolume',
4+
Pause: 'internal.voice.controls.pause',
5+
Stop: 'internal.voice.controls.stop',
6+
TogglePause: 'internal.voice.controls.togglePause',
7+
},
8+
Circuit: {
9+
AnnounceTrack: 'internal.audio.track.announce',
10+
FinishedTrack: 'internal.audio.track.finish',
11+
Paused: 'playback.state.pause',
12+
PreviousTrack: 'internal.audio.track.previous',
13+
NextTrack: 'internal.audio.track.next',
14+
},
15+
};

src/models/playlist.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { EventEmitter2 } from '@nestjs/event-emitter';
22

33
import { Track } from './track';
4+
import { EventNames } from '../events/names';
45

56
export class Playlist {
67
tracks: Track[];
@@ -151,7 +152,7 @@ export class Playlist {
151152
}
152153

153154
const currentTrack = this.getActiveTrack();
154-
this.eventEmitter.emit('internal.audio.track.finish', currentTrack);
155+
this.eventEmitter.emit(EventNames.Circuit.FinishedTrack, currentTrack);
155156
}
156157

157158
private announceTrackChange() {
@@ -166,7 +167,7 @@ export class Playlist {
166167
}
167168

168169
activeTrack.playing = true;
169-
this.eventEmitter.emit('internal.audio.track.announce', activeTrack);
170+
this.eventEmitter.emit(EventNames.Circuit.AnnounceTrack, activeTrack);
170171
}
171172

172173
private isActiveTrackOutOfSync(): boolean {

src/playback/playback.service.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
22
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';
33

44
import { Playlist } from '../models/playlist';
5+
import { EventNames } from '../events/names';
56

67
@Injectable()
78
export class PlaybackService {
@@ -36,12 +37,12 @@ export class PlaybackService {
3637
return this.volume;
3738
}
3839

39-
@OnEvent('internal.audio.track.previous')
40+
@OnEvent(EventNames.Circuit.PreviousTrack)
4041
private handlePreviousTrackEvent() {
4142
this.getPlaylistOrDefault().setPreviousTrackAsActiveTrack();
4243
}
4344

44-
@OnEvent('internal.audio.track.next')
45+
@OnEvent(EventNames.Circuit.NextTrack)
4546
private handleNextTrackEvent() {
4647
this.getPlaylistOrDefault().setNextTrackAsActiveTrack();
4748
}

0 commit comments

Comments
 (0)