From 4154488dbe0e157ea92434382cc5d2d646cdd2bb Mon Sep 17 00:00:00 2001 From: Anton Lantukh Date: Mon, 20 Nov 2023 16:12:03 +0100 Subject: [PATCH] feat(project): change the way of DI --- src/modules/register.ts | 12 +++++++++--- src/services/epg/epgClient.service.test.ts | 4 +++- src/services/epg/epgClient.service.ts | 16 ++++++++++------ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/modules/register.ts b/src/modules/register.ts index df2b8a612..75300dd3c 100644 --- a/src/modules/register.ts +++ b/src/modules/register.ts @@ -14,7 +14,7 @@ import SettingsService from '#src/services/settings.service'; // Epg services import EpgClientService from '#src/services/epg/epgClient.service'; -import EpgProvider from '#src/services/epg/epgProvider.service'; +import EpgProviderService from '#src/services/epg/epgProvider.service'; import ViewNexaEpgService from '#src/services/epg/viewNexaEpg.service'; import JWEpgService from '#src/services/epg/jwEpg.service'; @@ -80,5 +80,11 @@ container.bind(ProfileService).to(InplayerProfileService).whenTargetNamed(INTEGR // EPG integration container.bind(EpgClientService).toSelf(); -container.bind(EpgProvider).to(JWEpgService).whenTargetNamed(EPG_TYPE.JW); -container.bind(EpgProvider).to(ViewNexaEpgService).whenTargetNamed(EPG_TYPE.VIEW_NEXA); +container + .bind(EpgProviderService) + .to(ViewNexaEpgService) + .when((request) => request.target.name.equals(EPG_TYPE.VIEW_NEXA)); +container + .bind(EpgProviderService) + .to(JWEpgService) + .when((request) => request.target.name.equals(EPG_TYPE.JW)); diff --git a/src/services/epg/epgClient.service.test.ts b/src/services/epg/epgClient.service.test.ts index 804a6e31e..bff9dfaff 100644 --- a/src/services/epg/epgClient.service.test.ts +++ b/src/services/epg/epgClient.service.test.ts @@ -10,11 +10,13 @@ import type { Playlist } from '#types/playlist'; import { EPG_TYPE } from '#src/config'; const livePlaylist = livePlaylistFixture as Playlist; -const epgService = new EpgClientService(); const transformProgram = vi.fn(); const fetchSchedule = vi.fn(); +const epgProvider = { transformProgram, fetchSchedule }; +const epgService = new EpgClientService(epgProvider, epgProvider); + const mockProgram1 = { id: 'test', title: 'Test', diff --git a/src/services/epg/epgClient.service.ts b/src/services/epg/epgClient.service.ts index 54d71bc56..8be758e20 100644 --- a/src/services/epg/epgClient.service.ts +++ b/src/services/epg/epgClient.service.ts @@ -1,11 +1,10 @@ import { addDays, differenceInDays } from 'date-fns'; -import { injectable } from 'inversify'; +import { injectable, targetName } from 'inversify'; import EpgProviderService from './epgProvider.service'; import { logDev } from '#src/utils/common'; import { EPG_TYPE } from '#src/config'; -import { getNamedModule } from '#src/modules/container'; import type { PlaylistItem } from '#types/playlist'; import type { EpgProgram, EpgChannel } from '#types/epg'; @@ -20,6 +19,14 @@ export const isFulfilled = (input: PromiseSettledResult): input is Promise @injectable() export default class EpgClientService { + private viewNexaProvider: EpgProviderService; + private jwProvider: EpgProviderService; + + public constructor(@targetName(EPG_TYPE.JW) jwProvider: EpgProviderService, @targetName(EPG_TYPE.VIEW_NEXA) viewNexaProvider: EpgProviderService) { + this.viewNexaProvider = viewNexaProvider; + this.jwProvider = jwProvider; + } + /** * Update the start and end time properties of the given programs with the current date. * This can be used when having a static schedule or while developing @@ -96,10 +103,7 @@ export default class EpgClientService { }; getScheduleProvider = (item: PlaylistItem) => { - const scheduleType = item.scheduleType || EPG_TYPE.JW; - const scheduleProvider = getNamedModule(EpgProviderService, scheduleType); - - return scheduleProvider; + return item?.scheduleType === EPG_TYPE.VIEW_NEXA ? this.viewNexaProvider : this.jwProvider; }; /**