3233 connect connected accounts settings to backend (#3235)

* connect SettingsAccountsConnectedAccountsSection to backend

* get current user
This commit is contained in:
bosiraphael
2024-01-04 15:26:55 +01:00
committed by GitHub
parent 4fddafceed
commit 52d4f8e466
5 changed files with 29 additions and 15 deletions

View File

@ -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;
}; };

View File

@ -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={

View File

@ -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}

View File

@ -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>
); );

View File

@ -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();
}} }}
/> />