* fix deleting reminders
* schedule reminders if iffy is disabled
* fix unit test
* clean up code
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Add Iffy API key variable
* WIP using Iffy to scan comments
* Use Iffy for workflow body scanning
* Update entity
* Clean up
* Update test
* Fix client id
* Fix test
* Add whitelistWorkflows to user
* Do not autolock whitelisted users
* Add endpoint to whitelist a user
* Get users data - include whitelistWorkflows
* Whitelist a user on the user admin page
* Fix typo
* Add test
* Use translations
* Add `updateWhitelistWorkflows` to `UserRepository`
* Use i18 for strings
* Rename to whitelistWorkflows
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* Add translations in respective files
* implement multilingual support for email templates
* fix: indentation in common.js & typos in common.js and update.handler.ts
* Add akismet package to tasker
* Create scanWorkflowBody task
* Schedule workflow body scan
* Add AKISMET_API_KEY .env
* Auto lock user if spam is detected
* Uncommit key
* Add safe param to workflow step
* Migration for safe field
* Do not process workflow steps is `safe` is false
* Update migration to set previous records to true
* Address comments
* Refactor `scheduleWorkflowNotifications` to accept an object
* If new steps or editing old ones send to tasker
* Call `scheduleWorkflowNotifications` in task
* Fix `IS_SELF_HOSTED`
* Remove unused function
* Make `safe` optional in schema
* Type fix
* Revert "Make `safe` optional in schema"
This reverts commit d0964702affa87c35562300301473d25635c565b.
* Revert "Type fix"
This reverts commit d9a031303269a2994ae46f576ab2a3d31e4d977b.
* Type fixes
* Type fixes
* Address comments
* Fix tests
* Add tests
* Update tests
* Typo fix
* Update `safe` to `verifiedAt`
* feat: Compare workflow reminder bodies to default template (#19060)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* refactor: `emailReminderTemplate` to accept object as param (#19288)
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* Refactor `scheduleEmailReminders`
* Refactor `create.handler` for new workflows
* Refactor `emailReminderManager`
* Refactor `getEmailTemplateText`
* Fix typo
* Type fix - whatsapp plain text template imports
* Type fix - no template found
* Type fix - add `isBrandingDisabled` to `emailReminderTemplate`
* Add workflow and user to prisma mock
* Fix imports for akismet dependencies
* Record user lock reason
* Undo linting changes
* Fix tests
* New workflow, at verify created step
* Handle if `SCANNING_WORKFLOW_STEPS` is toggled
* Move `verifiedAt` checks to specific schedule functions
- `scheduleWhatsappReminder`
- `scheduleEmailReminder`
- `scheduleSMSReminder`
* Update logic
* Do not fallback verifiedAt
* Add comment to next.config.js
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Closes#19219
* Add booking incomplete actions table
* Add incomplete booking page tab
* Add `getincompleteBookingSettings` trpc endpoints
* Add incomplete booking page
* Abstract enabled apps array
* Handle no enabled credentials and no actions
* Add enabled field to incomplete booking action db record
* Add new write record entries
* UI add separation between switch and inputs
* Fix typo
* clean up
* Add saveIncompleteBookingSettings endpoint
* Save incomplete booking settings
* Fix language around when to write to field
* Add `credentialId` to action record
* Choose which credential to assign to action
* Save credential to action
* Revert "Save credential to action"
This reverts commit ba6a1c808baed54f6d3d4c6155cf192c813d0696.
* Revert "Choose which credential to assign to action"
This reverts commit 968f6e5295d098c64abe95268afd1fa139a175ba.
* Revert "Add `credentialId` to action record"
This reverts commit 579f9ff4167b65aa987659e4e8f8c26f9e773317.
* Add credentialId to action record - rewrite migration file
* Revert "Add credentialId to action record - rewrite migration file"
This reverts commit 2843a92c61820e7f7a1614a557d3f7ea96342107.
* Revert "Add booking incomplete actions table"
This reverts commit 7ec75bef4a0f0a9d07be0142da64c49d739439ea.
* Revert "Add enabled field to incomplete booking action db record"
This reverts commit d279a1da05819eafa8fc5d664e3be733e0687e8d.
* Write migration in single commit
* Rename table
* Rename table - remove underscores
* Remove credential relationship
* Type fix - changing table name
* Fix table name
* Change writeToRecordObject to object
* Salesforce add incomplete booking, write to record
* Add incomplete booking actions to `triggerFormSubmittedNoEventWebhooks`
* Remove console.log
* Type fixes
* Type fixes
* Iterate if incompleteBookingActions
* Choose which credential to assign to action
* Save credential to action
* Fix getServerSideProp changes
* Type fix
* Type fix
* Type fix
* Type fix
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* feat: AI description - DB model + frontend + backend (fetch only)
* fix types and add validation to backend
* improve log
* improve
* import type
* add EventTypeTranslationRepository
* fix replexica error
* fix replexica error
* fix
* fix test
* wip
* wip
* add createManyDescriptionTranslations method
* improve logic
* refactor
* update replexica type
* improve typing
* Renamed descriptionTranslations to fieldTranslations
* log errors in replexica service
* handle translations in background
* don't create, upsert instead
* make sure that description is updated
* simplify
* fix
* Update packages/trpc/server/routers/viewer/eventTypes/update.handler.ts
* improve filter logic in frontend
* implement background job using Tasker
* update schema
* update schema again
* rename
* rename id to uid
* add migration
* fix type
* update
* update schema and migration sql
* fix migration
* fix type check
* fix type check 2
* improve find logic in EventMeta
* add more validation
* add logger
* rename
* upgrade replexica/sdk to 0.7.0
* upgrade replexica to 0.7.0
* use batchLocalizeText
* add comments
* override browser locale if user is a signed in calcom user
* fix type in replexica
* fix migration sql
* fix type
* use dynamic import
* do not use batchLocalizeText
* chore: drop sourceLang, targetLang and id columns
* fix
* wip
* add more validations
* fix type error
* address comment
* refactor
* update booking page to use translated title
* fix type error
* fix
* revert yarn.lock changes
* remove unused import
* remove duplication migrate.sql file
* fix test
* remove test tags
* fix function name
* refactor
* fix type check
* use Promise.all
* remove unneeded code
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com>
* fix: skip sending webhook in case of duplicate response
* fix: type err
* fix: tests
* refactor: only check email
* fix: type err
* chore: changed it to 60 min
* fix: use lowercase