Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Mike Cao 2024-02-23 20:41:36 -08:00
commit 0c910f2abd
12 changed files with 46 additions and 29 deletions

View file

@ -1,20 +1,25 @@
import PageHeader from 'components/layout/PageHeader';
import { Icon, Icons, Text } from 'react-basics';
import { useMessages, useTeamUrl } from 'components/hooks';
import { useLogin, useMessages, useTeamUrl } from 'components/hooks';
import LinkButton from 'components/common/LinkButton';
import { ROLES } from 'lib/constants';
export function ReportsHeader() {
const { formatMessage, labels } = useMessages();
const { renderTeamUrl } = useTeamUrl();
const { user } = useLogin();
const canEdit = user.role !== ROLES.viewOnly;
return (
<PageHeader title={formatMessage(labels.reports)}>
<LinkButton href={renderTeamUrl('/reports/create')} variant="primary">
<Icon>
<Icons.Plus />
</Icon>
<Text>{formatMessage(labels.createReport)}</Text>
</LinkButton>
{canEdit && (
<LinkButton href={renderTeamUrl('/reports/create')} variant="primary">
<Icon>
<Icons.Plus />
</Icon>
<Text>{formatMessage(labels.createReport)}</Text>
</LinkButton>
)}
</PageHeader>
);
}

View file

@ -11,9 +11,9 @@ export function TeamMembersPage({ teamId }: { teamId: string }) {
const { user } = useLogin();
const { formatMessage, labels } = useMessages();
const canEdit = team?.teamUser?.find(
({ userId, role }) => role === ROLES.teamOwner && userId === user.id,
);
const canEdit =
team?.teamUser?.find(({ userId, role }) => role === ROLES.teamOwner && userId === user.id) &&
user.role !== ROLES.viewOnly;
return (
<>

View file

@ -15,9 +15,9 @@ export function TeamDetails({ teamId }: { teamId: string }) {
const { user } = useLogin();
const [tab, setTab] = useState('details');
const canEdit = !!team?.teamUser?.find(
({ userId, role }) => role === ROLES.teamOwner && userId === user.id,
);
const canEdit =
!!team?.teamUser?.find(({ userId, role }) => role === ROLES.teamOwner && userId === user.id) &&
user.role !== ROLES.viewOnly;
return (
<Flexbox direction="column">

View file

@ -12,16 +12,17 @@ export function TeamWebsitesPage({ teamId }: { teamId: string }) {
const { formatMessage, labels } = useMessages();
const { user } = useLogin();
const allowEdit = !!team?.teamUser?.find(
({ userId, role }) => userId === user.id && role !== ROLES.teamViewOnly,
);
const canEdit =
!!team?.teamUser?.find(
({ userId, role }) => userId === user.id && role !== ROLES.teamViewOnly,
) && user.role !== ROLES.viewOnly;
return (
<>
<PageHeader title={formatMessage(labels.websites)}>
{allowEdit && <WebsiteAddButton teamId={teamId} />}
{canEdit && <WebsiteAddButton teamId={teamId} />}
</PageHeader>
<TeamWebsitesDataTable teamId={teamId} allowEdit={allowEdit} />
<TeamWebsitesDataTable teamId={teamId} allowEdit={canEdit} />
</>
);
}

View file

@ -13,12 +13,15 @@ export function TeamWebsitesTable({
allowEdit?: boolean;
}) {
const { user } = useLogin();
const { formatMessage, labels } = useMessages();
return (
<GridTable data={data}>
<GridColumn name="name" label={formatMessage(labels.name)} />
<GridColumn name="domain" label={formatMessage(labels.domain)} />
<GridColumn name="createdBy" label={formatMessage(labels.createdBy)}>
{row => row?.createUser?.username}
</GridColumn>
<GridColumn name="action" label=" " alignment="end">
{row => {
const { id: websiteId } = row;

View file

@ -1,11 +1,16 @@
'use client';
import { useLogin } from 'components/hooks';
import WebsitesDataTable from './WebsitesDataTable';
import WebsitesHeader from './WebsitesHeader';
import { ROLES } from 'lib/constants';
export default function WebsitesSettingsPage({ teamId }: { teamId: string }) {
const { user } = useLogin();
const canCreate = user.role !== ROLES.viewOnly;
return (
<>
<WebsitesHeader teamId={teamId} />
<WebsitesHeader teamId={teamId} allowCreate={canCreate} />
<WebsitesDataTable teamId={teamId} />
</>
);

View file

@ -1,14 +1,11 @@
'use client';
import WebsitesHeader from 'app/(main)/settings/websites/WebsitesHeader';
import WebsitesDataTable from 'app/(main)/settings/websites/WebsitesDataTable';
import { useLogin } from 'components/hooks';
export default function WebsitesPage({ teamId }: { teamId: string; userId: string }) {
const { user } = useLogin();
export default function WebsitesPage({ teamId }: { teamId: string }) {
return (
<>
<WebsitesHeader teamId={teamId} allowCreate={user.role !== 'view-only'} />
<WebsitesHeader teamId={teamId} allowCreate={false} />
<WebsitesDataTable teamId={teamId} allowEdit={false} />
</>
);