- } endContent={}>
+ }>
{context.token && context.token.user ? context.token.user.username : messages.signIn}
diff --git a/frontend/src/app/[locale]/account/authPage.tsx b/frontend/src/app/[locale]/account/authPage.tsx
index 33b41b1..bad45b7 100644
--- a/frontend/src/app/[locale]/account/authPage.tsx
+++ b/frontend/src/app/[locale]/account/authPage.tsx
@@ -6,7 +6,7 @@ import { Link } from '@/src/navigation';
import { ChevronRight, Eye, EyeOff } from 'lucide-react';
import { UserType, AuthMessages } from '@/types/user';
import { roles } from '@/config/selection';
-import { signUp, signIn, getRandomAvatarPath } from './authControl';
+import { signUp, signIn } from './authControl';
import { isValidEmail, isValidPassword } from './validate';
import { TokenContext } from '../TokenProvider';
import { useRouter } from '@/src/navigation';
diff --git a/frontend/src/app/[locale]/projects/NeedSignedInDialog.tsx b/frontend/src/app/[locale]/projects/NeedSignedInDialog.tsx
new file mode 100644
index 0000000..91ebb07
--- /dev/null
+++ b/frontend/src/app/[locale]/projects/NeedSignedInDialog.tsx
@@ -0,0 +1,31 @@
+'use client';
+import { ProjectsMessages } from '@/types/project';
+import { Link } from '@/src/navigation';
+import { Button, Modal, ModalContent, ModalHeader, ModalFooter } from '@nextui-org/react';
+
+type Props = {
+ isOpen: boolean;
+ onCancel: () => void;
+ messages: ProjectsMessages;
+ locale: string;
+};
+
+export default function NeedSignedInDialog({ isOpen, onCancel, messages, locale }: Props) {
+ return (
+ {
+ onCancel();
+ }}
+ >
+
+ {messages.needSignedIn}
+
+
+
+
+
+
+
+ );
+}
diff --git a/frontend/src/app/[locale]/projects/ProjectDialog.tsx b/frontend/src/app/[locale]/projects/ProjectDialog.tsx
index ad9054e..b9e9dc0 100644
--- a/frontend/src/app/[locale]/projects/ProjectDialog.tsx
+++ b/frontend/src/app/[locale]/projects/ProjectDialog.tsx
@@ -1,14 +1,24 @@
'use client';
import React from 'react';
import { useState, useEffect } from 'react';
-import { Button, Input, Textarea, Modal, ModalContent, ModalHeader, ModalBody, ModalFooter } from '@nextui-org/react';
+import {
+ Button,
+ Input,
+ Textarea,
+ Checkbox,
+ Modal,
+ ModalContent,
+ ModalHeader,
+ ModalBody,
+ ModalFooter,
+} from '@nextui-org/react';
import { ProjectType, ProjectsMessages } from '@/types/project';
type Props = {
isOpen: boolean;
editingProject: ProjectType;
onCancel: () => void;
- onSubmit: (name: string, detail: string) => void;
+ onSubmit: (name: string, detail: string, isPublic: boolean) => void;
messages: ProjectsMessages;
};
@@ -25,6 +35,8 @@ export default function ProjectDialog({ isOpen, editingProject, onCancel, onSubm
errorMessage: '',
});
+ const [isProjectPublic, setIsProjectPublic] = useState(editingProject ? editingProject.isPublic : true);
+
useEffect(() => {
if (editingProject) {
setProjectName({
@@ -36,6 +48,8 @@ export default function ProjectDialog({ isOpen, editingProject, onCancel, onSubm
...projectDetail,
text: editingProject.detail ? editingProject.detail : '',
});
+
+ setIsProjectPublic(editingProject.isPublic);
} else {
setProjectName({
...projectName,
@@ -46,6 +60,8 @@ export default function ProjectDialog({ isOpen, editingProject, onCancel, onSubm
...projectDetail,
text: '',
});
+
+ setIsProjectPublic(true);
}
}, [editingProject]);
@@ -73,7 +89,7 @@ export default function ProjectDialog({ isOpen, editingProject, onCancel, onSubm
return;
}
- onSubmit(projectName.text, projectDetail.text);
+ onSubmit(projectName.text, projectDetail.text, isProjectPublic);
clear();
};
@@ -112,6 +128,10 @@ export default function ProjectDialog({ isOpen, editingProject, onCancel, onSubm
});
}}
/>
+
+ {messages.public}
+
+ {messages.ifYouMakePublic}