Skip to content

Commit

Permalink
feat: Legacy adv filter
Browse files Browse the repository at this point in the history
  • Loading branch information
colin969 committed Aug 5, 2024
1 parent 053e153 commit 789602d
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/renderer/components/SearchBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,16 @@ export function SearchBar() {
}));
};

const onLegacyChange = (value?: boolean) => {
dispatch(setAdvancedFilter({
view: view.id,
filter: {
...view.advancedFilter,
legacy: value,
}
}));
};

const onPlaylistOrderChange = (value?: boolean) => {
dispatch(setAdvancedFilter({
view: view.id,
Expand Down Expand Up @@ -225,6 +235,10 @@ export function SearchBar() {
title={strings.browse.installed}
value={view.advancedFilter.installed}
onChange={onInstalledChange}/>
<ThreeStateCheckbox
title={strings.browse.legacyGame}
value={view.advancedFilter.legacy}
onChange={onLegacyChange}/>
{ view.selectedPlaylist && (
<ThreeStateCheckbox
title={strings.browse.usePlaylistOrder}
Expand Down
4 changes: 4 additions & 0 deletions src/shared/preferences/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,12 @@ function parseGameMetadataSource(parser: IObjectParserProp<GameMetadataSource>):

function parseAdvancedFilter(parser: IObjectParserProp<AdvancedFilter>, output: AdvancedFilter) {
parser.prop('installed', v => output.installed = v === undefined ? undefined : !!v, true);
parser.prop('legacy', v => output.legacy = v === undefined ? undefined : !!v, true);
parser.prop('library').arrayRaw((item, index) => output.library[index] = str(item));
parser.prop('playlistOrder', v => output.playlistOrder = !!v, true);
parser.prop('playMode').arrayRaw((item, index) => output.playMode[index] = str(item));
parser.prop('platform').arrayRaw((item, index) => output.platform[index] = str(item));
parser.prop('tags').arrayRaw((item, index) => output.tags[index] = str(item));
}

function parseStoredView(parser: IObjectParserProp<StoredView>): StoredView {
Expand Down
9 changes: 9 additions & 0 deletions src/shared/search/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ export function getDefaultGameFilter(): GameFilter {
export function isAdvFilterEmpty(advFilter: AdvancedFilter): boolean {
return (
advFilter.installed === undefined &&
advFilter.legacy === undefined &&
advFilter.library.length === 0 &&
advFilter.playMode.length === 0 &&
advFilter.platform.length === 0 &&
Expand All @@ -61,6 +62,14 @@ export function parseAdvancedFilter(advFilter: AdvancedFilter): GameFilter {
filter.boolComp.installed = advFilter.installed;
}

if (advFilter.legacy !== undefined) {
if (advFilter.legacy) {
filter.equalTo.gameData = 0;
} else {
filter.higherThan.gameData = 0;
}
}

const exactFunc = (key: keyof AdvancedFilter, fieldKey: keyof FieldFilter) => {
const val = advFilter[key] as string[];
if (val.length > 0) {
Expand Down
1 change: 1 addition & 0 deletions typings/flashpoint-launcher.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,7 @@ declare module 'flashpoint-launcher' {

type AdvancedFilter = {
installed?: boolean;
legacy?: boolean;
playlistOrder: boolean;
library: string[];
playMode: string[];
Expand Down

0 comments on commit 789602d

Please sign in to comment.