feat: add Calendar Settings section to Settings/Accounts/Calendars page (#4104)
* feat: add Calendar Settings section to Settings/Accounts/Calendars page Closes #4060 * refactor: rename components
This commit is contained in:
@ -6,7 +6,7 @@ export enum CoreObjectNameSingular {
|
|||||||
Blocklist = 'blocklist',
|
Blocklist = 'blocklist',
|
||||||
Comment = 'comment',
|
Comment = 'comment',
|
||||||
Company = 'company',
|
Company = 'company',
|
||||||
ConenctedAccount = 'conenctedAccount',
|
ConnectedAccount = 'connectedAccount',
|
||||||
Favorite = 'favorite',
|
Favorite = 'favorite',
|
||||||
Message = 'message',
|
Message = 'message',
|
||||||
MessageChannel = 'messageChannel',
|
MessageChannel = 'messageChannel',
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { ConnectedAccount } from '@/accounts/types/ConnectedAccount';
|
||||||
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
|
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||||
|
import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard';
|
||||||
|
import { SettingsAccountsListSkeletonCard } from '@/settings/accounts/components/SettingsAccountsListSkeletonCard';
|
||||||
|
import { H2Title } from '@/ui/display/typography/components/H2Title';
|
||||||
|
import { Section } from '@/ui/layout/section/components/Section';
|
||||||
|
|
||||||
|
export const SettingsAccountsCalendarSettingsSection = () => {
|
||||||
|
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||||
|
|
||||||
|
const { records: accounts, loading } = useFindManyRecords<ConnectedAccount>({
|
||||||
|
objectNameSingular: CoreObjectNameSingular.ConnectedAccount,
|
||||||
|
filter: {
|
||||||
|
accountOwnerId: {
|
||||||
|
eq: currentWorkspaceMember?.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Section>
|
||||||
|
<H2Title
|
||||||
|
title="Calendar settings"
|
||||||
|
description="Sync your calendars and set your preferences"
|
||||||
|
/>
|
||||||
|
|
||||||
|
{loading ? (
|
||||||
|
<SettingsAccountsListSkeletonCard />
|
||||||
|
) : !accounts.length ? (
|
||||||
|
<SettingsAccountsListEmptyStateCard />
|
||||||
|
) : null}
|
||||||
|
</Section>
|
||||||
|
);
|
||||||
|
};
|
||||||
@ -4,7 +4,7 @@ import { H2Title } from '@/ui/display/typography/components/H2Title';
|
|||||||
import { Section } from '@/ui/layout/section/components/Section';
|
import { Section } from '@/ui/layout/section/components/Section';
|
||||||
|
|
||||||
import { SettingsAccountsCard } from './SettingsAccountsCard';
|
import { SettingsAccountsCard } from './SettingsAccountsCard';
|
||||||
import { SettingsAccountsEmptyStateCard } from './SettingsAccountsEmptyStateCard';
|
import { SettingsAccountsListEmptyStateCard } from './SettingsAccountsListEmptyStateCard';
|
||||||
|
|
||||||
export const SettingsAccountsConnectedAccountsSection = ({
|
export const SettingsAccountsConnectedAccountsSection = ({
|
||||||
accounts,
|
accounts,
|
||||||
@ -30,7 +30,7 @@ export const SettingsAccountsConnectedAccountsSection = ({
|
|||||||
onAccountRemove={handleAccountRemove}
|
onAccountRemove={handleAccountRemove}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<SettingsAccountsEmptyStateCard />
|
<SettingsAccountsListEmptyStateCard />
|
||||||
)}
|
)}
|
||||||
</Section>
|
</Section>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -3,20 +3,20 @@ import { useRecoilValue } from 'recoil';
|
|||||||
import { ConnectedAccount } from '@/accounts/types/ConnectedAccount';
|
import { ConnectedAccount } from '@/accounts/types/ConnectedAccount';
|
||||||
import { MessageChannel } from '@/accounts/types/MessageChannel';
|
import { MessageChannel } from '@/accounts/types/MessageChannel';
|
||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||||
import { SettingsAccountEmailsSkeletonCard } from '@/settings/accounts/components/SettingsAccountEmailsSkeletonCard';
|
import { SettingsAccountsEmailsCard } from '@/settings/accounts/components/SettingsAccountsEmailsCard';
|
||||||
|
import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard';
|
||||||
|
import { SettingsAccountsListSkeletonCard } from '@/settings/accounts/components/SettingsAccountsListSkeletonCard';
|
||||||
import { H2Title } from '@/ui/display/typography/components/H2Title';
|
import { H2Title } from '@/ui/display/typography/components/H2Title';
|
||||||
import { Section } from '@/ui/layout/section/components/Section';
|
import { Section } from '@/ui/layout/section/components/Section';
|
||||||
|
|
||||||
import { SettingsAccountsEmailsCard } from './SettingsAccountsEmailsCard';
|
|
||||||
import { SettingsAccountsEmptyStateCard } from './SettingsAccountsEmptyStateCard';
|
|
||||||
|
|
||||||
export const SettingsAccountsEmailsSyncSection = () => {
|
export const SettingsAccountsEmailsSyncSection = () => {
|
||||||
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||||
|
|
||||||
const { records: accounts, loading: accountsLoading } =
|
const { records: accounts, loading: accountsLoading } =
|
||||||
useFindManyRecords<ConnectedAccount>({
|
useFindManyRecords<ConnectedAccount>({
|
||||||
objectNameSingular: 'connectedAccount',
|
objectNameSingular: CoreObjectNameSingular.ConnectedAccount,
|
||||||
filter: {
|
filter: {
|
||||||
accountOwnerId: {
|
accountOwnerId: {
|
||||||
eq: currentWorkspaceMember?.id,
|
eq: currentWorkspaceMember?.id,
|
||||||
@ -51,13 +51,13 @@ export const SettingsAccountsEmailsSyncSection = () => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{loading ? (
|
{loading ? (
|
||||||
<SettingsAccountEmailsSkeletonCard />
|
<SettingsAccountsListSkeletonCard />
|
||||||
) : accounts.length ? (
|
) : accounts.length ? (
|
||||||
<SettingsAccountsEmailsCard
|
<SettingsAccountsEmailsCard
|
||||||
messageChannels={messageChannelsWithSyncedEmails}
|
messageChannels={messageChannelsWithSyncedEmails}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<SettingsAccountsEmptyStateCard />
|
<SettingsAccountsListEmptyStateCard />
|
||||||
)}
|
)}
|
||||||
</Section>
|
</Section>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -20,13 +20,13 @@ const StyledBody = styled(CardContent)`
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
type SettingsAccountsEmptyStateCardProps = {
|
type SettingsAccountsListEmptyStateCardProps = {
|
||||||
label?: string;
|
label?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SettingsAccountsEmptyStateCard = ({
|
export const SettingsAccountsListEmptyStateCard = ({
|
||||||
label,
|
label,
|
||||||
}: SettingsAccountsEmptyStateCardProps) => {
|
}: SettingsAccountsListEmptyStateCardProps) => {
|
||||||
const [generateTransientToken] = useGenerateTransientTokenMutation();
|
const [generateTransientToken] = useGenerateTransientTokenMutation();
|
||||||
|
|
||||||
const handleGmailLogin = useCallback(async () => {
|
const handleGmailLogin = useCallback(async () => {
|
||||||
@ -7,4 +7,4 @@ const StyledCard = styled(Card)`
|
|||||||
height: 40px;
|
height: 40px;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export const SettingsAccountEmailsSkeletonCard = () => <StyledCard />;
|
export { StyledCard as SettingsAccountsListSkeletonCard };
|
||||||
@ -1,8 +1,7 @@
|
|||||||
|
import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard';
|
||||||
import { H2Title } from '@/ui/display/typography/components/H2Title';
|
import { H2Title } from '@/ui/display/typography/components/H2Title';
|
||||||
import { Section } from '@/ui/layout/section/components/Section';
|
import { Section } from '@/ui/layout/section/components/Section';
|
||||||
|
|
||||||
import { SettingsAccountsEmptyStateCard } from './SettingsAccountsEmptyStateCard';
|
|
||||||
|
|
||||||
export const SettingsNewAccountSection = () => {
|
export const SettingsNewAccountSection = () => {
|
||||||
return (
|
return (
|
||||||
<Section>
|
<Section>
|
||||||
@ -10,7 +9,7 @@ export const SettingsNewAccountSection = () => {
|
|||||||
title="New account"
|
title="New account"
|
||||||
description="Connect a new account to your workspace"
|
description="Connect a new account to your workspace"
|
||||||
/>
|
/>
|
||||||
<SettingsAccountsEmptyStateCard label="Connect a Google account" />
|
<SettingsAccountsListEmptyStateCard label="Connect a Google account" />
|
||||||
</Section>
|
</Section>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import { SettingsAccountsCalendarSettingsSection } from '@/settings/accounts/components/SettingsAccountsCalendarSettingsSection';
|
||||||
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
|
import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer';
|
||||||
import { getSettingsPagePath } from '@/settings/utils/getSettingsPagePath';
|
import { getSettingsPagePath } from '@/settings/utils/getSettingsPagePath';
|
||||||
import { SettingsPath } from '@/types/SettingsPath';
|
import { SettingsPath } from '@/types/SettingsPath';
|
||||||
@ -17,6 +18,7 @@ export const SettingsAccountsCalendars = () => (
|
|||||||
{ children: 'Calendars' },
|
{ children: 'Calendars' },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
<SettingsAccountsCalendarSettingsSection />
|
||||||
</SettingsPageContainer>
|
</SettingsPageContainer>
|
||||||
</SubMenuTopBarContainer>
|
</SubMenuTopBarContainer>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user