Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ ROLE_BAC="PRIV - Narrowcasting Prod BAC"
ROLE_AVICO="PRIV - Narrowcasting Prod AViCo"

TRELLO_KEY=
TRELLO_BOARD_ID=
TRELLO_BOARD_ID=mock
TRELLO_TOKEN=
TRELLO_SECRET=
TRELLO_BASE_POSTER_LIST_NAME=BasePosters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { TrelloPosterManager } from './trello/trello-poster-manager';
import { TrackChangeEvent } from '../../../events/music-emitter-events';
import { PosterManager } from './poster-manager';
import { ISettings } from '../../../server-settings/server-setting';
import { MockPosterManager } from './mock/mock-poster-manager';

@FeatureEnabled('Poster')
export default class CarouselPosterHandler extends BaseScreenHandler {
Expand All @@ -21,7 +22,12 @@ export default class CarouselPosterHandler extends BaseScreenHandler {
// Check whether we need to enable/disable borrel mode
this.borrelModeInterval = setInterval(this.checkBorrelMode.bind(this), 60 * 1000);
}
this.posterManager = new TrelloPosterManager();
// Overwrite with mock poster manager if we are in development and the trello board id is set to "mock"
if (process.env.NODE_ENV === 'development' && process.env.TRELLO_BOARD_ID === 'mock') {
this.posterManager = new MockPosterManager();
} else {
this.posterManager = new TrelloPosterManager();
}
}

forceUpdate(): void {
Expand Down
91 changes: 91 additions & 0 deletions src/modules/handlers/screen/poster/mock/mock-poster-manager.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import { PosterManager } from '../poster-manager';
import { FooterSize, Poster, PosterType } from '../poster';

/**
* A mock poster manager that returns a fixed set of posters. This can be used for development and testing purposes.
*
* Sources are from Github, TU Ilmenau, and some random websites.
*/
export class MockPosterManager extends PosterManager {
public get posters(): Poster[] | undefined {
return [
{
id: '1',
name: 'Test Poster 1',
label: 'Mock external poster | Full footer',
timeout: 10,
footer: FooterSize.FULL,
type: PosterType.EXTERNAL,
source: ['https://kanikeenkortebroekaan.nl/'],
},
{
id: '2',
name: 'Test Poster 2',
label: 'Mock image poster | Minimal footer',
timeout: 10,
footer: FooterSize.MINIMAL,
type: PosterType.IMAGE,
source: [
'https://raw.githubusercontent.com/D3Ext/aesthetic-wallpapers/main/images/alfa.png',
],
},
{
id: '7',
name: 'Test Poster 7',
label: 'Mock video poster | Full footer',
timeout: 10,
footer: FooterSize.FULL,
type: PosterType.VIDEO,
source: [
'https://avtshare01.rz.tu-ilmenau.de/avt-vqdb-uhd-1/test_1/segments/cutting_orange_tuil_15000kbps_1080p_59.94fps_vp9.mkv',
],
},
{
id: '3',
name: 'Test Poster 3',
label: 'Mock external poster | Minimal footer',
timeout: 10,
footer: FooterSize.MINIMAL,
type: PosterType.EXTERNAL,
source: ['http://www.bakkenvouwenals.nl/'],
},
{
id: '4',
name: 'Test Poster 4',
label: 'Mock image poster | Full footer',
timeout: 10,
footer: FooterSize.FULL,
type: PosterType.IMAGE,
source: [
'https://raw.githubusercontent.com/D3Ext/aesthetic-wallpapers/main/images/fox.png',
],
},
{
id: '5',
name: 'Test Poster 5',
label: 'Mock image poster | Full footer',
timeout: 10,
footer: FooterSize.FULL,
type: PosterType.IMAGE,
source: [
'https://raw.githubusercontent.com/D3Ext/aesthetic-wallpapers/main/images/trigonometry.png',
],
},
{
id: '6',
name: 'Test Poster 6',
label: 'Mock video poster | Minimal footer',
timeout: 10,
footer: FooterSize.MINIMAL,
type: PosterType.VIDEO,
source: [
'https://avtshare01.rz.tu-ilmenau.de/avt-vqdb-uhd-1/test_1/segments/bigbuck_bunny_8bit_15000kbps_1080p_60.0fps_vp9.mkv',
],
},
];
}

async fetchPosters(): Promise<Poster[]> {
return this.posters ?? [];
}
}