chore: analytics permission validation added

This commit is contained in:
Anmol Singh Bhatia 2023-12-13 20:15:50 +05:30
parent 936452758a
commit 0f892d4670
4 changed files with 57 additions and 41 deletions

View File

@ -192,20 +192,23 @@ export const CycleIssuesHeader: React.FC = observer(() => {
handleDisplayPropertiesUpdate={handleDisplayProperties} handleDisplayPropertiesUpdate={handleDisplayProperties}
/> />
</FiltersDropdown> </FiltersDropdown>
<Button onClick={() => setAnalyticsModal(true)} variant="neutral-primary" size="sm">
Analytics
</Button>
{canUserCreateIssue && ( {canUserCreateIssue && (
<Button <>
onClick={() => { <Button onClick={() => setAnalyticsModal(true)} variant="neutral-primary" size="sm">
setTrackElement("CYCLE_PAGE_HEADER"); Analytics
commandPaletteStore.toggleCreateIssueModal(true, EProjectStore.CYCLE); </Button>
}} <Button
size="sm" onClick={() => {
prependIcon={<Plus />} setTrackElement("CYCLE_PAGE_HEADER");
> commandPaletteStore.toggleCreateIssueModal(true, EProjectStore.CYCLE);
Add Issue }}
</Button> size="sm"
prependIcon={<Plus />}
>
Add Issue
</Button>
</>
)} )}
<button <button
type="button" type="button"

View File

@ -193,20 +193,23 @@ export const ModuleIssuesHeader: React.FC = observer(() => {
handleDisplayPropertiesUpdate={handleDisplayProperties} handleDisplayPropertiesUpdate={handleDisplayProperties}
/> />
</FiltersDropdown> </FiltersDropdown>
<Button onClick={() => setAnalyticsModal(true)} variant="neutral-primary" size="sm">
Analytics
</Button>
{canUserCreateIssue && ( {canUserCreateIssue && (
<Button <>
onClick={() => { <Button onClick={() => setAnalyticsModal(true)} variant="neutral-primary" size="sm">
setTrackElement("MODULE_PAGE_HEADER"); Analytics
commandPaletteStore.toggleCreateIssueModal(true, EProjectStore.MODULE); </Button>
}} <Button
size="sm" onClick={() => {
prependIcon={<Plus />} setTrackElement("MODULE_PAGE_HEADER");
> commandPaletteStore.toggleCreateIssueModal(true, EProjectStore.MODULE);
Add Issue }}
</Button> size="sm"
prependIcon={<Plus />}
>
Add Issue
</Button>
</>
)} )}
<button <button
type="button" type="button"

View File

@ -202,20 +202,23 @@ export const ProjectIssuesHeader: React.FC = observer(() => {
</span> </span>
</Link> </Link>
)} )}
<Button onClick={() => setAnalyticsModal(true)} variant="neutral-primary" size="sm">
Analytics
</Button>
{canUserCreateIssue && ( {canUserCreateIssue && (
<Button <>
onClick={() => { <Button onClick={() => setAnalyticsModal(true)} variant="neutral-primary" size="sm">
setTrackElement("PROJECT_PAGE_HEADER"); Analytics
commandPaletteStore.toggleCreateIssueModal(true, EProjectStore.PROJECT); </Button>
}} <Button
size="sm" onClick={() => {
prependIcon={<Plus />} setTrackElement("PROJECT_PAGE_HEADER");
> commandPaletteStore.toggleCreateIssueModal(true, EProjectStore.PROJECT);
Add Issue }}
</Button> size="sm"
prependIcon={<Plus />}
>
Add Issue
</Button>
</>
)} )}
</div> </div>
</div> </div>

View File

@ -9,6 +9,8 @@ import { BarChart2, Briefcase, CheckCircle, LayoutGrid } from "lucide-react";
// mobx store // mobx store
import { useMobxStore } from "lib/mobx/store-provider"; import { useMobxStore } from "lib/mobx/store-provider";
import { observer } from "mobx-react-lite"; import { observer } from "mobx-react-lite";
// constants
import { EUserWorkspaceRoles } from "constants/workspace";
const workspaceLinks = (workspaceSlug: string) => [ const workspaceLinks = (workspaceSlug: string) => [
{ {
@ -34,16 +36,21 @@ const workspaceLinks = (workspaceSlug: string) => [
]; ];
export const WorkspaceSidebarMenu = observer(() => { export const WorkspaceSidebarMenu = observer(() => {
const { theme: themeStore } = useMobxStore(); const {
theme: themeStore,
user: { currentWorkspaceRole },
} = useMobxStore();
// router // router
const router = useRouter(); const router = useRouter();
const { workspaceSlug } = router.query; const { workspaceSlug } = router.query;
const isAuthorizedUser = !!currentWorkspaceRole && currentWorkspaceRole >= EUserWorkspaceRoles.MEMBER;
return ( return (
<div className="w-full cursor-pointer space-y-1 p-4"> <div className="w-full cursor-pointer space-y-1 p-4">
{workspaceLinks(workspaceSlug as string).map((link, index) => { {workspaceLinks(workspaceSlug as string).map((link, index) => {
const isActive = link.name === "Settings" ? router.asPath.includes(link.href) : router.asPath === link.href; const isActive = link.name === "Settings" ? router.asPath.includes(link.href) : router.asPath === link.href;
if (!isAuthorizedUser && link.name === "Analytics") return;
return ( return (
<Link key={index} href={link.href}> <Link key={index} href={link.href}>
<span className="block w-full"> <span className="block w-full">