From 0eceddab77cbda7a51621f6799e939a87daee949 Mon Sep 17 00:00:00 2001 From: Viren070 Date: Mon, 28 Apr 2025 20:36:27 +0100 Subject: [PATCH] feat: add 'personal' sort criteria to allow prioritising personal/your media results --- packages/addon/src/addon.ts | 19 +++++++++++++------ packages/frontend/src/app/configure/page.tsx | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/addon/src/addon.ts b/packages/addon/src/addon.ts index 49d0528e..5bb8ae0b 100644 --- a/packages/addon/src/addon.ts +++ b/packages/addon/src/addon.ts @@ -739,12 +739,19 @@ export class AIOStreams { ? -1 : 1; // cached > uncached } - } else if (field === 'hasProvider') { - // files from a provider should be prioritised and then - let aHasProvider = a.provider; - let bHasProvider = b.provider; - if (aHasProvider && !bHasProvider) return -1; - if (!aHasProvider && bHasProvider) return 1; + } else if (field === 'personal') { + // depending on direction, sort by personal or not personal + const direction = this.config.sortBy.find( + (sort) => Object.keys(sort)[0] === 'personal' + )?.direction; + if (direction === 'asc') { + // prefer not personal over personal + return a.personal === b.personal ? 0 : a.personal ? 1 : -1; + } + if (direction === 'desc') { + // prefer personal over not personal + return a.personal === b.personal ? 0 : a.personal ? -1 : 1; + } } else if (field === 'service') { // sort files with providers by name let aProvider = a.provider?.id; diff --git a/packages/frontend/src/app/configure/page.tsx b/packages/frontend/src/app/configure/page.tsx index 877a0ff7..5a941e7c 100644 --- a/packages/frontend/src/app/configure/page.tsx +++ b/packages/frontend/src/app/configure/page.tsx @@ -104,6 +104,7 @@ const defaultEncodes: Encode[] = [ ]; const defaultSortCriteria: SortBy[] = [ + { personal: true, direction: 'desc' }, { cached: true, direction: 'desc' }, { resolution: true }, { language: true },