2025-03-29 13:32:02 +00:00
|
|
|
import React, { useEffect, useState } from "react";
|
2025-03-25 06:17:41 +00:00
|
|
|
import { AppDockIcon } from "../../icons/HeaderIcons";
|
2025-03-28 13:50:52 +00:00
|
|
|
import orgImg from "../../../assets/orgTemp.png";
|
|
|
|
import { useActiveUsers } from "../../../store/store";
|
|
|
|
import { getAvatarColor } from "../../../modules/collaboration/users/functions/getAvatarColor";
|
|
|
|
import { ActiveUser } from "../../../types/users";
|
2025-03-29 11:11:44 +00:00
|
|
|
import CollaborationPopup from "../../templates/CollaborationPopup";
|
2025-03-25 06:17:41 +00:00
|
|
|
|
|
|
|
const Header: React.FC = () => {
|
2025-03-28 13:50:52 +00:00
|
|
|
const { activeUsers } = useActiveUsers();
|
|
|
|
const userName = localStorage.getItem("userName") || "Anonymous";
|
|
|
|
|
|
|
|
const guestUsers: ActiveUser[] = activeUsers.filter(
|
|
|
|
(user: ActiveUser) => user.userName !== userName
|
|
|
|
);
|
2025-03-29 13:32:02 +00:00
|
|
|
|
2025-03-29 11:11:44 +00:00
|
|
|
const [userManagement, setUserManagement] = useState(false);
|
2025-03-25 06:17:41 +00:00
|
|
|
|
|
|
|
return (
|
2025-03-29 11:11:44 +00:00
|
|
|
<>
|
|
|
|
{userManagement && (
|
|
|
|
<CollaborationPopup setUserManagement={setUserManagement} />
|
|
|
|
)}
|
|
|
|
<div className="header-container">
|
|
|
|
<div className="options-container">
|
2025-03-28 13:50:52 +00:00
|
|
|
<div
|
2025-03-29 11:11:44 +00:00
|
|
|
className="share-button"
|
|
|
|
onClick={() => {
|
|
|
|
setUserManagement(true);
|
|
|
|
}}
|
2025-03-28 13:50:52 +00:00
|
|
|
>
|
2025-03-29 11:11:44 +00:00
|
|
|
Share
|
|
|
|
</div>
|
|
|
|
<div className="app-docker-button">
|
|
|
|
<AppDockIcon />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="split"></div>
|
|
|
|
<div className="users-container">
|
|
|
|
<div className="guest-users-container">
|
|
|
|
{guestUsers.length > 3 && (
|
|
|
|
<div className="other-guest">+{guestUsers.length - 3}</div>
|
|
|
|
)}
|
|
|
|
{guestUsers.slice(0, 3).map((user, index) => (
|
2025-03-29 12:46:18 +00:00
|
|
|
<div
|
|
|
|
key={index}
|
|
|
|
className="user-profile"
|
|
|
|
style={{ background: getAvatarColor(index) }}
|
|
|
|
>
|
|
|
|
{user.userName[0]}
|
|
|
|
</div>
|
2025-03-29 11:11:44 +00:00
|
|
|
))}
|
2025-03-25 06:17:41 +00:00
|
|
|
</div>
|
2025-03-29 11:11:44 +00:00
|
|
|
<div className="user-profile-container">
|
|
|
|
<div
|
|
|
|
className="user-profile"
|
|
|
|
style={{ background: "var(--accent-color)" }}
|
|
|
|
>
|
|
|
|
{userName[0]}
|
|
|
|
</div>
|
|
|
|
<div className="user-organization">
|
|
|
|
<img src={orgImg} alt="" />
|
|
|
|
</div>
|
2025-03-25 06:17:41 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2025-03-29 11:11:44 +00:00
|
|
|
</>
|
2025-03-25 06:17:41 +00:00
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default Header;
|