Commit Graph

4684 Commits

Author SHA1 Message Date
5a27491bb2 Fix Tasks/Notes created with null position (#9068)
Fixes https://github.com/twentyhq/twenty/issues/8810
Fixes https://github.com/twentyhq/twenty/issues/5268
Fixes https://github.com/twentyhq/twenty/issues/8971

- Fixing Task/Note creation not sending position during creation
- Adding a command to backfill position being null, using existing
backfill command.
- Removed unused backfill job.
- Updated workspace entities to set position non-nullable and set a
default value to make it non-required on the API
- Updated position factory to set a default position for all objects
having a POSITION field instead of only company/people
- Moved the try/catch in each resolver factory calling
GraphqlQueryRunnerException handler, makes more sense to call it in the
actual graphql-query-runner and removing some duplicate codes
- Adding validations for input in QueryRunnerArgs factories
- Allow sync-metadata to override and sync defaultValues for certain
field types (that can't be updated by users)
- Removing health-check from sync-metadata command during force mode to
improve performances
2024-12-16 14:45:54 +01:00
2ceb1c87b3 Fix array enum renaming (#9067)
When creating an enum type (let's say post_type_enum), postgres will
automatically create a array enum type based on this enum and prefix it
with an underscore (so _post_type_enum).

Our code was not taking this case into account while dealing with
MULTISELECT

Resources:
https://www.postgresql.org/docs/current/sql-createtype.html

<img width="1329" alt="image"
src="https://github.com/user-attachments/assets/c41bc90c-9884-4995-8fae-d26869153a1d"
/>
2024-12-13 19:16:04 +01:00
042b6c65ed Change favicon/company enrichment urls (#9065)
We're moving favicon/telemetry/company enrichment to a separate url for
better security/monitoring
2024-12-13 18:41:57 +01:00
abaf2651ec add product table data in real time (#9055)
Solves (https://github.com/twentyhq/private-issues/issues/198)

**TLDR**

Updates the billingProduct table data using stripe webhooks event. It
saves all the updates/creates of the products, but ensuring that it has
the lastest version of the correct metadata attributes (typeof
BillingProductMetadata)

**In order to test**
Billing:

Set IS_BILLING_ENABLED to true
Add your BILLING_STRIPE_SECRET and BILLING_STRIPE_API_KEY
Add your BILLING_STRIPE_BASE_PLAN_PRODUCT_ID (use the one in testMode >
Base Plan)
Authenticate with your account in the stripe CLI
Run the command: stripe listen --forward-to
http://localhost:3000/billing/webhooks

Go to Stripe In test mode and update or create a product using a
metadata of type of BillingProductMetadata, you can also update it using
a different values for metadata.

Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
2024-12-13 18:15:11 +01:00
5961d26f91 Add email composite field (#9061)
Same as links, only adding primary email
2024-12-13 18:05:31 +01:00
32e7eb79b9 Add links composite field (#9059)
- only primary links for now
- need for a global strat for validation. This will come later
2024-12-13 15:53:21 +00:00
7e67b1c5a6 Enforce system wide sso providers (#9058)
We have recently introduced the possibility to specify workspace
specific auth providers.
I'm:
- introducing system wide auth providers (provided by clientConfig)
- making sure workspace specific auth providers belong to system wide
auth providers set
2024-12-13 16:38:04 +01:00
57869d3c8c Fix broken chips on timelin eActivity on show pages (#9057)
We were using RecordIndexContext in FieldDisplays components which is
wrong as the FieldDisplays could be used in locations not providing this
context (not being indexes pages).

Instead, we are passing it within FieldContext which the context that
will always be there for FieldDisplays and we need indexes to fill this
FieldContext with their RecordIndexContext value when needed
2024-12-13 15:34:00 +01:00
257834ea71 In navigation drawer, cursor should not be drag on hover and some enhancements (#8975)
as per the title- on hover, the draggable items had a grab cursor.
Couldn't change it to a pointer, because then onClick would have a weird
behavior of grab which causes lag onClick.
2024-12-13 14:37:46 +01:00
9579f22bc2 Move settings data model refreshMetadata to sync calls (#9046)
In this PR, I'm
- removing setting up the isAppWaitingForFreshMetadata boolean state in
PageChangeEffect navigate (not robust) to some precise synchronous
places, improving the control we have on when the app considers it's
ready to be rendered based on fresh metadata
- fixing tests
2024-12-13 13:14:10 +01:00
b10d831371 8726 workflow add a test button in workflow code step (#9016)
- add test button to workflow code step
- add test tab to workflow code step


https://github.com/user-attachments/assets/e180a827-7321-49a2-8026-88490c557da2



![image](https://github.com/user-attachments/assets/cacbd756-de3f-4141-a84c-8e1853f6556b)

![image](https://github.com/user-attachments/assets/ee170d81-8a22-4178-bd6d-11a0e8c73365)
2024-12-13 10:16:29 +00:00
07aaf0801c fix: can't properly drag and drop in empty record group (#9039)
Fix #8968 

Fix issue with drag and drop when record group are empty.
Happy to discuss the implementation, as it's limited to the
`@hello-pangea/dnd` api.

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2024-12-13 09:37:23 +01:00
d56c815897 [Fix] isLabelSyncedWithName should be nullable (#9028)
isLabelSyncedWithName should be nullable for fieldMetadata, as it is for
objectMetadata.

+ Adding missing validation on label and name sync in
fieldMetadataService for creation and update
+ adding metadata tests
2024-12-12 18:25:40 +01:00
2990d23411 Fix composite field creation (#9044)
- composite field need to be formatted before being saved
- repository.create() does not do it. So we simply lose the composite
fields on the way
- save() does it directly and doing create() before does not change
anything
2024-12-12 16:34:56 +00:00
77c2961912 Fast follows on 0.34 (#9034)
Co-authored-by: Weiko <corentin@twenty.com>
2024-12-12 15:46:48 +00:00
05cd0d1803 [Aggregate queries for table views - #2] Add aggregate queries footer for simple views (#9025)
In this PR, we are introducing aggregate queries on table views, behind
a feature flag.
This does not work with view groups yet, nor with views that have
records until the bottom. (both will be tackled next)
2024-12-12 13:38:58 +01:00
5f2a39d9e9 fix: group by sort options should have a checkmark when selected (#9038)
Fix #8966 

This PR is adding a checkmark beside the selected sort option in the
`Options` dropdown menu.

<img width="225" alt="Screenshot 2024-12-12 at 12 03 18 PM"
src="https://github.com/user-attachments/assets/81783bc0-5aea-4f0d-9327-c70f3e70edb6"
/>
2024-12-12 11:18:53 +00:00
d7da73f0ec feat: record group add new (#8925)
Fix #8757

This PR is adding the Add new button on view groups.
Also this PR fix an issue where the pending record can be draggable, and
is causing error.

<img width="1119" alt="Screenshot 2024-12-10 at 4 24 43 PM"
src="https://github.com/user-attachments/assets/4fd01e99-c85e-4a06-a733-cbf3cc32957d">

It also start to issues with the way we're using Context.
We're initializing pretty much all Context like this:

```typescript
export const RecordTableContext = createContext<RecordTableContextProps>(
   {} as RecordTableContextProps,
 );
```

This is causing issues when by mistake we use the context like this
outside the Provider hierarchy:

```typescript
const context = useContext(RecordTableContext);
```

This is going to fail silently, and all the context variables become
undefined...

To fix this I've introduced an util called `createRequiredContext`, this
one is returning an array containing the provider and the hook to
retrieve the context.
The context is initialized to undefined inside this utility, this way we
can check if the value has been initialized with the provider to check
if we're inside it. It'll throw an error if this one is used outside the
provider.
The return values are properly typed, so `undefined` is not added to the
value of the Context.

I'll create a followup ticket to use this new utility function, if
that's ok and replace it everywhere in the codebase.
We can also consider adding a eslint rule to warn about the use of
`createContext` directly.
2024-12-12 11:50:13 +01:00
182ebb6394 Playwright tests - stage 1 - login with email and password test (#8988)
Scenario:
https://github.com/twentyhq/twenty/issues/8469#issuecomment-2471420099

To launch this test, `yarn playwright test --project Authentication`
must be used in `packages/twenty-e2e-testing` directory (for some reason
when launching this test from IDE, be Webstorm or VSCode, it won't fetch
the data from .env)
2024-12-12 11:05:25 +01:00
bce5be85a3 add info to customer table and stripe customer data (#9004)
Solves (https://github.com/twentyhq/private-issues/issues/194)

**TLDR**

Updates the billingCustomer table data using stripe webhooks event, also
updates the customer's metadata in stripe, in order to contain the
workspaceId associated to this customer.

**In order to test**
Billing:

- Set IS_BILLING_ENABLED to true
- Add your BILLING_STRIPE_SECRET and BILLING_STRIPE_API_KEY
- Add your BILLING_STRIPE_BASE_PLAN_PRODUCT_ID (use the one in testMode
> Base Plan)
- 

Authenticate with your account in the stripe CLI
Run the command: stripe listen --forward-to
http://localhost:3000/billing/webhooks

Run the twenty workker

Authenticate yourself on the app choose a plan and run the app normally.
In stripe and in posgress the customer table data should be added.

**Next steps**
Learn more about integrations tests and implement some for this PR.

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-12-12 08:00:39 +01:00
c776179ecc start 0.40.0 canary (#9029) 2024-12-11 19:23:51 +01:00
90c26643a8 Fix race condition while loading metadata on sign in (#9027) 2024-12-11 18:56:02 +01:00
183fd877c4 Add a confirmation modal for relation object deletion (#8818)
Fixes #8698 

1. Summary
We decided to add a confirmation modal for the relation object deletion.
It's gonna a bit of safety to the user interactions because this action
can be disruptive even though it can be restored.

2. Solution
Used `createPortal` function to address the issue where the vertical
scrollbar shows over the modal. Added a logic that displays a
confirmation modal for deletion in [this
file](d284419d66/packages/twenty-front/src/modules/object-record/record-show/record-detail-section/components/RecordDetailRelationRecordsListItem.tsx).
I can update the text(title, description, and CTA) as necessary based on
the feedback.

_**However, I observed an issue that the deleted object still shows up
under the list until hard-refresh. I figured that can be addressed as a
separate issue.**_

3. Recording


https://github.com/user-attachments/assets/1a64b702-a915-49f3-a226-2c2d5af8a1d7
2024-12-11 18:23:27 +01:00
07de458fda fix:Hide Scrollbar before Scroll (#8896)
Fix for the issue #8847 Hide Scrollbar before Scroll.


https://github.com/user-attachments/assets/27dda89f-e3f6-4c72-bcc5-8c7e10d3c823

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
Co-authored-by: ehconitin <nitinkoche03@gmail.com>
2024-12-11 22:44:46 +05:30
4d9facb9bd Add address composite form field (#9022)
- Create FormCountrySelectInput using the existing FormSelectFieldInput
- Create AddressFormFieldInput component
- Fix FormSelectFieldInput dropdown + add leftIcon

<img width="554" alt="Capture d’écran 2024-12-11 à 15 56 32"
src="https://github.com/user-attachments/assets/c3019f29-af76-44e1-96bd-a0c6283674e1"
/>
2024-12-11 16:57:42 +00:00
2c4a77a7b7 Refactor RecordShowActionMenu to use contextual actions (#9023)
Closes #8736
2024-12-11 15:24:02 +00:00
224b6d1334 Fix login issue (#9012)
Co-authored-by: Weiko <corentin@twenty.com>
2024-12-11 15:42:53 +01:00
ad04040ea6 8976 modify mobile page header (#9020)
Closes #8976
2024-12-11 15:06:09 +01:00
6067852c1c fix(chip): update padding for transparent variant (#7164) (#8823)
This PR addresses the issue described in #7164, where the Chip
component's padding for the Transparent variant was not correctly
aligned. The following changes have been made:

The padding-left for the Transparent variant is now set to 2px to
improve alignment.
Other chip variants retain the default horizontal padding values.

These changes ensure that the Transparent chip variant is rendered
consistently with the rest of the design, as described in #7164.

See screenshots below for before and after comparison:
Before:

![image](https://github.com/user-attachments/assets/7749e393-3a9b-4367-a6f9-cb32a9897e7d)

![image](https://github.com/user-attachments/assets/2ad80002-f867-4bf2-b27c-29392b008ed9)

After:
![Screenshot 2024-12-01 at 4 02
08 AM](https://github.com/user-attachments/assets/71fb19a1-00fb-4ea3-989f-185c92221d5e)

![image](https://github.com/user-attachments/assets/7cc93c5e-d42b-4ada-bd27-178836b660b4)

Please review @Bonapara and let me know if you have any feedback or
concerns.

---------

Co-authored-by: guillim <guigloo@msn.com>
2024-12-11 14:52:55 +01:00
841b1f0e11 Thomas request (#9017)
Design request
2024-12-11 13:50:33 +01:00
5c60a5511e 8929 move recordindexactionmenu menu inside the recordindexpageheader (#9007)
Closes #8929 

Users with the feature flag `IS_PAGE_HEADER_V2_ENABLED` set to false
will still have the old behavior with the action bar.

To test the PR, test with and without the feature flag.
2024-12-11 11:51:33 +01:00
89f6f32243 Title overflow (#9009)
fix #8803
2024-12-11 11:37:08 +01:00
c1fff908fe Fix:Hide deleted filter component when reset button is clicked (#8880)
Resolve: #8874 

Problem :
When we are on the deleted records page and use the filter, if no
records are found, we see the no deleted recordName message along with a
button to remove the deleted filter. However, if we reset and filter
again, and still don't find any records, this message and button for the
deleted filter continue to display.
Solution: 
I noticed that the component RecordTableEmptyStateSoftDelete has this
button, and its visibility is controlled by the function
toggleSoftDeleteFilterState. If the state is true, the button appears;
if it's false, it doesn't. Therefore, we just need to call this function
when the reset button is clicked and set the state to false.
![All-Peopleand1morepage-Personal-MicrosoftEdge2024-12-0421-04-12-ezgif
com-video-to-gif-converter](https://github.com/user-attachments/assets/68e524ff-2902-4a25-a361-3bb8e1220ff8)

---------

Co-authored-by: bosiraphael <raphael.bosi@gmail.com>
2024-12-11 10:06:23 +00:00
8ecf07f112 [Aggregate queries for table views - #1] Introduce aggregateOperationForViewFieldState (#9010)
Introducing aggregateOperationForViewFieldState to add a state storing
the aggregate operation for each view field
2024-12-10 18:03:38 +00:00
b6e02b630d Add full name composite field (#9008)
- Add composite field
- Add test
- Fix search variable dropdown scroll
<img width="548" alt="Capture d’écran 2024-12-10 à 16 52 43"
src="https://github.com/user-attachments/assets/c337f0c3-8a70-401a-abd0-7206489ba73e">
2024-12-10 16:29:55 +00:00
96d56f8883 Fix removeBillingFKWithCore migration location (#9006)
removeBillingFKWithCore migration is in the wrong folder and is not
executed as intended.
Moving to billing folder to fix that and to be only run in billing mode
2024-12-10 16:33:52 +01:00
013eda4a32 Fixed dropdown bugs on 0.34 (#9000)
- New task dropdown wasn't using the proper dropdown id
- Action menu triggered by context menu (right click) on table cell was
listening in edit mode.
2024-12-10 16:01:03 +01:00
b0595e452a Fix add-subdomain-to-workspace command (#9005)
## Context
Fix add-subdomain-to-workspace command not included in global module
also fixing the command regex logic that was not generating subdomain
properly
2024-12-10 15:32:13 +01:00
90d47a8fca Fix favorite button (#9001)
Closes #8977
2024-12-10 15:20:37 +01:00
afd3252cbe Settings options (#8996)
- [x] text change

![image](https://github.com/user-attachments/assets/c7304052-18ad-4870-a5ad-5ea73aedcad1)

- [x] CSS for settings cards
Current :

![image](https://github.com/user-attachments/assets/8fd9b3cc-c3df-47a0-9ccb-1a0417f076f2)
Expected :  

![image](https://github.com/user-attachments/assets/8a4e7f17-8ee8-4664-b8b0-5b2857568570)
2024-12-10 13:23:00 +00:00
0a8960c2ed Fix broken workspace deletion (#9002)
Fixes #8985
2024-12-10 14:13:58 +01:00
f0dbeea704 Remove buttons for activity empty state (#8999)
Before:
<img width="482" alt="Capture d’écran 2024-12-10 à 11 17 53"
src="https://github.com/user-attachments/assets/3641e902-10b9-4fbf-8383-d6e5d5b2de79">

After:
<img width="453" alt="Capture d’écran 2024-12-10 à 11 33 01"
src="https://github.com/user-attachments/assets/9f949933-0740-4c91-abf3-2c1817a68968">
2024-12-10 11:09:40 +00:00
c553361f25 Fix RecordDetailSectionHeader spacing (#8997)
Before:
<img width="339" alt="Capture d’écran 2024-12-10 à 11 02 30"
src="https://github.com/user-attachments/assets/4fd1d598-0efe-4ee9-931e-dd307af21c95">

After:
<img width="345" alt="Capture d’écran 2024-12-10 à 11 02 19"
src="https://github.com/user-attachments/assets/fb72a661-ac66-43c7-906c-9020171dbf3b">
2024-12-10 11:16:45 +01:00
d70987653b 8964 add feature flag is page header v2 enabled (#8995)
Closes #8964
2024-12-10 10:56:28 +01:00
228b7386ea API & Webhooks doc quick fix (#8994)
Quick fix for https://github.com/twentyhq/twenty/issues/8990
2024-12-10 10:39:38 +01:00
49c3250519 update: Replace reactflow with @xyflow/react and Update Dependencies (#8940)
## Description:

This pull request includes the following changes:

1. **Dependency Update**:
   - Added `@xyflow/react` as a dependency.
- Replaced imports from `reactflow` with `@xyflow/react` in multiple
components.

2. **Dependency Removal**:
- Removed `reactflow` dependency and its related code from the project.

3. **Type Definitions Update**:
- Updated type definitions for nodes and edges to align with the new
library.

4. **Code Refactoring**:
- Minor refactoring for improved code clarity and consistency in the
following components:
     - `SettingsDataModelOverview`
     - `SettingsDataModelOverviewEffect`
     - `SettingsDataModelOverviewField`
     - `SettingsDataModelOverviewObject`

5. **Dependency Files Update**:
- Updated `package.json` and `yarn.lock` to reflect the changes in
dependencies.

## Additional Notes:
- These changes ensure that the project is now using the `@xyflow/react`
library instead of `reactflow`.
- The refactoring improves code readability and maintains consistency
across the components.
- Please review the changes and provide any feedback or suggestions.

## Testing:
- The changes have been tested locally and verified to work as expected.

## Checklist:
- [x] Added `@xyflow/react` as a dependency.
- [x] Replaced `reactflow` imports with `@xyflow/react`.
- [x] Removed `reactflow` dependency.
- [x] Updated type definitions for nodes and edges.
- [x] Refactored components for improved clarity and consistency.
- [x] Updated `package.json` and `yarn.lock`.
- [x] Tested the changes locally.

## Related Issue
Fixes #6662
2024-12-10 10:21:01 +01:00
28ff5610f0 better label for toggle input that will improve UX (#8982)
Answering the ticket : Increase the clickable area of toggles to parent
container

# Change in Labels

In order to solve this ticket, we change the way we handle the labels VS
the inputs. The use of `htmlFor` and setting up the appropriate id for
the toggle solves the "blank click"
<img width="239" alt="Screenshot 2024-12-09 at 17 43 53"
src="https://github.com/user-attachments/assets/19eab5fc-8393-496d-b713-57e51c620bf1">

fix #8953

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-12-10 09:41:04 +01:00
0a61550f43 View picker minor change - favorite fast followups (#8987)
Clicking "Add to favorite" should add the record as a favorite. It
shouldn't open the menu on the first click; it should only open on the
second click when the record is already a favorite.
2024-12-10 09:39:04 +01:00
f4ef51fbe5 Fix : Small fixes for the options menu (#8983)
Fix #8789 : fixed options menu with current view hook to fetch the view
name

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-12-10 09:19:46 +01:00
0654d814c6 Added Button Shortcut Style Enhancements + Additional Storybook Tests (#8947)
Resolves Issue #4871 (or enhances)

**Additions**
- **Customized Styling for Button Shortcuts:** Previously, button
shortcuts/separator styling was standardized. We added customized
styling for optional button shortcuts based on button accents and
variants.
- **Enhanced Storybook Catalogs:** We modified ShortcutCatalog in
Button.stories.tsx to display button shortcuts across styles and various
inputs.

![Screenshot 2024-12-07 at 9 16
35 PM](https://github.com/user-attachments/assets/f56ec269-d5d4-45d7-b490-e5632371f9b2)
![Screenshot 2024-12-07 at 9 16
30 PM](https://github.com/user-attachments/assets/04c3b7a9-a0bb-49fc-ae30-6e488f9658dd)
![Screenshot 2024-12-07 at 9 16
22 PM](https://github.com/user-attachments/assets/a22847c2-f5da-4a10-9a0d-f07389e1751e)

---------

Co-authored-by: Félix Malfait <felix@twenty.com>
2024-12-10 08:27:11 +01:00