* 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
* build: create a new vite project for chrome extension
* feat: configure theme per the frontend codebase for chrome extension
* feat: inject the add to twenty button into linkedin profile page
* feat: create the api key form ui and render it on the options page
* feat: inject the add to twenty button into linkedin company page
* feat: scrape required data from both the user profile and the company profile
* refactor: move modules into options because it is the only page using react for now
* fix: show add to twenty button without having to reload the single page application
* fix: extract domain of the business website instead of scrapping the industry type
* feat: store api key to local storage and open options page when trying to store data without setting a key
* feat: send data to the backend upon click and store it to the database
* fix: open options page upon clicking the extension icon
* fix: update terminology from user to person to match the codebase convention
* fix: adopt chrome extension to monorepo approach using nx and get the development server working
* fix: update vite config for build command to work per the requirement
* feat: add instructions in the readme file to install the extension for local testing
* fix: move server base url to a dotenv file and replace the hard-coded url
* feat: permit user to configure a custom route for the server from the options page
* fix: fetch api key and route from local storage and display on options page to inform users of their choices
* fix: move front base url to dotenv and replace the hard-coded url
* fix: remove the trailing slash from person and company linkedin username
* fix: improve code commenting to explain implementation somewhat better
* ci: introduce a workflow to build chrome extension to ensure it can be published
* fix: format files to display code in a consistent manner per the prettier configuration in codebase
* fix: improve the commenting significantly to explain important and hard-to-understand parts of the code
* fix: remove unused permissions from the manifest file for publishing to the chrome web store
* Add nx
* Fix vale
---------
Co-authored-by: Charles Bochet <charles@twenty.com>
* 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
* Set opportunity stage as editable
* Fix comments
* Add command for migration
* Fixes
---------
Co-authored-by: Thomas Trompette <thomast@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
* feat: display record identifier field as first column in table
& forbid hiding and moving record identifier column
Closes#3303
* refactor: add availableTableColumnKeysSelectorScopeMap
* feat: show plus icon button for label identifier column and dropdown menu for other columns
* fix: use label identifier field value in RecordShowPage title
* refactor: remove availableColumnKeys selector
* refactor: review - compute label identifier logic in mapViewFieldsToColumnDefinitions + remove selectors
* fix: several fixes
* fix: fix board fields isVisible
* fix: fix board fields reordering
* fix: more board fields fixes
* fix: fix hiddenTableColumnsSelectorScopeMap
* create and use component
* visibility working
* Fix click behavior for email thread previews
* Add dynamic styling to EmailThreadPreview component
* refactor to respect the convention
* Store compact view status
* Rename to isCompact
* Fixes
---------
Co-authored-by: Thomas Trompette <thomast@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
* Add rate limiting in the server using built in Nest.js capability
* Generatekey based on ip address when an http request is sent
* Update env var types to number for ttl and limit
* Remove unused env variables
* Use getRequest utility function
* fix: remove dist from path
* fix: adding .env variables
* fix: remove unused functions
* feat: throttler plugin
* Fix according to review
---------
Co-authored-by: Jérémy Magrin <jeremy.magrin@gmail.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
* Added sanitize funtion to sanitize the link input of the companies record
* Enabled Eslint
* FIXED: Sanitize www. and query params
Added logic to sanitize both www and query params in the link input.
* fix: fix useSpreadsheetPersonImport tests
* Refactored sanitizeLink function at packages/twenty-front/src/modules/object-record/utils/sanitizeLinkRecordInput.ts
Co-authored-by: Thaïs <guigon.thais@gmail.com>
---------
Co-authored-by: Thaïs <guigon.thais@gmail.com>
* Rename recordPosition into position
* Fix according to review
---------
Co-authored-by: Thomas Trompette <thomast@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>