Skip to content

Commit

Permalink
Fix review context filter preference
Browse files Browse the repository at this point in the history
  • Loading branch information
candela97 committed Aug 25, 2024
1 parent 0efeb7e commit 0f3db89
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 21 deletions.
20 changes: 11 additions & 9 deletions src/js/Content/Features/Store/App/FSaveReviewFilters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import Feature from "@Content/Modules/Context/Feature";
import type CApp from "@Content/Features/Store/App/CApp";
import LocalStorage from "@Core/Storage/LocalStorage";
import DOMHelper from "@Content/Modules/DOMHelper";
import type {ReviewFilters} from "@Core/Storage/LocalStorage";

export default class FSaveReviewFilters extends Feature<CApp> {

Expand All @@ -11,19 +12,20 @@ export default class FSaveReviewFilters extends Feature<CApp> {

override async apply(): Promise<void> {

document.addEventListener("filtersChanged", async () => {
const context = document.querySelector<HTMLInputElement>("#review_context")!.value;
const language = document.querySelector<HTMLInputElement>("input[name=review_language]:checked")!.id;
document.addEventListener("as_filtersChanged", async () => {
const context = document.querySelector<HTMLInputElement>("input[name=review_context]:checked")?.id;
const language = document.querySelector<HTMLInputElement>("input[name=review_language]:checked")?.id;
const minPlaytime = document.querySelector<HTMLInputElement>("#app_reviews_playtime_range_min")?.value;
const maxPlaytime = document.querySelector<HTMLInputElement>("#app_reviews_playtime_range_max")?.value;

const value: Record<string, string> = (await LocalStorage.get("review_filters")) ?? {};
value.context = context;
value.language = language;
if (minPlaytime) { value.minPlaytime = minPlaytime; }
if (maxPlaytime) { value.maxPlaytime = maxPlaytime; }
const value: ReviewFilters = {
...((await LocalStorage.get("review_filters")) ?? {}),
context,
language,
...(minPlaytime && {minPlaytime}),
...(maxPlaytime && {maxPlaytime})
};

// @ts-ignore
LocalStorage.set("review_filters", value);
});

Expand Down
14 changes: 8 additions & 6 deletions src/js/Core/Storage/LocalStorage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ interface CacheEntry<V = unknown> {
expiry: number
}

export interface ReviewFilters {
context: string|undefined,
language: string|undefined,
minPlaytime?: string,
maxPlaytime?: string
}

interface LocalStorageSchema extends StorageSchema {
login: TLogin,
storeCountry: string,
Expand Down Expand Up @@ -40,12 +47,7 @@ interface LocalStorageSchema extends StorageSchema {
data: any, // TODO fix type
expiry: number
},
review_filters: {
context: string,
language: string,
minPlaytime?: string,
maxPlaytime?: string
}
review_filters: ReviewFilters
}

class LocalStorage<Schema extends StorageSchema> extends Storage<ns.LocalStorageArea, Schema>{
Expand Down
18 changes: 12 additions & 6 deletions src/scriptlets/Store/App/saveReviewFilters.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,25 @@

window.ShowFilteredReviews = function() {
oldShowFilteredReviews();
document.dispatchEvent(new CustomEvent("filtersChanged"));
document.dispatchEvent(new CustomEvent("as_filtersChanged"));
};

let filtersChanged = false;

if (context && context !== "summary") {
filtersChanged = true;
document.querySelector("#review_context").value = context;
if (context && context !== "review_context_summary") {
const input = document.querySelector(`#${context}`);
if (input) {
filtersChanged = true;
input.checked = true;
}
}

if (language && language !== "review_language_mine") {
filtersChanged = true;
document.querySelector(`#${language}`).checked = true;
const input = document.querySelector(`#${language}`);
if (input) {
filtersChanged = true;
input.checked = true;
}
}

// Playtime filters may not be available on apps with too few reviews
Expand Down

0 comments on commit 0f3db89

Please sign in to comment.