Enhance dashboard components with user collaboration features and project management improvements

This commit is contained in:
2025-06-26 09:25:02 +05:30
parent 62e315e3d9
commit b3b0831a7f
10 changed files with 380 additions and 114 deletions

View File

@@ -8,18 +8,15 @@ interface UserData {
_id: string;
Email: string;
userName: string;
}
interface MultiEmailProps {
searchedEmail: UserData[];
setSearchedEmail: React.Dispatch<React.SetStateAction<UserData[]>>
users: any,
getData: any,
}
const MultiEmailInvite: React.FC<MultiEmailProps> = ({ searchedEmail, setSearchedEmail, users, getData }) => {
console.log('users: ', users);
const MultiEmailInvite: React.FC<MultiEmailProps> = ({ users, getData }) => {
const [emails, setEmails] = useState<any>([]);
const [searchedEmail, setSearchedEmail] = useState<UserData[]>([]);
const [inputFocus, setInputFocus] = useState(false);
const [inputValue, setInputValue] = useState("");
const { projectId } = useParams();
@@ -33,10 +30,6 @@ const MultiEmailInvite: React.FC<MultiEmailProps> = ({ searchedEmail, setSearche
const isNotCurrentUser = selectedUser._id !== userId;
const alreadyExistsInEmails = prev.some(email => email._id === selectedUser._id);
const alreadyExistsInUsers = users.some((val: any) => val.userId === selectedUser._id);
console.log('alreadyExistsInEmails: ', alreadyExistsInEmails);
console.log('alreadyExistsInUsers:', alreadyExistsInUsers);
if (isNotCurrentUser && !alreadyExistsInEmails && !alreadyExistsInUsers) {
return [...prev, selectedUser];
}
@@ -52,9 +45,7 @@ const MultiEmailInvite: React.FC<MultiEmailProps> = ({ searchedEmail, setSearche
if (trimmedEmail.length < 3) return;
try {
const searchedMail = await getSearchUsers(trimmedEmail);
console.log('searchedMail: ', searchedMail);
const filteredEmail = searchedMail.sharchMail?.filtered;
console.log('filteredEmail: ', filteredEmail);
if (filteredEmail) {
setSearchedEmail(filteredEmail)
}
@@ -94,6 +85,7 @@ const MultiEmailInvite: React.FC<MultiEmailProps> = ({ searchedEmail, setSearche
console.error("Error sharing project:", err);
});
setEmails([])
setInputValue("")
});
setTimeout(() => {
getData()
@@ -123,9 +115,9 @@ const MultiEmailInvite: React.FC<MultiEmailProps> = ({ searchedEmail, setSearche
/>
</div>
<div onClick={handleInvite} className="invite-button">
Invite
Add
</div>
{inputFocus && inputValue.length > 0 && searchedEmail && searchedEmail.length > 0 && (
{inputFocus && inputValue.length > 2 && searchedEmail && searchedEmail.length > 0 && (
<div className="users-list-container">
{/* list available users here */}
{searchedEmail.map((val: any, i: any) => (