diff --git a/packages/twenty-front/src/modules/accounts/utils/hasMissingDraftEmailScopes.ts b/packages/twenty-front/src/modules/accounts/utils/hasMissingDraftEmailScopes.ts index 03ce55c822..dc9cec40ac 100644 --- a/packages/twenty-front/src/modules/accounts/utils/hasMissingDraftEmailScopes.ts +++ b/packages/twenty-front/src/modules/accounts/utils/hasMissingDraftEmailScopes.ts @@ -25,6 +25,8 @@ export const getMissingDraftEmailScopes = ( return hasScope ? [] : [MICROSOFT_SEND_SCOPE]; } case ConnectedAccountProvider.IMAP_SMTP_CALDAV: + case ConnectedAccountProvider.OIDC: + case ConnectedAccountProvider.SAML: return []; default: assertUnreachable( diff --git a/packages/twenty-front/src/modules/settings/accounts/hooks/useMyConnectedAccounts.ts b/packages/twenty-front/src/modules/settings/accounts/hooks/useMyConnectedAccounts.ts index 481379b51e..1b0f1a9b66 100644 --- a/packages/twenty-front/src/modules/settings/accounts/hooks/useMyConnectedAccounts.ts +++ b/packages/twenty-front/src/modules/settings/accounts/hooks/useMyConnectedAccounts.ts @@ -72,33 +72,39 @@ export const useMyConnectedAccounts = () => { return []; } - return metadataData.myConnectedAccounts.map( - (account: MetadataConnectedAccount) => - ({ - id: account.id, - handle: account.handle, - provider: account.provider, - accessToken: '', - refreshToken: '', - accountOwnerId: account.userWorkspaceId, - lastSyncHistoryId: '', - authFailedAt: account.authFailedAt - ? new Date(account.authFailedAt) - : null, - messageChannels: messageChannels.filter( - (channel) => - (channel as unknown as { connectedAccountId: string }) - .connectedAccountId === account.id, - ), - calendarChannels: calendarChannels.filter( - (channel) => - (channel as unknown as { connectedAccountId: string }) - .connectedAccountId === account.id, - ), - scopes: account.scopes, - __typename: 'ConnectedAccount', - }) as ConnectedAccount, - ); + return metadataData.myConnectedAccounts + .map( + (account: MetadataConnectedAccount) => + ({ + id: account.id, + handle: account.handle, + provider: account.provider, + accessToken: '', + refreshToken: '', + accountOwnerId: account.userWorkspaceId, + lastSyncHistoryId: '', + authFailedAt: account.authFailedAt + ? new Date(account.authFailedAt) + : null, + messageChannels: messageChannels.filter( + (channel) => + 'connectedAccountId' in channel && + channel.connectedAccountId === account.id, + ), + calendarChannels: calendarChannels.filter( + (channel) => + 'connectedAccountId' in channel && + channel.connectedAccountId === account.id, + ), + scopes: account.scopes, + __typename: 'ConnectedAccount', + }) as ConnectedAccount, + ) + .filter( + (account) => + account.messageChannels.length > 0 || + account.calendarChannels.length > 0, + ); }, [ isMigrated, workspaceAccounts, diff --git a/packages/twenty-front/src/modules/side-panel/pages/message-thread/components/SidePanelMessageThreadPage.tsx b/packages/twenty-front/src/modules/side-panel/pages/message-thread/components/SidePanelMessageThreadPage.tsx index b9a8708208..d927115f6e 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/message-thread/components/SidePanelMessageThreadPage.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/message-thread/components/SidePanelMessageThreadPage.tsx @@ -86,8 +86,8 @@ export const SidePanelMessageThreadPage = () => { const canReply = useMemo(() => { return ( - connectedAccountHandle && - connectedAccountProvider && + isDefined(connectedAccountHandle) && + isDefined(connectedAccountProvider) && ALLOWED_REPLY_PROVIDERS.includes(connectedAccountProvider) && (connectedAccountProvider !== ConnectedAccountProvider.IMAP_SMTP_CALDAV || isDefined(connectedAccountConnectionParameters?.SMTP)) && @@ -103,7 +103,7 @@ export const SidePanelMessageThreadPage = () => { ]); const handleReplyClick = () => { - if (!isDefined(canReply)) { + if (!canReply) { return; } @@ -118,9 +118,10 @@ export const SidePanelMessageThreadPage = () => { window.open(url, '_blank'); break; case ConnectedAccountProvider.IMAP_SMTP_CALDAV: - throw new Error('Account provider not supported'); + case ConnectedAccountProvider.OIDC: + case ConnectedAccountProvider.SAML: case null: - throw new Error('Account provider not provided'); + return; default: assertUnreachable(connectedAccountProvider); } @@ -166,14 +167,14 @@ export const SidePanelMessageThreadPage = () => { )} - {isDefined(canReply) && !messageChannelLoading && ( + {!messageChannelLoading && (