Commit Graph

346 Commits

Author SHA1 Message Date
02673a82af Feat/put target object identifier on use activities (#4682)
When writing to the normalized cache (record), it's crucial to use _refs
for relationships to avoid many problems. Essentially, we only deal with
level 0 and generate all fields to be comfortable with their defaults.

When writing in queries (which should be very rare, the only cases are
prefetch and the case of activities due to the nested query; I've
reduced this to a single file for activities
usePrepareFindManyActivitiesQuery 🙂), it's important to use queryFields
to avoid bugs. I've implemented them on the side of query generation and
record generation.

When doing an updateOne / createOne, etc., it's necessary to distinguish
between optimistic writing (which we actually want to do with _refs) and
the server response without refs. This allows for a clean write in the
optimistic cache without worrying about nesting (as the first point).

To simplify the whole activities part, write to the normalized cache
first. Then, base queries on it in an idempotent manner. This way,
there's no need to worry about the current page or action. The
normalized cache is up-to-date, so I update the queries. Same idea as
for optimisticEffects, actually.

Finally, I've triggered optimisticEffects rather than the manual update
of many queries.

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2024-04-01 13:12:37 +02:00
da8f1b0a66 Fix display empty value if boolean instead of false on show page (#4468)
* default value boolean fixed

* fixed creation, fixed updating a value to false

* fixed default value for default value if boolean

* fixed tests

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2024-03-30 11:38:08 +01:00
1d351a29b8 Sync remote object (#4713)
* Sync objects

* Generate data for isRemote

* Add cache version update

* Add label identifier + fix field metadata input

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-29 18:23:58 +01:00
68977dc675 Calendar event fixes and improvements (#4690)
* 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
2024-03-29 10:03:00 +01:00
1829f4d009 Switch timestamp to timestamptz (#4696)
* Switch timestamps to timestamptz

* update standard/custom objects logic to use timestamptz

* fix test
2024-03-28 22:39:41 +01:00
27fdb00d07 4586 fix workspace member feature (#4680)
* Fix import

* Handle delete workspace member consequences

* Add a patch to request deleted workspace member's userId

* Remove useless relations

* Handle delete workspace + refactor

* Add missing migration

* Fix test

* Code review returns

* Add missing operation in migration file

* Fix code review return update

* Fix workspaceMember<>ConnectedAccount relation
2024-03-28 17:59:48 +01:00
3171d0c87b feat: address composite field (#4492)
Added new Address field input type.

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2024-03-28 16:50:38 +01:00
22d4af2e0c Fix events being created for system objects (#4694)
* Fix events being created for system objects

* move the condition above to avoid unnecessary db calls
2024-03-28 16:15:14 +01:00
0cc0929bd0 Rename refreshToken to appToken and add fields (#4691) 2024-03-28 14:07:12 +01:00
0391bf65f2 feat: Oauth with PKCE (#4648)
* authorizeApp and exchangeAuthcode methods

* module rename

* import fix

* lint fix

* fix import
2024-03-27 21:18:07 +01:00
d687523e22 4643 create a pre hook for calendar events (#4666)
* copy message pre hook

* add CalendarQueryHookModule to workspace-pre-query-hook.module

* use CalendarChannelVisibility enum

* add calendarEvent to workspace-pre-query-hook.config

* fix pre-hook

* fix findOne prehook in config

* rename fragments

* fix import

* update findOne prehook and create can-access-calendar-event.provider

* replace provider with service

* fix type

* renaming

* remove unnecessary eslint skip

---------

Co-authored-by: Weiko <corentin@twenty.com>
2024-03-27 19:44:35 +01:00
416eb1eafd 4506 change field labels and field type for calendarevent object metadata to match figma (#4679)
* 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
2024-03-27 15:17:45 +01:00
5c40e3608b [messaing] improve messaging import (#4650)
* [messaging] improve full-sync fetching strategy

* fix

* rebase

* fix

* fix

* fix rebase

* fix

* fix

* fix

* fix

* fix

* remove deletion

* fix setPop with memory storage

* fix pgBoss and remove unnecessary job

* fix throw

* fix

* add timeout to ongoing sync
2024-03-27 12:44:03 +01:00
5c0b65eecb feat: simplification of default-value specification in FieldMetadata (#4592)
* feat: wip refactor default-value

* feat: health check to migrate default value

* fix: tests

* fix: refactor defaultValue to make it more clean

* fix: unit tests

* fix: front-end default value
2024-03-27 10:56:04 +01:00
f08dfec00a Fix encryption logic (#4672)
Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-26 17:43:32 +01:00
d4eb75abff Add isRemote field on object metadata (#4668)
Add isRemote field

Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-26 16:49:18 +01:00
3acec7731c Fix/enum bug (#4659)
* fix: sever not throwing when enum contains two identical values

* fix: enum column name cannot be change

* fix: put field create/update inside transactions

* fix: check for options duplicate values front-end

* fix: missing commit transaction
2024-03-26 16:16:29 +01:00
ab028b8c22 60 fix svg xcc vulnerability (#4660)
* Add domPurify

* Sanitize svg files

* Add is-svg package

* Use isSvg package

* Revert "Use isSvg package"

This reverts commit 05014b51076505d8766ca8c4c3233f6563869b17.

* Revert "Add is-svg package"

This reverts commit ad3e206ea6b09c2579bd79ac570b69694936fb7b.

* Code review returns
2024-03-26 16:10:45 +01:00
279d99487c Fetch available remote tables (#4665)
* Build remote table module

* Use transactions

* Export url builder in util

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-26 15:50:41 +01:00
fefa37b300 4488 connect calendar tab to backend (#4624)
* create states and hooks

* implement fetch more records

* add empty state

* update types

* fix error

* add fetchmoreloader and add scroll to container

* fix visibility in calendarEventFragment

* fix fetchMoreRecords

* update TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE

* add test

* modify empty state subtitle

* replace entity by activityTargetableObject

* create useCustomResolver hook

* refactor

* refactoring

* use generic component

* rename FetchMoreLoader

* remove deprecated states and hooks

* fix typing

* update typing

* update error message

* renaming

* improve typing

* fix bug on contact creation from same company
2024-03-26 14:50:32 +01:00
c54acb35b6 Update Dev Seeds to use Ids (#4663) 2024-03-26 14:19:40 +01:00
d2b237ebf2 #4298 Add emails seed data for demo and dev seeds (#4513)
* Add message seed data

* Change order of attributes

* add personIds

* fix messageParticipants attributes

* add imports in data-seed-dev-workspace

* Update messageParticipant.ts

Delete comments

---------

Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
2024-03-25 19:06:05 +01:00
6ab43c608f feat: create Integrations/IntegrationDetail page (#4574)
* feat: create Integrations/IntegrationDetail page

Closes #4546

* docs: add Settings/Integrations/Integration Detail page stories

* docs: add Settings/Billing page stories

* refactor: move some Settings components to @/settings

* refactor: move some Settings integrations components to @/settings/integrations
2024-03-25 18:06:46 +01:00
04c5d066f8 fix: create deterministic uuids for standards relation on custom object (#4642)
* fix: create deterministic uuids for standards relation on custom object

* fix: remove check if standardId already exist to override old ones
2024-03-25 16:58:58 +01:00
9e70f5b650 Add endpoints to create and delete remote server (#4606)
* Build remote server

* Add getters

* Migrate to json inputs

* Use extendable type

* Use regex validation

* Remove acronymes

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-25 15:21:23 +01:00
e576fe0d67 Update yarn commands (#4644)
* Simplify commands

* Simplify commands

* Migrate all dev commands to project.json

* Fix tests
2024-03-25 12:31:18 +01:00
3ea8589c0d Fix event relation with custom objects 2024-03-22 20:21:02 +01:00
161137e87a Add events on Custom objects (#4625) 2024-03-22 20:02:00 +01:00
96cad2accd 4398 decouple contacts and companies creation from messages import (#4590)
* emit event

* create queue and listener

* filter participants with role 'from'

* create job

* Add job to job module

* Refactoring

* Refactor contact creation in CreateCompanyAndContactService

* update job

* wip

* add getByHandlesWithoutPersonIdAndWorkspaceMemberId to calendar event attendee repository

* refactoring

* refactoring

* Revert "refactoring"

This reverts commit e5434f0b871e45447227aa8d55ba5af381c3ff1c.

* fix nest imports

* add await

* fix contact creation condition

* emit contact creation event after calendar-full-sync

* add await

* add missing transactionManager

* calendar event attendees personId update is working

* messageParticipant and calendarEventAttendee update is working as intended

* rename module

* fix lodash import

* add test

* update package.json
2024-03-22 18:44:14 +01:00
1a763263c9 Add workspaceId option on standard-id migration script 2024-03-22 18:20:49 +01:00
5665656b05 4489 timebox finish google calendar full sync (#4615)
* 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
2024-03-22 18:10:55 +01:00
41aae5bd20 Fix authentication resolver 2024-03-22 17:47:51 +01:00
4ae67318ab Fix broken worker (#4618) 2024-03-22 16:43:13 +01:00
6713ac589d Object creation triggers view creation 2024-03-22 16:39:55 +01:00
4a493b6ecf New view picker (#4610)
* Implement new view picker

* Complete feature

* Fixes according to review
2024-03-22 15:04:17 +01:00
d876b40056 Logs show page (#4611)
* Being implementing events on the frontend

* Rename JSON to RAW JSON

* Fix handling of json field on frontend

* Log user id

* Add frontend tests

* Update packages/twenty-server/src/engine/api/graphql/workspace-query-runner/jobs/save-event-to-db.job.ts

Co-authored-by: Weiko <corentin@twenty.com>

* Move db calls to a dedicated repository

* Add server-side tests

---------

Co-authored-by: Weiko <corentin@twenty.com>
2024-03-22 14:01:16 +01:00
1aa48d3bf7 feat: merge front and server dockerfiles and optimize build (#4589)
* feat: merge front and server dockerfiles and optimize build

* fix: update image label

* fix: bring back support for REACT_APP_SERVER_BASE_URL injection at runtime

* fix: remove old entries & add nx cache in dockerignore

* feat: generate frontend config at runtime using Nest

* fix: format and filename

* feat: use the EnvironmentService and leave default blank

* feat: add support for DB migrations
2024-03-21 19:22:21 +01:00
3fa8c4bace Add KanbanFieldMetadataId on View standard object (#4604)
* Add KanbanFieldMetadataId on View standard object

* Deprecate Pipeline step

* Fix

* Use Constants instead of raw ids

* Fix

* Fix query runner

* Fix according to review

* Fix tests

* Fix tests

* Fix tests
2024-03-21 18:08:27 +01:00
8e4123e772 48 add yearly monthly sub switch (#4577) 2024-03-21 10:47:25 +01:00
e5c1309e8c feat: wip server folder structure (#4573)
* feat: wip server folder structure

* fix: merge

* fix: wrong merge

* fix: remove unused file

* fix: comment

* fix: lint

* fix: merge

* fix: remove console.log

* fix: metadata graphql arguments broken
2024-03-20 16:23:46 +01:00
da12710fe9 feat: multi-workspace (frontend) (#4232)
* select workspace component

* generateJWT mutation

* workspaces state and hooks

* requested changes

* mutation fix

* requested changes

* user workpsace delete call

* migration to drop and createt user workspace

* revert select props

* add DropdownMenu

* seperate multi-workspace dropdown as component

* Signup button displayed accurately

* update seed data for multi-workspace

* lint fix

* lint fix

* css fix

* lint fix

* state fix

* isDefined check

* refactor

* add default workspace constants for logo and name

* update migration

* lint fix

* isInviteMode check on sign-in/up

* removeWorkspaceMember mutation

* import fixes

* prop name fix

* backfill migration

* handle edge cases

* refactor

* remove migration query

* delete user on no-workspace found condition

* emit workspaceMember.deleted

* Fix event class and unrelated fix linked to a previously missing dependency

* Edit migration (I did it in prod manually)

* Revert changes

* Fix tests

* Fix conflicts

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2024-03-20 14:43:41 +01:00
cfb0cce9b8 Refactor Views by cleaning the code, relying on apolloCache and improving performances (#4516)
* Wip refactoring view

* Post merge conflicts

* Fix review

* Add create view capability

* Fix create object missing view

* Fix tests
2024-03-20 14:21:58 +01:00
35d41e38c8 Set optional checkout.session.url (#4569)
* Set optional checkout.session.url

* Lint

* Edit .env.example

* Vale CI

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2024-03-20 07:04:07 +01:00
4bfb90657f Add JSON field type and Event object (#4566)
* Add JSON field type and Event object

* Simplify code

* Adress PR comments and add featureFlag
2024-03-19 21:54:08 +01:00
4ab426c52a 4485 create a custom resolver for calendar events (#4568)
* create timeline calendar event resolver

* working on getCalendarEventsFromPersonIds

* add count query

* add calendarEventVisibility and add typing

* update calendarEvent dto

* modify calendarEvent dto

* compute calendar event visibility

* fix types

* add FieldMetadata in timeline calendar dtos and create queries and fragments

* remove fieldMatadata

* fix naming

* update resolver

* add getCalendarEventsFromCompanyId

* fix queries

* refactor queries

* fix visibility

* fix calendar event attendees bug

* visibility is working

* remove @IDField

* update gql queries

* update dto

* add error

* add enum

* throw http exception

* modify error

* Refactor calendar event visibility check

* use enum
2024-03-19 18:34:00 +01:00
e579554d47 Add getters factory for attachements (#4567)
* Add getter factory for attachements

* Override guard in test

* Add secret in env variables

* Return custom message on expiration

* Rename to signPayload

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-19 16:39:53 +01:00
bdbd77c696 Cleanup default values and leftover methods in environmentService (#4550)
* Cleanup default values and leftover methods in environmentService

* Adress remainings configService calls
2024-03-18 17:09:39 +01:00
8fb1ab8933 [backend] rename repository services and replace repository modules by dynamicModule (#4536)
* rename database services to repository

* refactor more repositories

* more refactoring

* followup

* remove unused imports

* fix

* fix

* Fix calendar listener being called when flag is off

* remove folders
2024-03-18 16:26:23 +01:00
411aac5efc Remove demo guard for mail api (#4527)
Co-authored-by: Thomas Trompette <thomast@twenty.com>
2024-03-18 14:05:35 +01:00
eb07b373a7 Fix storage s3 endpoint not being optional 2024-03-15 23:08:30 +01:00