3233 connect connected accounts settings to backend (#3235)
* connect SettingsAccountsConnectedAccountsSection to backend * get current user
This commit is contained in:
@ -1,8 +1,8 @@
|
|||||||
import { InboxSettingsVisibilityValue } from '@/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection';
|
import { InboxSettingsVisibilityValue } from '@/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection';
|
||||||
|
|
||||||
export type Account = {
|
export type Account = {
|
||||||
email: string;
|
id: string;
|
||||||
|
handle: string;
|
||||||
isSynced?: boolean;
|
isSynced?: boolean;
|
||||||
uuid: string;
|
|
||||||
visibility: InboxSettingsVisibilityValue;
|
visibility: InboxSettingsVisibilityValue;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -46,7 +46,7 @@ export const SettingsAccountsCard = ({
|
|||||||
<Card>
|
<Card>
|
||||||
{accounts.map((account, index) => (
|
{accounts.map((account, index) => (
|
||||||
<SettingsAccountRow
|
<SettingsAccountRow
|
||||||
key={account.uuid}
|
key={account.id}
|
||||||
LeftIcon={IconGoogle}
|
LeftIcon={IconGoogle}
|
||||||
account={account}
|
account={account}
|
||||||
rightComponent={
|
rightComponent={
|
||||||
|
|||||||
@ -1,19 +1,33 @@
|
|||||||
import { useState } from 'react';
|
import { useRecoilValue } from 'recoil';
|
||||||
|
|
||||||
|
import { Account } from '@/accounts/types/Account';
|
||||||
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord';
|
||||||
|
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||||
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 { mockedAccounts } from '~/testing/mock-data/accounts';
|
|
||||||
|
|
||||||
import { SettingsAccountsCard } from './SettingsAccountsCard';
|
import { SettingsAccountsCard } from './SettingsAccountsCard';
|
||||||
import { SettingsAccountsEmptyStateCard } from './SettingsAccountsEmptyStateCard';
|
import { SettingsAccountsEmptyStateCard } from './SettingsAccountsEmptyStateCard';
|
||||||
|
|
||||||
export const SettingsAccountsConnectedAccountsSection = () => {
|
export const SettingsAccountsConnectedAccountsSection = () => {
|
||||||
const [accounts, setAccounts] = useState(mockedAccounts);
|
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||||
|
|
||||||
const handleAccountRemove = (uuid: string) =>
|
const accounts = useFindManyRecords<Account>({
|
||||||
setAccounts((previousAccounts) =>
|
objectNameSingular: 'connectedAccount',
|
||||||
previousAccounts.filter((account) => account.uuid !== uuid),
|
filter: {
|
||||||
);
|
accountOwnerId: {
|
||||||
|
eq: currentWorkspaceMember?.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}).records;
|
||||||
|
|
||||||
|
const { deleteOneRecord } = useDeleteOneRecord({
|
||||||
|
objectNameSingular: 'connectedAccount',
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleAccountRemove = (idToRemove: string) =>
|
||||||
|
deleteOneRecord(idToRemove);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Section>
|
<Section>
|
||||||
@ -21,7 +35,7 @@ export const SettingsAccountsConnectedAccountsSection = () => {
|
|||||||
title="Connected accounts"
|
title="Connected accounts"
|
||||||
description="Manage your internet accounts."
|
description="Manage your internet accounts."
|
||||||
/>
|
/>
|
||||||
{accounts.length ? (
|
{accounts?.length ? (
|
||||||
<SettingsAccountsCard
|
<SettingsAccountsCard
|
||||||
accounts={accounts}
|
accounts={accounts}
|
||||||
onAccountRemove={handleAccountRemove}
|
onAccountRemove={handleAccountRemove}
|
||||||
|
|||||||
@ -37,7 +37,7 @@ export const SettingsAccountRow = ({
|
|||||||
return (
|
return (
|
||||||
<StyledRow onClick={onClick} divider={divider}>
|
<StyledRow onClick={onClick} divider={divider}>
|
||||||
<LeftIcon size={theme.icon.size.sm} />
|
<LeftIcon size={theme.icon.size.sm} />
|
||||||
{account.email}
|
{account.handle}
|
||||||
{rightComponent}
|
{rightComponent}
|
||||||
</StyledRow>
|
</StyledRow>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -21,7 +21,7 @@ export const SettingsAccountsRowDropdownMenu = ({
|
|||||||
className,
|
className,
|
||||||
onRemove,
|
onRemove,
|
||||||
}: SettingsAccountsRowDropdownMenuProps) => {
|
}: SettingsAccountsRowDropdownMenuProps) => {
|
||||||
const dropdownScopeId = `settings-account-row-${account.uuid}`;
|
const dropdownScopeId = `settings-account-row-${account.id}`;
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { closeDropdown } = useDropdown(dropdownScopeId);
|
const { closeDropdown } = useDropdown(dropdownScopeId);
|
||||||
@ -42,7 +42,7 @@ export const SettingsAccountsRowDropdownMenu = ({
|
|||||||
LeftIcon={IconMail}
|
LeftIcon={IconMail}
|
||||||
text="Emails settings"
|
text="Emails settings"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
navigate(`/settings/accounts/emails/${account.uuid}`);
|
navigate(`/settings/accounts/emails/${account.id}`);
|
||||||
closeDropdown();
|
closeDropdown();
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
@ -52,7 +52,7 @@ export const SettingsAccountsRowDropdownMenu = ({
|
|||||||
LeftIcon={IconTrash}
|
LeftIcon={IconTrash}
|
||||||
text="Remove account"
|
text="Remove account"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
onRemove(account.uuid);
|
onRemove(account.id);
|
||||||
closeDropdown();
|
closeDropdown();
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user