diff --git a/frontend/src/components/modal/AddRepositoryModal.tsx b/frontend/src/components/modal/AddRepositoryModal.tsx
index e833cea..dba5a63 100644
--- a/frontend/src/components/modal/AddRepositoryModal.tsx
+++ b/frontend/src/components/modal/AddRepositoryModal.tsx
@@ -5,8 +5,8 @@ import useAlertError from "../../hooks/useAlertError";
import useCustomSearchParams from "../../hooks/useCustomSearchParams";
import { useAppContext } from "../../context/AppContext";
import { useQueryClient } from "@tanstack/react-query";
-import { useNavigate } from "react-router";
import apiService from "../../API/apiService";
+import useNavigateWithSearchParams from "../../hooks/useNavigateWithSearchParams";
interface FormKeys {
name: string;
@@ -33,7 +33,7 @@ function AddRepositoryModal({ isOpen, onClose }: AddRepositoryModalProps) {
const [isLoading, setIsLoading] = useState(false);
const alertError = useAlertError();
const { setSelectedRepo } = useAppContext();
- const navigate = useNavigate();
+ const navigate = useNavigateWithSearchParams();
const queryClient = useQueryClient();
const addRepository = async () => {
@@ -58,7 +58,8 @@ function AddRepositoryModal({ isOpen, onClose }: AddRepositoryModalProps) {
queryKey: ["helm", "repositories"],
});
setSelectedRepo(formData.name || "");
- await navigate(`/repository/${formData.name}`, {
+ const path = `/repository/${formData.name}`;
+ await navigate(path, {
replace: true,
});
} catch (err) {
@@ -68,6 +69,13 @@ function AddRepositoryModal({ isOpen, onClose }: AddRepositoryModalProps) {
});
} finally {
setIsLoading(false);
+ setFormData({
+ name: "",
+ url: "",
+ username: "",
+ password: "",
+ });
+ onClose();
}
};
diff --git a/frontend/src/layout/Header.tsx b/frontend/src/layout/Header.tsx
index 7a81fe9..44f31a8 100644
--- a/frontend/src/layout/Header.tsx
+++ b/frontend/src/layout/Header.tsx
@@ -76,7 +76,7 @@ export default function Header() {
-
@@ -85,7 +85,7 @@ export default function Header() {
-
{
@@ -21,12 +21,9 @@ function RepositoryPage() {
);
const handleRepositoryChanged = (selectedRepository: Repository) => {
- void navigateTo(
- context
- ? `/${encodeURIComponent(context)}/repository/${selectedRepository.name}`
- : `/repository/${selectedRepository.name}`,
- { replace: true }
- );
+ void navigateTo(`/repository/${selectedRepository.name}`, {
+ replace: true,
+ });
};
useEffect(() => {
@@ -34,31 +31,14 @@ function RepositoryPage() {
setSelectedRepo(repoFromParams);
}
}, [setSelectedRepo, repoFromParams]);
-
- useEffect(() => {
- if (selectedRepo && !repoFromParams) {
- void navigateTo(
- context
- ? `/${encodeURIComponent(context)}/repository/${selectedRepo}`
- : `/repository/${selectedRepo}`,
- { replace: true }
- );
- }
- }, [selectedRepo, repoFromParams, context, navigateTo]);
-
const { data: repositories = [], isSuccess } = useGetRepositories();
- const onSuccess = useEffectEvent(() => {
- if (repositories && repositories.length && !repoFromParams) {
- handleRepositoryChanged(repositories[0]);
- }
- });
-
useEffect(() => {
- if (repositories.length && isSuccess) {
- onSuccess();
+ if (repositories.length && isSuccess && !repoFromParams) {
+ const firstRepo = repositories[0];
+ void navigateTo(`/repository/${firstRepo.name}`, { replace: true });
}
- }, [repositories, isSuccess]);
+ }, [repositories, isSuccess, repoFromParams, context, navigateTo]);
const selectedRepository = useMemo(() => {
if (repoFromParams) {