diff --git a/packages/manager/.changeset/pr-13399-fixed-1771414399036.md b/packages/manager/.changeset/pr-13399-fixed-1771414399036.md
new file mode 100644
index 00000000000..9288b7e90f7
--- /dev/null
+++ b/packages/manager/.changeset/pr-13399-fixed-1771414399036.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Fixed
+---
+
+IAM Delegation: incorrect landing page after account switch, wrong top menu username, pagination disappears in the User Delegations table ([#13399](https://github.com/linode/manager/pull/13399))
diff --git a/packages/manager/src/features/Account/SwitchAccountDrawer.tsx b/packages/manager/src/features/Account/SwitchAccountDrawer.tsx
index f6b63918268..728023b9260 100644
--- a/packages/manager/src/features/Account/SwitchAccountDrawer.tsx
+++ b/packages/manager/src/features/Account/SwitchAccountDrawer.tsx
@@ -159,7 +159,7 @@ export const SwitchAccountDrawer = (props: Props) => {
userType: isProxyUserType ? 'proxy' : 'delegate',
});
onClose(event);
- location.reload();
+ location.replace('/linodes');
} catch {
// Error is handled by createTokenError.
}
diff --git a/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegationsTable.tsx b/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegationsTable.tsx
index 7448aa5aba8..8716aa4bdb8 100644
--- a/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegationsTable.tsx
+++ b/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegationsTable.tsx
@@ -11,6 +11,7 @@ import * as React from 'react';
import { DebouncedSearchTextField } from 'src/components/DebouncedSearchTextField';
import { PaginationFooter } from 'src/components/PaginationFooter/PaginationFooter';
+import { MIN_PAGE_SIZE } from 'src/components/PaginationFooter/PaginationFooter.constants';
import { Table } from 'src/components/Table';
import { TableBody } from 'src/components/TableBody';
import { TableCell } from 'src/components/TableCell';
@@ -25,11 +26,13 @@ import { usePaginationV2 } from 'src/hooks/usePaginationV2';
import type { Theme } from '@mui/material';
+const USER_DELEGATION_ROUTE = '/iam/users/$username/delegations';
+
export const UserDelegationsTable = () => {
const { username } = useParams({ from: '/iam/users/$username' });
const { isIAMDelegationEnabled } = useIsIAMDelegationEnabled();
const { company } = useSearch({
- from: '/iam/users/$username/delegations',
+ from: USER_DELEGATION_ROUTE,
});
const navigate = useNavigate();
@@ -39,13 +42,13 @@ export const UserDelegationsTable = () => {
order: 'asc',
orderBy: 'company',
},
- from: '/iam/users/$username/delegations',
+ from: USER_DELEGATION_ROUTE,
},
preferenceKey: 'user-delegations',
});
const pagination = usePaginationV2({
- currentRoute: '/iam/users/$username/delegations',
+ currentRoute: USER_DELEGATION_ROUTE,
preferenceKey: 'user-delegations',
initialPage: 1,
searchParams: (prev) => ({
@@ -79,7 +82,7 @@ export const UserDelegationsTable = () => {
const handleSearch = (value: string) => {
pagination.handlePageChange(1);
navigate({
- to: '/iam/users/$username/delegations',
+ to: USER_DELEGATION_ROUTE,
params: { username },
search: { company: value || undefined },
});
@@ -134,7 +137,7 @@ export const UserDelegationsTable = () => {
{childAccount.company}
))}
- {(childAccounts?.results ?? 0) > pagination.pageSize && (
+ {(childAccounts?.results ?? 0) > MIN_PAGE_SIZE && (
{
);
-};
\ No newline at end of file
+};