* Bugfix: Fixed quoted text parsing in incoming email
We had changed the support email from an account based
only value to account based with fallback on global config
and environment variable.
Incoming email quoted text parsing was still based on
account based support email. Changed this to utilize
the newly introduced fallback values from global config
and environment for parsing quoted text.
* Bugfix: Added one more sender agnostic regex for quoted text parsing
* Bugfix: Private notes in emails
Private notes were sent in the emails as part of
conversation continuity. Fixed this issue.
Also made the changes to not even queue the mails
if message is a private note.
* Bugfix: Change issue with featurable in signup - passing array
* Bugfix: Added specs for checking private notes being sent in email
* Chore: Feature lock email settings in UI
The email settings under account settings needed to be
feature locked in a way different from teh current way for it
to be enabled for accounts in a self hosted scenario.
Some refactorings were also done along with this change.
1. There was a feature flag defined in code in account model called
domain_emails_enabled was used to check if the inbound emails was
enabled for the account. But there was already a feature flag called
"inbound_emails" defined in features.yml. So changed to use this to
check if inbound emails are enabled for an account.
2. Renamed and re-purposed existing `domain_emails_enabled` to
`custom_email_domain_enabled` to use for feature toggling the UI
for email settings.
3. To enable & disable multiple features using the featurable concern
we were passing an array of values. Changed this to accept a comma
separated set of values.
* Chore: Feature lock email settings in UI
Fixed the specs for accounts controller & removed
unneccessary code from Account seetings component in UI
* Chore: Convert newlines to <br>s
Removed the layout used while sending replies in
conversation continuity.
Converted the newlines in the messages to <br/> tags
for the correct HTML rendering.
* Chore: Bug fix in reply email domain
Renamed the function custom_email_domain_enabled to
inbound_email_enabled.
Fixed bug on setting reply emails's domain.
For the outgoing emails which has dependency on the incoming
part as well like the conversation continuity part, some of the
config variables used were entirely based on the account attributes.
But this is not true in case of self hosted situations where you have
multiple accounts and have a common config for incoming emails.
So moved out some of the attributes entirely dependednt on the account
to ENV with a fallback to the Global config.
Also, with this changes the name of the agent will be shown in the
email clinet with in the conversation rather than just the support
email address. This has a huge UX impact on the cutomer.
Modified all the necessary unit tests to reflect these changes.
Updated the .env.example file for the new ENV variable.
* Chore: Change the prefix in reply emails
In conversation continuity the reply to email was looking like
reply+to+{some_random_hex_id}@reply.chatwoot.com
Changed the prefix to just `reply` instead of `reply+to`.
* Chore: Change reply email prefix in outbound emails
Changed the prefix from `reply+to+` to just `reply+` in
the reply emails in the converstaion related outbound emails.
Right now as part of conversation continuity, we are using the
ConversationReplyMailer which sends a summary of messages including
the incoming messages when an agent replies. Ideally, we want
to send only the reply of that agent and not a summary when
Conversation continuity is enabled. Added the functionality
to send the reply email without summary. Added required unit
tests to cover the changes.
ref: #1048
* Update Private Note border color
* Added box-shadow to chat bubbles
* Adjustments as suggested in PR #992
Adjustments as suggested in PR #992
* Reintroduced @include border-normal; in L-253
Co-authored-by: Pranav Raj S <pranav@thoughtwoot.com>
- Update sidebar design
- Move every contact data to contacts module
- Revert go to next conversation feature
- Fix issues with new conversation in action cable
- Escape HTML content
- Broadcast event when conversation.contact changes.
Co-authored-by: Sojan <sojan@pepalo.com>
* Added custom Message-ID and In-Reply-To headers for conversation reply emails
* Added new global config for the default domain (This is used in the above headers)
* Added migration to run the config loader to load the new global config value
* The subject of the conversation reply mailer was made static (This is required for threaded emails)
* Added required tests
* Chore: Parse quoted text in incoming emails (#883)
* Parsed the quoted text and replies in incoming emails and store them separately
* Did this parsing for plain text and html part of emails
* In the chat window, we will only show the parsed reply alone
* Conversation mailbox test fixes (#883)
* Feature: Move to the next conversation when I resolve a the current conversation
* check if nextId is present before emitting the event
* use es6 string literals
* use a named variable for better reading
* create a variable for better readability
* better sintax to get clickable element
* after last, go to first chat when resolve
* use state and action to set next chat
* remove not used emit
* clear selected state when there is not next chat
* Remove deprecated scope from FB Channel (#761)
Remove deprecated scope from FB Channel
* Feature: Customise the position of messenger (#767)
Co-authored-by: Nithin David Thomas <webofnithin@gmail.com>
* Bug: Redirect user to set new password screen (#772)
* auto linter
* fix js linter
* sort chats on getter / filter before getting next chat
* Revert not related changes on ConversationCard.vue
* add test for getNextChatConversation getter
* remove not used module
* add test for getAllConversations getter
"canned responses" are no food: "Eingemachte Antwort" -> "Vorgefertigte Antwort"
"open", "closed" status are no verbs, so "Öffnen" -> "Offen", ...
"mine" has nothing to do with mining :) "Bergwerk" -> "Meine"
"home" isn't your home, but the main page "Hauptseite"
"resolve action" is about solutions, not determination, so
"Entschlossenheit" -> "Fall schließen"
"settings" are simply "Einstellungen"
Co-authored-by: Pranav Raj Sreepuram <pranavrajs@gmail.com>
* Feature: Introduce Super Admins
- added new devise model for super user
- added administrate gem
- sample dashboards for users and accounts
Co-authored-by: Pranav Raj Sreepuram <pranavrajs@gmail.com>
* Renamed concern from Feature to Featurable
* Feature: Installation config (#839)
* Added new model installtion config with corresponding migrations and specs
* Created an installation config yml (key value store model)
* Created a config loader module to load the installaltion configs
* Added this to the config loader seeder
* Changed the account before create hook for default feature enabling to use the feature values from installtion config
* Renamed the feature concern to Featurable to follow the naming pattern for concerns
* Added comments and specs for modules and places that deemed necessary
* Refactored config loader to reduce cognitive complexity (#839)