misc: implemened more review comments

This commit is contained in:
Sheen Capadngan
2024-07-01 20:10:41 +08:00
parent 7d7612aaf4
commit 1eb9ea9c74
2 changed files with 33 additions and 26 deletions

View File

@@ -74,6 +74,7 @@ import {
useRegisterUserAction, useRegisterUserAction,
useSelectOrganization useSelectOrganization
} from "@app/hooks/api"; } from "@app/hooks/api";
import { Workspace } from "@app/hooks/api/types";
import { useUpdateUserProjectFavorites } from "@app/hooks/api/users/mutation"; import { useUpdateUserProjectFavorites } from "@app/hooks/api/users/mutation";
import { useGetUserProjectFavorites } from "@app/hooks/api/users/queries"; import { useGetUserProjectFavorites } from "@app/hooks/api/users/queries";
import { navigateUserToOrg } from "@app/views/Login/Login.utils"; import { navigateUserToOrg } from "@app/views/Login/Login.utils";
@@ -129,11 +130,14 @@ export const AppLayout = ({ children }: LayoutProps) => {
const { data: projectFavorites } = useGetUserProjectFavorites(currentOrg?.id!); const { data: projectFavorites } = useGetUserProjectFavorites(currentOrg?.id!);
const { mutateAsync: updateUserProjectFavorites } = useUpdateUserProjectFavorites(); const { mutateAsync: updateUserProjectFavorites } = useUpdateUserProjectFavorites();
const workspaceList = useMemo( const workspacesWithFaveProp = useMemo(
() => [ () =>
...workspaces.filter((w) => projectFavorites?.includes(w.id)), workspaces
...workspaces.filter((w) => !projectFavorites?.includes(w.id)) .map((w): Workspace & { isFavorite: boolean } => ({
], ...w,
isFavorite: Boolean(projectFavorites?.includes(w.id))
}))
.sort((a, b) => Number(b.isFavorite) - Number(a.isFavorite)),
[workspaces, projectFavorites] [workspaces, projectFavorites]
); );
@@ -498,9 +502,9 @@ export const AppLayout = ({ children }: LayoutProps) => {
dropdownContainerClassName="text-bunker-200 bg-mineshaft-800 border border-mineshaft-600 z-50 max-h-96 border-gray-700" dropdownContainerClassName="text-bunker-200 bg-mineshaft-800 border border-mineshaft-600 z-50 max-h-96 border-gray-700"
> >
<div className="no-scrollbar::-webkit-scrollbar h-full no-scrollbar"> <div className="no-scrollbar::-webkit-scrollbar h-full no-scrollbar">
{workspaceList {workspacesWithFaveProp
.filter((ws) => ws.orgId === currentOrg?.id) .filter((ws) => ws.orgId === currentOrg?.id)
.map(({ id, name }) => ( .map(({ id, name, isFavorite }) => (
<div <div
className={twMerge( className={twMerge(
"mb-1 grid grid-cols-7 rounded-md hover:bg-mineshaft-500", "mb-1 grid grid-cols-7 rounded-md hover:bg-mineshaft-500",
@@ -518,7 +522,7 @@ export const AppLayout = ({ children }: LayoutProps) => {
</SelectItem> </SelectItem>
</div> </div>
<div className="col-span-1 flex items-center"> <div className="col-span-1 flex items-center">
{projectFavorites?.includes(id) ? ( {isFavorite ? (
<FontAwesomeIcon <FontAwesomeIcon
icon={faSolidStar} icon={faSolidStar}
className="text-sm text-mineshaft-300 hover:text-mineshaft-400" className="text-sm text-mineshaft-300 hover:text-mineshaft-400"

View File

@@ -493,6 +493,7 @@ const OrganizationPage = withPermission(
useGetUserProjectFavorites(currentOrg?.id!); useGetUserProjectFavorites(currentOrg?.id!);
const { mutateAsync: updateUserProjectFavorites } = useUpdateUserProjectFavorites(); const { mutateAsync: updateUserProjectFavorites } = useUpdateUserProjectFavorites();
const isProjectViewLoading = isWorkspaceLoading || isProjectFavoritesLoading;
const addUsersToProject = useAddUserToWsNonE2EE(); const addUsersToProject = useAddUserToWsNonE2EE();
const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([
@@ -577,19 +578,23 @@ const OrganizationPage = withPermission(
ws?.name?.toLowerCase().includes(searchFilter.toLowerCase()) ws?.name?.toLowerCase().includes(searchFilter.toLowerCase())
); );
const workspacesWithFaveProp = useMemo( const { workspacesWithFaveProp, favoriteWorkspaces, nonFavoriteWorkspaces } = useMemo(() => {
() => const workspacesWithFav = filteredWorkspaces
filteredWorkspaces .map((w): Workspace & { isFavorite: boolean } => ({
.map((w): Workspace & { isFavorite: boolean } => ({ ...w,
...w, isFavorite: Boolean(projectFavorites?.includes(w.id))
isFavorite: Boolean(projectFavorites?.includes(w.id)) }))
})) .sort((a, b) => Number(b.isFavorite) - Number(a.isFavorite));
.sort((a, b) => Number(b.isFavorite) - Number(a.isFavorite)),
[filteredWorkspaces, projectFavorites]
);
const favoriteWorkspaces = workspacesWithFaveProp.filter((w) => w.isFavorite); const favWorkspaces = workspacesWithFav.filter((w) => w.isFavorite);
const nonFavoriteWorkspaces = workspacesWithFaveProp.filter((w) => !w.isFavorite); const nonFavWorkspaces = workspacesWithFav.filter((w) => !w.isFavorite);
return {
workspacesWithFaveProp: workspacesWithFav,
favoriteWorkspaces: favWorkspaces,
nonFavoriteWorkspaces: nonFavWorkspaces
};
}, [filteredWorkspaces, projectFavorites]);
const addProjectToFavorites = async (projectId: string) => { const addProjectToFavorites = async (projectId: string) => {
try { try {
@@ -728,7 +733,7 @@ const OrganizationPage = withPermission(
</> </>
)} )}
<div className="mt-4 grid w-full grid-cols-1 gap-4 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4"> <div className="mt-4 grid w-full grid-cols-1 gap-4 lg:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4">
{(isWorkspaceLoading || isProjectFavoritesLoading) && {isProjectViewLoading &&
Array.apply(0, Array(3)).map((_x, i) => ( Array.apply(0, Array(3)).map((_x, i) => (
<div <div
key={`workspace-cards-loading-${i + 1}`} key={`workspace-cards-loading-${i + 1}`}
@@ -745,8 +750,7 @@ const OrganizationPage = withPermission(
</div> </div>
</div> </div>
))} ))}
{!isProjectFavoritesLoading && {!isProjectViewLoading &&
!isWorkspaceLoading &&
nonFavoriteWorkspaces.map((workspace) => renderProjectGridItem(workspace, false))} nonFavoriteWorkspaces.map((workspace) => renderProjectGridItem(workspace, false))}
</div> </div>
</> </>
@@ -754,7 +758,7 @@ const OrganizationPage = withPermission(
const projectsListView = ( const projectsListView = (
<div className="mt-4 w-full rounded-md"> <div className="mt-4 w-full rounded-md">
{(isWorkspaceLoading || isProjectFavoritesLoading) && {isProjectViewLoading &&
Array.apply(0, Array(3)).map((_x, i) => ( Array.apply(0, Array(3)).map((_x, i) => (
<div <div
key={`workspace-cards-loading-${i + 1}`} key={`workspace-cards-loading-${i + 1}`}
@@ -765,8 +769,7 @@ const OrganizationPage = withPermission(
<Skeleton className="w-full bg-mineshaft-600" /> <Skeleton className="w-full bg-mineshaft-600" />
</div> </div>
))} ))}
{!isProjectFavoritesLoading && {!isProjectViewLoading &&
!isWorkspaceLoading &&
workspacesWithFaveProp.map((workspace, ind) => workspacesWithFaveProp.map((workspace, ind) =>
renderProjectListItem(workspace, workspace.isFavorite, ind) renderProjectListItem(workspace, workspace.isFavorite, ind)
)} )}