Skip to content

Commit

Permalink
fix: use existing user object to check profile visiblity
Browse files Browse the repository at this point in the history
  • Loading branch information
rhodinemma committed Jul 16, 2024
1 parent 44caa0d commit 9eaff6a
Showing 1 changed file with 172 additions and 179 deletions.
351 changes: 172 additions & 179 deletions src/pages/UsersProfile/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,7 @@ const UsersProfile = () => {
const [activeTab, setActiveTab] = useState("Overview");
//users
const [userDetails, setUserDetails] = useState({});
const [isProfilePublic, setIsProfilePublic] = useState(false);
const [showProfileVisibilityModal, setShowProfileVisibilityModal] =
useState(false);
const [, setShowProfileVisibilityModal] = useState(false);
const [loadingUserDetails, setLoadingUserDetails] = useState(false);
const [loadingUserError, setLoadingUserError] = useState(false);
const [userFollowLoading, setUserFollowLoading] = useState(false);
Expand Down Expand Up @@ -62,11 +60,6 @@ const UsersProfile = () => {
setLoadingUserDetails(true);
handleGetRequest(`/users/${userID}`)
.then((response) => {
if (response.data.data.user.is_public) {
setShowProfileVisibilityModal(false);
}

setIsProfilePublic(response.data.data.user.is_public);
setUserDetails(response.data.data.user);
setLoadingUserDetails(false);
})
Expand Down Expand Up @@ -159,64 +152,63 @@ const UsersProfile = () => {
const noRecentActivity =
recentActivities?.length === 0 && recentActivitiesFetched;

const formatData = (data) => {
const activitiesByMonth = {};

data.forEach((item) => {
const date = new Date(item.creation_date);
const monthYear = date.toLocaleString("default", {
month: "long",
year: "numeric",
});

if (!activitiesByMonth[monthYear]) {
activitiesByMonth[monthYear] = [];
}

const activity = {
type: item.operation,
description: item.description,
projects: item?.project
? [
{
id: item.project.id,
name: item.project.name,
apps: item.a_app_id ? 1 : 0,
},
]
: [],
users: item?.a_user
? [
{
id: item.a_user.id,
name: item.a_user.name,
email: item.a_user.email,
},
]
: [],
apps: item?.app
? [
{
id: item.app.id,
name: item.app.name,
url: item.app.url,
},
]
: [],
};

activitiesByMonth[monthYear].push(activity);
const formatData = (data) => {
const activitiesByMonth = {};

data.forEach((item) => {
const date = new Date(item.creation_date);
const monthYear = date.toLocaleString("default", {
month: "long",
year: "numeric",
});

return Object.entries(activitiesByMonth).map(
([month, activities], index) => ({
id: index + 1,
month,
activities,
})
);
};


if (!activitiesByMonth[monthYear]) {
activitiesByMonth[monthYear] = [];
}

const activity = {
type: item.operation,
description: item.description,
projects: item?.project
? [
{
id: item.project.id,
name: item.project.name,
apps: item.a_app_id ? 1 : 0,
},
]
: [],
users: item?.a_user
? [
{
id: item.a_user.id,
name: item.a_user.name,
email: item.a_user.email,
},
]
: [],
apps: item?.app
? [
{
id: item.app.id,
name: item.app.name,
url: item.app.url,
},
]
: [],
};

activitiesByMonth[monthYear].push(activity);
});

return Object.entries(activitiesByMonth).map(
([month, activities], index) => ({
id: index + 1,
month,
activities,
})
);
};

useEffect(() => {
setUserActivities(formatData(recentActivities));
Expand All @@ -227,8 +219,7 @@ const UsersProfile = () => {
userRecentActivities(nextPerPage);
};


// const yearOptions = getYearOptions();
// const yearOptions = getYearOptions();

const handleCloseModal = () => {
setShowProfileVisibilityModal(false);
Expand All @@ -238,7 +229,6 @@ const UsersProfile = () => {

return (
<div className="MainPage">

<div className="TopBarSection">
<Header />
</div>
Expand All @@ -261,123 +251,126 @@ const UsersProfile = () => {
) : (
<>
<div className="SmallContainer">
{!isProfilePublic && !showProfileVisibilityModal && (
<ProfileVisibilityModal onClose={handleCloseModal} />
)}

{userDetails?.is_public !== null &&
userDetails?.is_public === false && (
<ProfileVisibilityModal onClose={handleCloseModal} />
)}

<section className={styles.TabOptionLayout}>
<div className={styles.TopProfileCardContainer}>
<ProfileCardSmall
user={userDetails}
loading={loadingUserDetails}
error={loadingUserError}
onFollowClick={onFollowClick}
userFollowLoading={userFollowLoading}
/>
</div>
<div className={styles.OverviewContainer}>
<div className={styles.tabsContainer}>
{tabNames.map((tabName) => (
<TabItem
key={tabName}
tabName={tabName}
activeTab={activeTab}
setActiveTab={setActiveTab}
/>
))}
</div>

{activeTab === "Overview" && (
<>
<section className="">
<div className="SectionTitle">Analytics</div>
{loadingUserDetails ? (
<div className={styles.NoResourcesMessage}>
<Spinner />
</div>
) : userDetails && (
<ProfileAnalytics user={userDetails} />
)}
{loadingUserError &&
<div className={styles.NoResourcesMessage}>
Failed to fetch user data
</div>
}
</section>
<UserFeedProjects
projects={userProjects}
loading={loadingUserProjects}
error={loadingUserProjectsError}
onProjectFollowClick={onProjectFollowClick}
projectFollowLoading={projectFollowLoading}
<div className={styles.TopProfileCardContainer}>
<ProfileCardSmall
user={userDetails}
loading={loadingUserDetails}
error={loadingUserError}
onFollowClick={onFollowClick}
userFollowLoading={userFollowLoading}
/>
<>
<div className={styles.TopProjectsContainer}>
{isFetchingRecentActivities ? (
<div className={styles.NoResourcesMessage}>
<Spinner />
</div>
<div className={styles.OverviewContainer}>
<div className={styles.tabsContainer}>
{tabNames.map((tabName) => (
<TabItem
key={tabName}
tabName={tabName}
activeTab={activeTab}
setActiveTab={setActiveTab}
/>
))}
</div>

{activeTab === "Overview" && (
<>
<section className="">
<div className="SectionTitle">Analytics</div>
{loadingUserDetails ? (
<div className={styles.NoResourcesMessage}>
<Spinner />
</div>
) : (
userDetails && (
<ProfileAnalytics user={userDetails} />
)
)}
{loadingUserError && (
<div className={styles.NoResourcesMessage}>
Failed to fetch user data
</div>
)}
</section>
<UserFeedProjects
projects={userProjects}
loading={loadingUserProjects}
error={loadingUserProjectsError}
onProjectFollowClick={onProjectFollowClick}
projectFollowLoading={projectFollowLoading}
/>
<>
<div className={styles.TopProjectsContainer}>
{isFetchingRecentActivities ? (
<div className={styles.NoResourcesMessage}>
<Spinner />
</div>
) : (
userActivities.length > 0 && (
<UserFeedActivities
activities={userActivities}
// yearOptions={yearOptions}
// selectedYear={(selectedOption) => selectedOption}
expanded={expanded}
toggleExpand={toggleExpand}
pagination={pagination}
fetchMoreActivities={fetchMoreActivities}
/>
)
)}
{noRecentActivity && (
<div>No recent activities for this user</div>
)}
</div>
) : userActivities.length > 0 && (
<UserFeedActivities
activities={userActivities}
// yearOptions={yearOptions}
// selectedYear={(selectedOption) => selectedOption}
expanded={expanded}
toggleExpand={toggleExpand}
pagination={pagination}
fetchMoreActivities={fetchMoreActivities}
</>
</>
)}
{activeTab === "Projects" && (
<>
<div className={styles.TopProjectsContainer}>
<UserFeedProjects
projects={userProjects}
loading={loadingUserProjects}
error={loadingUserProjectsError}
onProjectFollowClick={onProjectFollowClick}
projectFollowLoading={projectFollowLoading}
/>
)}
{noRecentActivity && (
<div >
No recent activities for this user
</div>
)}
</div>
</>
</>
)}
{activeTab === "Projects" && (
<>
<div className={styles.TopProjectsContainer}>
<UserFeedProjects
projects={userProjects}
loading={loadingUserProjects}
error={loadingUserProjectsError}
onProjectFollowClick={onProjectFollowClick}
projectFollowLoading={projectFollowLoading}
/>
</div>
</>
)}
{activeTab === "Activities" && (
<>
<div className={styles.TopProjectsContainer}>
{isFetchingRecentActivities ? (
<div className={styles.NoResourcesMessage}>
<Spinner />
</div>
) : userActivities.length > 0 && (
<UserFeedActivities
activities={userActivities}
// yearOptions={yearOptions}
// selectedYear={(selectedOption) => selectedOption}
expanded={expanded}
pagination={pagination}
fetchMoreActivities={fetchMoreActivities}
toggleExpand={toggleExpand}
/>
)}
{noRecentActivity && (
<div >
No recent activities for this user
</>
)}
{activeTab === "Activities" && (
<>
<div className={styles.TopProjectsContainer}>
{isFetchingRecentActivities ? (
<div className={styles.NoResourcesMessage}>
<Spinner />
</div>
) : (
userActivities.length > 0 && (
<UserFeedActivities
activities={userActivities}
// yearOptions={yearOptions}
// selectedYear={(selectedOption) => selectedOption}
expanded={expanded}
pagination={pagination}
fetchMoreActivities={fetchMoreActivities}
toggleExpand={toggleExpand}
/>
)
)}
{noRecentActivity && (
<div>No recent activities for this user</div>
)}
</div>
)}
</div>
</>
)}
</div>
</section>
</>
)}
</div>
</section>
</div>
</>
)}
Expand Down

0 comments on commit 9eaff6a

Please sign in to comment.