Refactoring update of standard relations when a custom object is
renamed, after observing occasional issues.
---------
Co-authored-by: Weiko <corentin@twenty.com>
The Pull Request adds support for local HTTPS configuration and
introduces a new environment variable for the app's base URL.
- Added new environment variable REACT_APP_BASE_URL in .env.example.
- Introduced logic to utilize SSL certificates for local HTTPS in
vite.config.ts.
- Added validation to ensure SSL key and certificate paths are defined
for HTTPS.
- Included support for dynamic base URL setting based on the environment
configuration.
- Enhanced server configuration in vite.config.ts to handle HTTPS and
local development.
---------
Co-authored-by: Félix Malfait <felix@twenty.com>
TODO:
- [ ] It should not be possible to add tasks, notes, files, etc.
Fix for https://github.com/twentyhq/twenty/issues/7172
Note for reviewer:
- With these changes, `deletedAt` is now always included in
`recordGqlFields`.
--- Edit from Charles --
In this PR:
1) As mentionned by @pau-not-paul, we are adding deletedAt to our
recordGqlFields for board and table
2) I'm removing cellReadOnly logic, it is now fully computed using
useIsFieldValueReadonly like it's done in other places, there is no need
to maintain two read only systems
3) refactoring useIsFieldValueReadonly to take all the business logics
into one place together. It's now a function of the 5 factors (isRemote,
isDeleted, objectName, fieldName, etc...). Later it's likely to get back
to a function of Pick<FieldMetadata>, Pick<ObjectMetadata>,
record.isDeleted but we are not there yet
Note: as all cells are listening to the record (for isDeleted), updating
a field will trigger a re-rendering of the row which is not an issue
right now. It will be if we introduce bulk edition. In this case we
would need to use a selector on fields on top of record store
---------
Co-authored-by: Charles Bochet <charles@twenty.com>
## Context
The object metadata map is becoming quite large and its structure could
be simplified.
We are removing byNameSingular/byNamePlural keys, the former can be
retrieved through a new helper and the latter is not used in the code
base currently.
### Overview
This pull request addresses issue #8612 by ensuring the "Expand to Full
Page" button does not appear on the Email and Calendar pages in the
right drawer.
### Changes Made
- Added conditions in the `RightDrawerTopBar` component to prevent the
`RightDrawerTopBarExpandButton` from rendering on:
- Email pages (`RightDrawerPages.ViewEmailThread`)
- Calendar pages (`RightDrawerPages.ViewCalendarEvent`)
- Verified that the button still renders correctly on other pages, such
as Record pages.
### Testing
Since I couldn't run the project locally, I was unable to confirm the
changes in a running environment. However, the logic has been carefully
updated to ensure the button is conditionally hidden based on the
current `rightDrawerPage` state.
### Additional Notes
Please let me know if further adjustments are needed or if there are any
issues during testing. Thank you for reviewing this PR!
---------
Co-authored-by: Weiko <corentin@twenty.com>
## Context
We recently added an infinite ttl to metadata version however other keys
such as the object metadata map are also linked to the version so
keeping the version in cache without the rest breaks the app. I'm
editing all engine related keys with infinite ttl
In this PR:
- Ensure the `setNestedValue` does a deep copy of the provided object
and doesn't mutate it directly.
- Store the form's state in a `useState` instead of relying entirely on
the backend's state. This makes the form more resilient to slow network
connections.
- Ensure the input settings are reset when selecting another function.
- The Inner component now expects the serverless functions data to be
resolved before being mounted, so I split it.
Closes https://github.com/twentyhq/twenty/issues/8523
We were not handling relations in the search resolver, which started
being an issue as we query those relations in the combinedSearch queries
(introduced here https://github.com/twentyhq/twenty/pull/8564); they
were nullified in the response payload. The response was overwriting
findManyRecords results in the cache as it contained the exact same
fields.
So we now
1. Handle relations in the search resolver
2. Stop querying relations in search queries (no use)
If migration fails for some reason, the script runs anyway and creates
the file which indicates that migration is complete. This is obviously
not cool. If database is not available for some reason and migrations
fail, the container should exit, not continue.
Relevant stack overflow: https://stackoverflow.com/a/2871034
Something changed, which affected the Favorite folder picker checkbox
styles -- fixed it!
Cleaned up code in `CurrentWorkspaceMemberFavoritesFolders` - removed
redundant filtering since favorites are already filtered in
`usePrefetchedFavoritesData`.
Regarding issue #8569 - I am not sure what to do in this case. Since
Folders data is gated by a feature flag, we can't use it in
`CurrentWorkspaceMemberFavoritesFolders` to ensure the favorite section
renders with empty folders. Currently, the section only appears when at
least one favorite exists - may be leave this section open at all times
or fix this bug after removal of the feature flag?
---------
Co-authored-by: Nitin Koche <nitinkoche@Nitins-MacBook-Pro.local>
Co-authored-by: Charles Bochet <charles@twenty.com>
Fixes: #8552
1. Summary
It seems table cell content is missing `white-space: nowrap`, so it
breaks the content into multiple lines when there are spaces or such.
2. Solution
Set `white-space: nowrap` for the table cell container so it always
takes a single line regardless of the length of the content.
3. Recording
https://github.com/user-attachments/assets/a42a2e80-d1fc-43b1-bf87-d52bf0367a88
## Summary
This pull request addresses a minor issue reported in the #8171 , which
was causing misalignment in the content and overall theme spacing.
Fixes#8171
## Fix
> Removed the 5px padding based on the check if its non hoverable, the
current gap between the checkbox and the icon is 8px as expected.
> For the small variant the total size of the non hoverable component is
14x14 as mentioned in the design, for hoverable its 24x24
> For the Large variant the total size of the non hoverable component is
20x20 as mentioned in the design, for hoverable
its 32x32
> checked for the hoverable checkbox component as well working as
expected
## Screenshot for the fixes
<img width="345" alt="Screenshot 2024-10-30 at 10 49 39 PM"
src="https://github.com/user-attachments/assets/2b5cadb7-67d2-4c61-bd40-0d5a12ae48d0">
#### Thank you for considering this contribution! I look forward to your
feedback.
---------
Co-authored-by: Karan Parmar <karan.parmar@PE-HO-MAC-185.local>
Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
Here we add the option for Text inputs to be wrapped, and to select on
how many lines text should be displayed.
Fix#7552
---------
Co-authored-by: guillim <guillaume@twenty.com>
Introduced a custom decorator 'WarningIf' to log warnings for specific
environment variable conditions. Implemented this for
SESSION_STORE_SECRET to ensure users change it from the default value.
This PR is preparing states to we'll be able to handle view groups
correctly with table data.
RowIds are now stores in 2 component states, one storing ids by view
group and another storing all the rowIds.
We're doing that because some other state like focus, or select must not
be scoped by view group id.
This PR adds "type" to the reserved keywords list in
validate-object-metadata-input.util.ts. This prevents users from
creating objects with "type" as a key, which has caused issues in the
past .
issue solved #8543
1.Updated the RESERVED_KEYWORDS array to include "type"
---------
Co-authored-by: Weiko <corentin@twenty.com>
Fixes: #8531
1. Summary
There is `onClick` event handler defined for `NavigationDrawerItem`
component, and inside the handler, if `to` is not empty, we trigger
another navigation when it's already handled by `Link` component from
`react-router-dom`
2. Solution
Removed extra navigation logic from `NavigationDrawerItem`'s `onClick`
handler
3. Screen Recording
https://github.com/user-attachments/assets/cfefdd51-1663-4d96-acd2-57783ae9877f