diff --git a/changes/14620-save-inherited-query b/changes/14620-save-inherited-query new file mode 100644 index 0000000000..87a66aa98a --- /dev/null +++ b/changes/14620-save-inherited-query @@ -0,0 +1 @@ +- Fix bug where save as new for an inherited query will correctly save on the currently selected team diff --git a/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.tsx b/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.tsx index a3319aac86..c7318ab266 100644 --- a/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.tsx +++ b/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.tsx @@ -341,6 +341,7 @@ const ManageQueriesPage = ({ router={router} queryParams={queryParams} isInherited + currentTeamId={currentTeamId} /> ); }; diff --git a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx index 40f11cf2ad..b310505a37 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx +++ b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTable.tsx @@ -45,6 +45,7 @@ interface IQueriesTableProps { inherited_page?: string; }; isInherited?: boolean; + currentTeamId?: number; } const DEFAULT_SORT_DIRECTION = "asc"; @@ -96,6 +97,7 @@ const QueriesTable = ({ router, queryParams, isInherited = false, + currentTeamId, }: IQueriesTableProps): JSX.Element | null => { const { currentUser } = useContext(AppContext); @@ -277,8 +279,10 @@ const QueriesTable = ({ }; const tableHeaders = useMemo( - () => currentUser && generateTableHeaders({ currentUser, isInherited }), - [currentUser, isInherited] + () => + currentUser && + generateTableHeaders({ currentUser, isInherited, currentTeamId }), + [currentUser, isInherited, currentTeamId] ); const searchable = diff --git a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx index c7269bea24..b577a6e266 100644 --- a/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx +++ b/frontend/pages/queries/ManageQueriesPage/components/QueriesTable/QueriesTableConfig.tsx @@ -102,6 +102,7 @@ interface IDataColumn { interface IGenerateTableHeaders { currentUser: IUser; isInherited?: boolean; + currentTeamId?: number; } // NOTE: cellProps come from react-table @@ -109,6 +110,7 @@ interface IGenerateTableHeaders { const generateTableHeaders = ({ currentUser, isInherited = false, + currentTeamId, }: IGenerateTableHeaders): IDataColumn[] => { const isOnlyObserver = permissionsUtils.isOnlyObserver(currentUser); @@ -154,7 +156,7 @@ const generateTableHeaders = ({ } path={PATHS.QUERY( cellProps.row.original.id, - cellProps.row.original.team_id ?? undefined + cellProps.row.original.team_id ?? currentTeamId )} /> ); diff --git a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx index 197a081ba1..653d05ef5c 100644 --- a/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx +++ b/frontend/pages/queries/details/QueryDetailsPage/QueryDetailsPage.tsx @@ -49,12 +49,14 @@ const baseClass = "query-details-page"; const QueryDetailsPage = ({ router, - params: { id: paramsQueryId, team_id: paramsTeamId }, + params: { id: paramsQueryId }, location, }: IQueryDetailsPageProps): JSX.Element => { const queryId = parseInt(paramsQueryId, 10); const queryParams = location.query; - const teamId = parseInt(paramsTeamId, 10); + const teamId = location.query.team_id + ? parseInt(location.query.team_id, 10) + : undefined; // Functions to avoid race conditions const serverSortBy: ISortOption[] = (() => { @@ -77,6 +79,7 @@ const QueryDetailsPage = ({ filteredQueriesPath, availableTeams, setCurrentTeam, + currentTeam, } = useContext(AppContext); const { lastEditedQueryName, @@ -198,7 +201,7 @@ const QueryDetailsPage = ({ {canEditQuery && (