From ef3b16d019829ae59505e7dbd7f21f37b6cd42cd Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 8 Mar 2025 18:57:34 +0300 Subject: [PATCH] Add names from the guides to the search index --- src/models/channel.js | 17 +++++++++++------ src/store.js | 3 ++- tests/store.test.js | 10 ++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/models/channel.js b/src/models/channel.js index 56d1f7407..f1b76ab29 100644 --- a/src/models/channel.js +++ b/src/models/channel.js @@ -1,5 +1,9 @@ export class Channel { constructor(data) { + const _streams = Array.isArray(data.streams) ? data.streams : [] + const _guides = Array.isArray(data.guides) ? data.guides : [] + const _blocklistRecords = Array.isArray(data.blocklistRecords) ? data.blocklistRecords : [] + this.id = data.id this.name = data.name this.alt_names = this.alt_name = data.altNames @@ -26,9 +30,9 @@ export class Channel { this.replaced_by = data.replacedBy this.website = data.website this.logo = data.logo - this.streams = Array.isArray(data.streams) ? data.streams.length : 0 - this.guides = Array.isArray(data.guides) ? data.guides.length : 0 - this.is_blocked = Array.isArray(data.blocklistRecords) && data.blocklistRecords.length > 0 + this.streams = _streams.length + this.guides = _guides.length + this.is_blocked = _blocklistRecords.length > 0 this._hasUniqueName = data.hasUniqueName this._displayName = data.hasUniqueName ? data.name : `${data.name} (${data.country?.name})` @@ -37,9 +41,10 @@ export class Channel { this._languages = data.languages this._categories = data.categories this._broadcastArea = data.broadcastArea - this._streams = data.streams || [] - this._guides = data.guides || [] - this._blocklistRecords = data.blocklistRecords || [] + this._streams = _streams + this._guides = _guides + this._blocklistRecords = _blocklistRecords + this._guideNames = _guides.map(guide => guide.site_name).filter(Boolean) } toObject() { diff --git a/src/store.js b/src/store.js index 199fa5023..bb5b20b72 100644 --- a/src/store.js +++ b/src/store.js @@ -63,7 +63,8 @@ export async function fetchChannels() { 'guides', 'is_nsfw', 'is_closed', - 'is_blocked' + 'is_blocked', + '_guideNames' ] }) } diff --git a/tests/store.test.js b/tests/store.test.js index 812498a4a..852daa4e8 100644 --- a/tests/store.test.js +++ b/tests/store.test.js @@ -303,6 +303,16 @@ describe('search', () => { id: 'ORF2Europe.at' }) }) + + it('can find channel by display name from the guides', () => { + search('La Liga HD') + + const results = get(filteredChannels) + expect(results.length).toBe(1) + expect(results[0]).toMatchObject({ + id: 'LaLiganaZap.ao' + }) + }) }) function mockFetch() {