Skip to content

Commit 4fbc715

Browse files
committed
refactor: Better typings for flags
1 parent 85c749c commit 4fbc715

4 files changed

Lines changed: 13 additions & 7 deletions

File tree

app/flags/ls-adapter.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { FlagName, FlagValue } from "./types";
22

33
export const prefix = "flag__";
4-
export const getKey = (name: FlagName) => prefix + name;
4+
5+
type FlagNameOrString = FlagName | (string & {});
6+
7+
export const getKey = (name: FlagNameOrString) => prefix + name;
58

69
const listFlagLocalStorage = () => {
710
return Object.keys(localStorage)
@@ -14,7 +17,7 @@ const listFlagLocalStorage = () => {
1417
*
1518
* @param {String} flag
1619
*/
17-
const getItem = (flag: FlagName) => {
20+
const getItem = (flag: FlagNameOrString) => {
1821
const val = localStorage.getItem(getKey(flag));
1922
const parsed = val ? JSON.parse(val) : val;
2023
return parsed;
@@ -26,7 +29,7 @@ const getItem = (flag: FlagName) => {
2629
* @param {String} flag
2730
* @param {String} value
2831
*/
29-
const setItem = (flag: FlagName, value: FlagValue) => {
32+
const setItem = (flag: FlagNameOrString, value: FlagValue) => {
3033
const str = JSON.stringify(value);
3134
return localStorage.setItem(getKey(flag), str);
3235
};
@@ -36,7 +39,7 @@ const setItem = (flag: FlagName, value: FlagValue) => {
3639
*
3740
* @param {String} flag
3841
*/
39-
const removeItem = (flag: FlagName) => {
42+
const removeItem = (flag: FlagNameOrString) => {
4043
return localStorage.removeItem(getKey(flag));
4144
};
4245

app/flags/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ export type FlagName =
1212
/** Whether we can use the free canvas dashboard layout */
1313
| "layouter.dashboard.free-canvas"
1414
/** Whether we can use shared filters on dashboard layout */
15-
| "layouter.dashboard.shared-filters";
15+
| "layouter.dashboard.shared-filters"
16+
/** Whether server side cache is disabled */
17+
| "server-side-cache.disable";

app/flags/useFlag.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ export function useFlags() {
3030
flag.store.removeListener("change", handleChange);
3131
};
3232
}, [setFlags]);
33-
return flags;
33+
return flags as FlagName[];
3434
}

app/gql-flamegraph/devtool.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { pipe, tap } from "wonka";
3333

3434
import useDisclosure from "@/components/use-disclosure";
3535
import { flag, useFlag, useFlags } from "@/flags";
36+
import { FlagName } from "@/flags/types";
3637
import { RequestQueryMeta } from "@/graphql/query-meta";
3738
import useEvent from "@/utils/use-event";
3839

@@ -543,7 +544,7 @@ const FlagSwitch = ({
543544
flagName,
544545
onChange,
545546
...props
546-
}: { flagName: string; onChange?: (value: Boolean) => void } & Omit<
547+
}: { flagName: FlagName; onChange?: (value: Boolean) => void } & Omit<
547548
SwitchProps,
548549
"onChange"
549550
>) => {

0 commit comments

Comments
 (0)