Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | 356x 356x 356x 1185x 1185x 1185x 225x 225x 960x 356x 356x 1185x 1185x 1185x 1156x 29x 29x 29x 356x 1185x 1185x 1185x 356x 1185x 1185x 1185x 1185x 1185x 356x 356x 1185x 1185x 1185x 1141x 1141x 44x 356x 356x 264x 264x 264x 264x | import { z } from "zod";
import { StartingTimeOption } from "client/views/all-program-items/programListUtils";
import { AgeGroup, Language, Tag } from "shared/types/models/programItem";
import { StringToJsonSchema } from "client/utils/zodUtils";
import { browserStoragePrefix } from "shared/constants/browserStorage";
// A const object instead of an enum because enum members can't hold the
// computed event-specific prefix
export const SessionStorageValue = {
ALL_PROGRAM_ITEMS_SEARCH_TERM: `${browserStoragePrefix}-allProgramItemsSearchTerm`,
ALL_PROGRAM_ITEMS_TAG: `${browserStoragePrefix}-allProgramItemsTag`,
ALL_PROGRAM_ITEMS_SELECTED_VIEW: `${browserStoragePrefix}-allProgramItemsSelectedView`,
ALL_PROGRAM_ITEMS_STARTING_TIME: `${browserStoragePrefix}-allProgramItemsStartingTime`,
ALL_PROGRAM_ITEMS_HIDE_FULL: `${browserStoragePrefix}-allProgramItemsHideFull`,
MY_PROGRAM_ITEMS_SHOW_ALL_PROGRAM_ITEMS: `${browserStoragePrefix}-myProgramItemsShowAllProgramItems`,
} as const;
const SavedSearchTermSchema = z.string();
export const getSavedSearchTerm = (): string => {
const serializedValue = sessionStorage.getItem(
SessionStorageValue.ALL_PROGRAM_ITEMS_SEARCH_TERM,
);
const result = SavedSearchTermSchema.safeParse(serializedValue);
if (!result.success) {
sessionStorage.removeItem(
SessionStorageValue.ALL_PROGRAM_ITEMS_SEARCH_TERM,
);
return "";
}
return result.data;
};
const SavedTagsSchema = z.array(
z.enum(Tag).or(z.enum(Language)).or(z.enum(AgeGroup)),
);
export const getSavedTags = (): (Tag | Language | AgeGroup)[] => {
const serializedValue = sessionStorage.getItem(
SessionStorageValue.ALL_PROGRAM_ITEMS_TAG,
);
const parseJsonResult = StringToJsonSchema.safeParse(serializedValue);
if (!parseJsonResult.success) {
return [];
}
const result = SavedTagsSchema.safeParse(parseJsonResult.data);
Iif (!result.success) {
sessionStorage.removeItem(SessionStorageValue.ALL_PROGRAM_ITEMS_TAG);
return [];
}
return result.data;
};
const SavedHideFullSchema = z.preprocess((val) => {
Iif (val === "true") return true;
Iif (val === "false") return false;
return;
}, z.boolean().nullable());
export const getSavedHideFull = (): boolean => {
const serializedValue = sessionStorage.getItem(
SessionStorageValue.ALL_PROGRAM_ITEMS_HIDE_FULL,
);
const result = SavedHideFullSchema.safeParse(serializedValue);
Eif (!result.success) {
sessionStorage.removeItem(SessionStorageValue.ALL_PROGRAM_ITEMS_HIDE_FULL);
return false;
}
return result.data ?? false;
};
const SavedStartingTimeSchema = z.enum(StartingTimeOption);
export const getSavedStartingTime = (): StartingTimeOption => {
const serializedValue = sessionStorage.getItem(
SessionStorageValue.ALL_PROGRAM_ITEMS_STARTING_TIME,
);
const result = SavedStartingTimeSchema.safeParse(serializedValue);
if (!result.success) {
sessionStorage.removeItem(
SessionStorageValue.ALL_PROGRAM_ITEMS_STARTING_TIME,
);
return StartingTimeOption.UPCOMING;
}
return result.data;
};
const SavedShowAllProgramItemsSchema = z.boolean();
export const getSavedShowAllProgramItems = (): boolean => {
const serializedValue = sessionStorage.getItem(
SessionStorageValue.MY_PROGRAM_ITEMS_SHOW_ALL_PROGRAM_ITEMS,
);
const parseJsonResult = StringToJsonSchema.safeParse(serializedValue);
Eif (!parseJsonResult.success) {
return false;
}
const result = SavedShowAllProgramItemsSchema.safeParse(parseJsonResult.data);
if (!result.success) {
sessionStorage.removeItem(
SessionStorageValue.MY_PROGRAM_ITEMS_SHOW_ALL_PROGRAM_ITEMS,
);
return false;
}
return result.data;
};
|