- Refactor calendar modules and some messaging modules to better
organize them by business rules and decouple them
- Work toward a common architecture for the different calendar providers
by introducing interfaces for the drivers
- Modify cron job to use the new sync statuses and stages
An error was introduced in the calendar cron job because we tried to
inject the workspace context inside the calendarChannelRepository where
we didn't have access to that context.
Closes#5748
- Create feature flag
- Add scope `https://www.googleapis.com/auth/profile.emails.read` when
connecting an account
- Get email aliases with google people API, store them in
connectedAccount and refresh them before each message-import
- Update the contact creation logic accordingly
- Refactor
---------
Co-authored-by: Charles Bochet <charles@twenty.com>
- Put error handling outside of `refreshAndSaveAccessToken`
- return after failing to refresh access token in
`processMessageBatchImport`
- remove unnecessary token refresh in `processMessageListFetch`
In `messaging-gmail-messages-import.service`, we were refreshing the
access token before each query but we were passing the old access token
to `fetchAllMessages`.
I modified the function to query the updated connectedAccount with the
new access token.
This will solve the 401 errors we were getting in production.
- Rename syncSubStatus to syncStage
- Rename ongoingSyncStartedAt to syncStageStartedAt
- Remove throttlePauseUntil from db and compute it with
syncStageStartedAt and throttleFailureCount
- If sync fails we set authFailedAt
- This information is displayed in the frontend in accounts with a `Sync
Failed` pill
- The user can reconnect his account in the dropdown menu
- A new OAuth flow is triggered
- The account is synced
* fixes
* saving workspaceMemberId and personId when saving attendees
* add typing
* use Map
* improve saveMessageParticipants
* fix role type
* move logic in a service
* create new service
* use new service in calendar-event-attendee.service
* modify service to include more common logic
* add defaumt value to isOrganizer in calendar-event-attendee.object-metadata
* rename folder
* renaming
* update calendarEvent labels and description to match Figma
* modify conferenceUri to conferenceLink with LINK type
* update format-google-calendar-event.util to match new conferenceLink
* update CalendarEventDetails since overriding the fields is no longer needed
* fix mock metadata
* generate new uuid for field conferenceLink
* add lodash differenceWith
* add awaits
* update sync cursor is working
* add logs
* use isSyncEnabled information to enqueue jobs
* add decorator InjectObjectMetadataRepository
* fix gmail-full-sync
* calendar module
* wip
* creating a folder for common files between calendar and messages
* wip
* wip
* wip
* wip
* update calendar search filter
* wip
* working on full sync service
* reorganizing folders
* adding repositories
* fix typo
* working on full-sync service
* Add calendarQueue to MessageQueue enum and update dependencies
* start transaction
* wip
* add save and update functions for event
* wip
* save events
* improving step by step
* add calendar scope
* fix nest modules imports
* renaming
* create calendar channel
* create job for google calendar full-sync
* call GoogleCalendarFullSyncJob after connected account creation
* ask for scope conditionnally
* fixes
* create channels conditionnally
* fix
* fixes
* fix FK bug
* filter out canceled events
* create save and update functions for calendarEventAttendee repository
* saving messageParticipants is working
* save calendarEventAttendees is working
* add calendarEvent cleaner
* calendar event cleaner is working
* working on updating attendees
* wip
* reintroducing google-gmail endpoint to ensure smooth deploy
* modify callbackURL
* modify front url
* changes to be able to merge
* put back feature flag
* fixes after PR comments
* add feature flag check
* remove unused modules
* separate delete connected account associated job data in two jobs
* fix error
* rename calendar_v3 as calendarV3
* Update packages/twenty-server/src/workspace/calendar-and-messaging/utils/valueStringForBatchRawQuery.util.ts
Co-authored-by: Jérémy M <jeremy.magrin@gmail.com>
* improve readability
* renaming to remove plural
* renaming to remove plural
* don't throw if no connected account is found
* use calendar queue
* modify usage of HttpService in fetch-by-batch
* modify valuesStringForBatchRawQuery to improve api and return flattened values
* fix auth module feature flag import
* fix getFlattenedValuesAndValuesStringForBatchRawQuery
---------
Co-authored-by: Jérémy M <jeremy.magrin@gmail.com>
* create blocklist service
* blocklist is working on email import in full sync
* add log
* add blocklist to partial sync
* define rule for blocklist imports
* gmail filter is working
* correct typo
* fix bugs
* getCompanyNameFromDomainName
* renaming
* remove unused service
* add transaction
* Add SettingsAccountsEmailsBlocklistInput story
* Add SettingsAccountsEmailsBlocklistSection story
* Add SettingsAccountsEmailsBlocklistTable story
* Add SettingsAccountsEmailsBlocklistTableRow story
* wip
* add play
* add play
* add delete from blocklist test
* wip
* wip
* done
* improve timeline messaging to allow users to view the threads to which they participated
* working
* improvement
* improvements
* improvements
* fix
* remove unnecessary type
* Add SettingsAccountsEmailsBlocklistInput story
* prevent contact creation from the same company
* add todo
* improvements
* Delete packages/twenty-front/src/modules/settings/accounts/components/__stories__/SettingsAccountsEmailsBlocklistInput.stories.tsx
* refactor
* modify after review
* improve code
* create utils
* fix
* Fix getAllByWorkspaceId to throw NotFoundException when no workspace member found
* fix after merge
* use map
* modify after review
* Add SettingsAccountsEmailsBlocklistInput story
* prevent contact creation from the same company
* add todo
* improvements
* Delete packages/twenty-front/src/modules/settings/accounts/components/__stories__/SettingsAccountsEmailsBlocklistInput.stories.tsx
* refactor
* modify after review
* improve code
* wip
* wip
* move blocklist to connectedAccount
* wip
* format date
* fix styling
* renaming
* fix imports
* fix imports
* Rename BlockListItem.ts to BlocklistItem.ts
* Add IS_BLOCKLIST_ENABLED feature flag and remove IS_MESSAGING_ENABLED gate at model creation
* hide blocklist if feature flag is disabled
* Add CreateContactService to messaging services
* Add logic to create a contact if it doesn't exist
* Add name
* Improvements
* contact creation working
* fix bug
* Add IsPersonEmailService to check if an email is personal or not
* filter is working
* improve filter
* create companies and people
* Refactor createContactFromHandleAndDisplayName to createContactAndCompanyFromHandleAndDisplayName
* improve regex
* reorganizing services
* updates
* reorganize folders
* wip
* use transaction
* wip
* wip
* wip
* batch queries
* almost working
* working
* create service
* wip
* use raw queries
* creating companies is working
* Fix participant handle domain name extraction
* Add HTTP service to fetch company info from domain name
* Handle 404
* Fix missing parameter in INSERT query
* wip
* renaming
* Add typing