Skip to content

Commit 42843ee

Browse files
committed
feat: enhance handleThemePreferenceChange to support local updates and prevent unnecessary storage/analytics updates
1 parent a524289 commit 42843ee

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

src/Shared/Providers/ThemeProvider/ThemeProvider.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ export const ThemeProvider = ({ children }: ThemeProviderProps) => {
3131
const [showSwitchThemeLocationTippy, setShowSwitchThemeLocationTippy] = useState<boolean>(false)
3232
const [themeConfig, setThemeConfig] = useState<ThemeConfigType>(getThemeConfigFromLocalStorage)
3333

34-
const handleThemePreferenceChange: ThemeContextType['handleThemePreferenceChange'] = (updatedThemePreference) => {
34+
const handleThemePreferenceChange: ThemeContextType['handleThemePreferenceChange'] = (
35+
updatedThemePreference,
36+
isLocalUpdate = false,
37+
) => {
3538
const updatedThemeConfig: ThemeConfigType = {
3639
appTheme:
3740
updatedThemePreference === THEME_PREFERENCE_MAP.auto
@@ -40,8 +43,10 @@ export const ThemeProvider = ({ children }: ThemeProviderProps) => {
4043
themePreference: updatedThemePreference,
4144
}
4245
setThemeConfig(updatedThemeConfig)
43-
setThemePreferenceInLocalStorage(updatedThemePreference)
44-
logThemeToAnalytics(updatedThemeConfig)
46+
if (!isLocalUpdate) {
47+
setThemePreferenceInLocalStorage(updatedThemePreference)
48+
logThemeToAnalytics(updatedThemeConfig)
49+
}
4550
}
4651

4752
const handleColorSchemeChange = () => {

src/Shared/Providers/ThemeProvider/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@
1717
export * from './ThemeProvider'
1818
export { AppThemeType } from './types'
1919
export { getComponentSpecificThemeClass, getThemePreferenceText } from './utils'
20+
export { THEME_PREFERENCE_STORAGE_KEY } from './constants'

src/Shared/Providers/ThemeProvider/types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,13 @@ export interface ThemeContextType extends ThemeConfigType {
5050
handleShowSwitchThemeLocationTippyChange: (isVisible: boolean) => void
5151
showThemeSwitcherDialog: boolean
5252
handleThemeSwitcherDialogVisibilityChange: (isVisible: boolean) => void
53-
handleThemePreferenceChange: (updatedThemePreference: ThemePreferenceType) => void
53+
handleThemePreferenceChange: (
54+
updatedThemePreference: ThemePreferenceType,
55+
/**
56+
* @description If update is local we won't update local storage and analytics
57+
* */
58+
isLocalUpdate?: boolean,
59+
) => void
5460
}
5561

5662
export interface ThemeProviderProps {

0 commit comments

Comments
 (0)