From 5005d184b9e2834add75eddfe9ee7af08d999c8e Mon Sep 17 00:00:00 2001 From: sid597 Date: Thu, 25 Dec 2025 22:27:21 +0530 Subject: [PATCH] move settings utils to a seperate folder --- .../settings/BlockPropFeatureFlagPanel.tsx | 7 ++-- .../accessors.ts} | 35 +++++++++++++++++-- .../init.ts} | 0 .../pullWatch.ts} | 2 +- .../zodSchema.ts} | 0 .../utils/initializeObserversAndListeners.ts | 6 ++-- apps/roam/src/utils/manageFeatureFlag.ts | 33 ----------------- 7 files changed, 41 insertions(+), 42 deletions(-) rename apps/roam/src/utils/{settingsUsingBlockProps.ts => Settings/accessors.ts} (73%) rename apps/roam/src/utils/{initBlockPropSettings.ts => Settings/init.ts} (100%) rename apps/roam/src/utils/{pullWatchBlockPropsBasedSettings.ts => Settings/pullWatch.ts} (95%) rename apps/roam/src/utils/{zodSchemaForSettings.ts => Settings/zodSchema.ts} (100%) delete mode 100644 apps/roam/src/utils/manageFeatureFlag.ts diff --git a/apps/roam/src/components/settings/BlockPropFeatureFlagPanel.tsx b/apps/roam/src/components/settings/BlockPropFeatureFlagPanel.tsx index cd6e0986d..7b5d1046f 100644 --- a/apps/roam/src/components/settings/BlockPropFeatureFlagPanel.tsx +++ b/apps/roam/src/components/settings/BlockPropFeatureFlagPanel.tsx @@ -1,5 +1,8 @@ -import { getFeatureFlag, setFeatureFlag } from "~/utils/manageFeatureFlag"; -import { type FeatureFlags } from "~/utils/zodSchemaForSettings"; +import { + getFeatureFlag, + setFeatureFlag, +} from "~/utils/Settings/accessors"; +import { type FeatureFlags } from "~/utils/Settings/zodSchema"; import { Checkbox } from "@blueprintjs/core"; import Description from "roamjs-components/components/Description"; import idToTitle from "roamjs-components/util/idToTitle"; diff --git a/apps/roam/src/utils/settingsUsingBlockProps.ts b/apps/roam/src/utils/Settings/accessors.ts similarity index 73% rename from apps/roam/src/utils/settingsUsingBlockProps.ts rename to apps/roam/src/utils/Settings/accessors.ts index ec2316b2e..e91a861db 100644 --- a/apps/roam/src/utils/settingsUsingBlockProps.ts +++ b/apps/roam/src/utils/Settings/accessors.ts @@ -1,7 +1,9 @@ -import getBlockProps, { type json } from "./getBlockProps"; +import getBlockProps, { type json } from "../getBlockProps"; import getBlockUidByTextOnPage from "roamjs-components/queries/getBlockUidByTextOnPage"; -import setBlockProps from "./setBlockProps"; -import { DG_BLOCK_PROP_SETTINGS_PAGE_TITLE } from "~/data/blockPropsSettingsConfig"; +import setBlockProps from "../setBlockProps"; +import { DG_BLOCK_PROP_SETTINGS_PAGE_TITLE, TOP_LEVEL_BLOCK_PROP_KEYS } from "~/data/blockPropsSettingsConfig"; +import z from "zod"; +import { FeatureFlags, FeatureFlagsSchema } from "./zodSchema"; export const getBlockPropBasedSettings = ({ keys, @@ -100,3 +102,30 @@ export const setBlockPropBasedSettings = ({ setBlockProps(blockUid, updatedProps, true); }; + + +export const getFeatureFlag = (key: keyof FeatureFlags): boolean => { + const featureFlagKey = TOP_LEVEL_BLOCK_PROP_KEYS.featureFlags; + + const { blockProps } = getBlockPropBasedSettings({ + keys: [featureFlagKey], + }); + + const flags = FeatureFlagsSchema.parse(blockProps || {}); + + return flags[key]; +}; + +export const setFeatureFlag = ( + key: keyof FeatureFlags, + value: boolean, +): void => { + const featureFlagKey = TOP_LEVEL_BLOCK_PROP_KEYS.featureFlags; + + const validatedValue = z.boolean().parse(value); + + void setBlockPropBasedSettings({ + keys: [featureFlagKey, key], + value: validatedValue, + }); +}; \ No newline at end of file diff --git a/apps/roam/src/utils/initBlockPropSettings.ts b/apps/roam/src/utils/Settings/init.ts similarity index 100% rename from apps/roam/src/utils/initBlockPropSettings.ts rename to apps/roam/src/utils/Settings/init.ts diff --git a/apps/roam/src/utils/pullWatchBlockPropsBasedSettings.ts b/apps/roam/src/utils/Settings/pullWatch.ts similarity index 95% rename from apps/roam/src/utils/pullWatchBlockPropsBasedSettings.ts rename to apps/roam/src/utils/Settings/pullWatch.ts index a18806a60..49760fb1b 100644 --- a/apps/roam/src/utils/pullWatchBlockPropsBasedSettings.ts +++ b/apps/roam/src/utils/Settings/pullWatch.ts @@ -1,5 +1,5 @@ import { TOP_LEVEL_BLOCK_PROP_KEYS } from "~/data/blockPropsSettingsConfig"; -import { json, normalizeProps } from "./getBlockProps"; +import { json, normalizeProps } from "~/utils/getBlockProps"; export const setupPullWatchBlockPropsBasedSettings = ( blockUids: Record, diff --git a/apps/roam/src/utils/zodSchemaForSettings.ts b/apps/roam/src/utils/Settings/zodSchema.ts similarity index 100% rename from apps/roam/src/utils/zodSchemaForSettings.ts rename to apps/roam/src/utils/Settings/zodSchema.ts diff --git a/apps/roam/src/utils/initializeObserversAndListeners.ts b/apps/roam/src/utils/initializeObserversAndListeners.ts index 9a464d1a8..b08dd6858 100644 --- a/apps/roam/src/utils/initializeObserversAndListeners.ts +++ b/apps/roam/src/utils/initializeObserversAndListeners.ts @@ -56,9 +56,9 @@ import { import { getCleanTagText } from "~/components/settings/NodeConfig"; import getPleasingColors from "@repo/utils/getPleasingColors"; import { colord } from "colord"; -import { getFeatureFlag } from "./manageFeatureFlag"; -import { setupPullWatchBlockPropsBasedSettings } from "./pullWatchBlockPropsBasedSettings"; -import { initSchema } from "./initBlockPropSettings"; +import { getFeatureFlag } from "./Settings/accessors"; +import { setupPullWatchBlockPropsBasedSettings } from "~/utils/Settings/pullWatch"; +import { initSchema } from "./Settings/init"; const debounce = (fn: () => void, delay = 250) => { let timeout: number; diff --git a/apps/roam/src/utils/manageFeatureFlag.ts b/apps/roam/src/utils/manageFeatureFlag.ts deleted file mode 100644 index b17653927..000000000 --- a/apps/roam/src/utils/manageFeatureFlag.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { z } from "zod"; -import { FeatureFlagsSchema, type FeatureFlags } from "./zodSchemaForSettings"; -import { TOP_LEVEL_BLOCK_PROP_KEYS } from "~/data/blockPropsSettingsConfig"; -import { - setBlockPropBasedSettings, - getBlockPropBasedSettings, -} from "~/utils/settingsUsingBlockProps"; - -export const getFeatureFlag = (key: keyof FeatureFlags): boolean => { - const featureFlagKey = TOP_LEVEL_BLOCK_PROP_KEYS.featureFlags; - - const { blockProps } = getBlockPropBasedSettings({ - keys: [featureFlagKey], - }); - - const flags = FeatureFlagsSchema.parse(blockProps || {}); - - return flags[key]; -}; - -export const setFeatureFlag = ( - key: keyof FeatureFlags, - value: boolean, -): void => { - const featureFlagKey = TOP_LEVEL_BLOCK_PROP_KEYS.featureFlags; - - const validatedValue = z.boolean().parse(value); - - void setBlockPropBasedSettings({ - keys: [featureFlagKey, key], - value: validatedValue, - }); -};