diff --git a/packages/manager/.changeset/pr-13332-fixed-1769527315688.md b/packages/manager/.changeset/pr-13332-fixed-1769527315688.md new file mode 100644 index 00000000000..2a3ea0e29f6 --- /dev/null +++ b/packages/manager/.changeset/pr-13332-fixed-1769527315688.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Fixed +--- + +IAM Delegation: The selected user type is not applied after reloading the page ([#13332](https://github.com/linode/manager/pull/13332)) diff --git a/packages/manager/src/features/IAM/Users/UsersTable/Users.tsx b/packages/manager/src/features/IAM/Users/UsersTable/Users.tsx index 57a4c3e54e4..7bf0432d1a1 100644 --- a/packages/manager/src/features/IAM/Users/UsersTable/Users.tsx +++ b/packages/manager/src/features/IAM/Users/UsersTable/Users.tsx @@ -33,7 +33,7 @@ export const UsersLanding = () => { const { isIAMDelegationEnabled } = useIsIAMDelegationEnabled(); const { data: profile } = useProfile(); - const { query } = useSearch({ + const { query, users: usersParam } = useSearch({ from: '/iam', }); const [isCreateDrawerOpen, setIsCreateDrawerOpen] = @@ -72,8 +72,34 @@ export const UsersLanding = () => { const isChildWithDelegationEnabled = isIAMDelegationEnabled && Boolean(profile?.user_type === 'child'); + const filterableOptions = React.useMemo( + () => [ + ALL_USERS_OPTION, + { + label: 'Users', + value: 'users', + }, + { + label: 'Delegate Users', + value: 'delegate', + }, + ], + [] + ); + + // Initialize userType based on URL parameter + const getInitialUserType = React.useMemo(() => { + if (!usersParam || usersParam === 'all') { + return ALL_USERS_OPTION; + } + return ( + filterableOptions.find((option) => option.value === usersParam) || + ALL_USERS_OPTION + ); + }, [usersParam, filterableOptions]); + const [userType, setUserType] = React.useState( - ALL_USERS_OPTION + getInitialUserType ); const usersFilter: Filter = { @@ -101,18 +127,6 @@ export const UsersLanding = () => { }, }); - const filterableOptions = [ - ALL_USERS_OPTION, - { - label: 'Users', - value: 'users', - }, - { - label: 'Delegate Users', - value: 'delegate', - }, - ]; - const isSmDown = useMediaQuery(theme.breakpoints.down('sm')); const isLgDown = useMediaQuery(theme.breakpoints.up('lg'));