diff --git a/lib/utils/url-utils.js b/lib/utils/url-utils.js --- a/lib/utils/url-utils.js +++ b/lib/utils/url-utils.js @@ -10,7 +10,7 @@ +chat?: boolean, +apps?: boolean, +thread?: string, - +settings?: 'account', + +settings?: 'account' | 'danger-zone', ... }; @@ -22,6 +22,7 @@ const chatRegex = new RegExp('(/|^)chat(/|$)', 'i'); const appsRegex = new RegExp('(/|^)apps(/|$)', 'i'); const accountSettingsRegex = new RegExp('(/|^)settings/account(/|$)', 'i'); +const dangerZoneRegex = new RegExp('(/|^)settings/danger-zone(/|$)', 'i'); function infoFromURL(url: string): URLInfo { const yearMatches = yearRegex.exec(url); @@ -32,6 +33,8 @@ const chatTest = chatRegex.test(url); const appsTest = appsRegex.test(url); const accountSettingsTest = accountSettingsRegex.test(url); + const dangerZoneTest = dangerZoneRegex.test(url); + const returnObj = {}; if (yearMatches) { returnObj.year = parseInt(yearMatches[2], 10); @@ -57,6 +60,8 @@ returnObj.apps = true; } else if (accountSettingsTest) { returnObj.settings = 'account'; + } else if (dangerZoneTest) { + returnObj.settings = 'danger-zone'; } return returnObj; } diff --git a/web/sidebar/settings-switcher.react.js b/web/sidebar/settings-switcher.react.js --- a/web/sidebar/settings-switcher.react.js +++ b/web/sidebar/settings-switcher.react.js @@ -10,6 +10,7 @@ function SettingsSwitcher(): React.Node { const dispatch = useDispatch(); + const onClickAccountSettings = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); @@ -20,7 +21,6 @@ }, [dispatch], ); - const accountSettingsNavigationItem = React.useMemo( () => (
@@ -30,11 +30,33 @@ [onClickAccountSettings], ); + const onClickDangerZone = React.useCallback( + (event: SyntheticEvent) => { + event.preventDefault(); + dispatch({ + type: updateNavInfoActionType, + payload: { tab: 'settings', settingsSection: 'danger-zone' }, + }); + }, + [dispatch], + ); + const dangerZoneNavigationItem = React.useMemo( + () => ( +
+

Danger Zone

+
+ ), + [onClickDangerZone], + ); + return ( {accountSettingsNavigationItem} + + {dangerZoneNavigationItem} + ); } diff --git a/web/types/nav-types.js b/web/types/nav-types.js --- a/web/types/nav-types.js +++ b/web/types/nav-types.js @@ -5,7 +5,7 @@ export type NavigationTab = 'calendar' | 'chat' | 'apps' | 'settings'; -export type NavigationSettingsSection = 'account'; +export type NavigationSettingsSection = 'account' | 'danger-zone'; export type NavInfo = { ...$Exact,