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
* create and use component
* visibility working
* Fix click behavior for email thread previews
* Add dynamic styling to EmailThreadPreview component
* refactor to respect the convention
* add type
* query total number of threads
* graphql data generate
* wip
* wip
* Fix fetch more
* fix
---------
Co-authored-by: Thomas Trompette <thomast@twenty.com>
* wip
* wip
* add pagination
* wip
* wip
* wip
* update resolver
* wip
* wip
* endpoint is working but there is still work to do
* merge main
* wip
* subject is now first subject
* number of messages is working
* improving query
* fix bug
* fix bug
* added parameter
* pagination introduced a bug
* pagination is working
* fix type
* improve typing
* improve typing
* fix bug
* add displayName
* display displayName in the frontend
* move entities
* fix
* generate metadata
* add avatarUrl
* modify after comments on PR
* updates
* remove email mocks
* remove console log
* move files
* remove mock
* use constant
* use constant
* use fragments
* remove console.log
* generate
* changes made
* update DTO
* generate
* wip
* fetch only the messages which are not in the db
* fetch only the messages and threads which are not in the db
* fix bugs
* merge
* remove eslint-plugins-twenty
* get saved message thread ids and message ids at the same time