iamsivin
a19610a23b
chore: fix border color
2024-12-09 21:53:20 +05:30
Sivin Varghese and GitHub
6a986224cf
Merge branch 'develop' into feat/conversation-screen
2024-12-09 21:45:22 +05:30
472f6d9345
feat: Ability to lock the conversation to a single thread in API channels ( #10329 )
...
Added the possibility to mark as a single conversation in the API type
inbox. This allows the conversation builder to search for the last
conversation.
I thought about searching for the last conversation with created_at:
desc order, as is done in some channels... but I didn't change the way
the conversation is searched.
Fixes : #7726
Co-authored-by: Sojan Jose <sojan@pepalo.com >
2024-12-09 23:36:17 +08:00
Shivam Mishra and GitHub
2ce7c8b845
fix: sidebar collapsed on reload ( #10561 )
...
When reloading a page, the sidebar item that is actively selected is
collapsed by default. This PR fixes it by expanding it on reload
2024-12-09 15:59:26 +05:30
iamsivin
f3c4475487
chore: Update sidebar colors
2024-12-08 21:25:44 +05:30
iamsivin
d0310611c0
chore: Clean up
2024-12-08 21:06:32 +05:30
iamsivin
b4d9ccf3d8
chore: MInor fix
2024-12-08 21:05:47 +05:30
iamsivin
d609889747
chore: More changes
2024-12-08 20:41:11 +05:30
Sivin Varghese and GitHub
919e080b83
Merge branch 'develop' into feat/conversation-screen
2024-12-07 11:37:16 +05:30
d902bb1d6f
fix: Remove duplicate contactable inbox in the conversation form ( #10554 )
...
---------
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-06 12:31:01 -08:00
iamsivin
c8b66e74db
chore: More changes
2024-12-06 23:29:54 +05:30
iamsivin
1f4c4d759b
chore: conversation view
2024-12-06 23:09:31 +05:30
iamsivin
49b0ba28aa
chore: conversation card
2024-12-06 23:08:45 +05:30
iamsivin
7b4a83091b
chore: conversation list header
2024-12-06 23:08:28 +05:30
iamsivin
431a1b72b7
chore: Update button colors
2024-12-06 23:07:42 +05:30
Sivin Varghese and GitHub
1b430ffae2
fix: New compose conversation form ( #10548 )
2024-12-06 15:40:06 +05:30
Sivin Varghese and GitHub
afb3e3e649
fix: Fix issues with contact routes in old navigation sidebar ( #10547 )
2024-12-05 22:46:57 -08:00
Shivam Mishra and GitHub
3fd585f40b
feat: Throttle meta request for large chat size ( #10518 )
...
For large accounts with huge volumes of messages, it can be very
wasteful to make the meta request so often. It also puts un-necessary
load on the DB bombarding it with so many requests. This PR fixes it by
throttling the requests to 5 seconds for all users with more than 1000
accessible chats.
### Why not cache this value in the backend?
Well, it's a bit tricky, since a user can have different permissions
over inboxes and can see different chats, maintaining a cache for each
of them is not effective, besides the requests will reach the server
anyway.
2024-12-05 22:35:30 -08:00
b116ab5ad3
feat(v4): Compose new conversation without multiple clicks ( #10545 )
...
---------
Co-authored-by: Pranav <pranav@chatwoot.com >
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-05 20:16:29 -08:00
67c90231b6
feat: Add compose conversation components ( #10457 )
...
Co-authored-by: Pranav <pranav@chatwoot.com >
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-05 16:31:47 -08:00
Sivin Varghese and GitHub
41106bccb7
chore: Fix issues with Contact pages ( #10544 )
2024-12-05 14:24:10 -08:00
cdff624a0a
feat: update notification settings ( #10529 )
...
https://github.com/user-attachments/assets/52ecf3f8-0329-4268-906e-d6102338f4af
---------
Co-authored-by: Pranav <pranav@chatwoot.com >
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-05 19:05:04 +05:30
Sivin Varghese and GitHub
d635be4b2a
fix: Fetch assignable agents in expanded layout ( #10540 )
2024-12-04 21:26:00 -08:00
Sivin Varghese and GitHub
f7b0d5dbe2
fix: Reset contact attributes when form is updated ( #10539 )
2024-12-04 21:25:28 -08:00
3edc0542cc
fix: Fix issue with profile picture not updating ( #10532 )
...
This PR resolves the issue with updating the profile picture in the profile settings.
**Cause of issue**
The issue can be reproduced with the old `ProfileAvatar.vue` component.
While the exact reason is unclear, it seems related to cases where the
file might be `null`.
**Solution**
Replaced the old `ProfileAvatar.vue` with `Avatar.vue` and tested it. It
works fine. I’ve attached a loom video below.
Fixes https://linear.app/chatwoot/issue/CW-3768/profile-picture-bug
Co-authored-by: Pranav <pranav@chatwoot.com >
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-04 15:02:29 -08:00
bf58a18af4
fix: Update contact details page errors ( #10536 )
...
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-04 13:58:53 -08:00
Shivam Mishra and GitHub
9b6830a610
fix: Update UI issues with sidebar ( #10535 )
...
This PR fixes a few UI issues with the sidebar
1. `z-index` issues with sidebar dropdowns
2. Move the event listener to the root of the dropdown container, it
allows more consistent behaviour of the trigger, earlier the click on
the trigger when the dropdown was open would cause the container to
re-render
3. Use `perserve-open` for the status switcher menu item in the profile
menu.
4. Use `sessionStorage` instead of `localStorage` to preserve sidebar
dropdown info. When opening the dashboard without directly going to a
specific route, any previous known item would get expanded even if it's
link was not active, this caused issues across tabs too, this fixes it.
5. Use `snakeCaseKeys` instead of `decamelize` we had two packages doing
the same thing
6. Update `vueuse` the new version is vue3 only
2024-12-04 13:48:12 -08:00
769b7171f4
feat(v4): Add new contact details screen ( #10504 )
...
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-12-03 21:29:47 -08:00
Vishnu Narayanan and GitHub
d4b6f710bd
chore(heroku): Switch heroku stack to the latest stack heroku-24 ( #10085 )
...
# Pull Request Template
## Description
- Heroku has marked `heroku-20` stack as EOL by April 2025
- https://help.heroku.com/NPN275RK/heroku-20-end-of-life-faq
- https://devcenter.heroku.com/articles/heroku-24-stack
Fixes https://linear.app/chatwoot/issue/CW-3552/upgrade-heroku-stack-to-heroku-24
2024-12-02 18:53:59 -08:00
50e7ceb19b
chore(deps): bump rails-html-sanitizer from 1.6.0 to 1.6.1 ( #10528 )
...
Bumps
[rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer )
from 1.6.0 to 1.6.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rails/rails-html-sanitizer/releases ">rails-html-sanitizer's
releases</a>.</em></p>
<blockquote>
<h2>1.6.1 / 2024-12-02</h2>
<p>This is a performance and security release which addresses several
possible XSS vulnerabilities.</p>
<ul>
<li>
<p>The dependency on Nokogiri is updated to v1.15.7 or >=1.16.8.</p>
<p>This change addresses CVE-2024-53985 (<a
href="https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-w8gc-x259-rc7x ">https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-w8gc-x259-rc7x </a>).</p>
<p><em>Mike Dalessio</em></p>
</li>
<li>
<p>Disallowed tags will be pruned when they appear in foreign content
(i.e. SVG or MathML content),
regardless of the <code>prune:</code> option value. Previously,
disallowed tags were "stripped" unless the
gem was configured with the <code>prune: true</code> option.</p>
<p>The CVEs addressed by this change are:</p>
<ul>
<li>CVE-2024-53986 (<a
href="https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-638j-pmjw-jq48 ">https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-638j-pmjw-jq48 </a>)</li>
<li>CVE-2024-53987 (<a
href="https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-2x5m-9ch4-qgrr ">https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-2x5m-9ch4-qgrr </a>)</li>
</ul>
<p><em>Mike Dalessio</em></p>
</li>
<li>
<p>The tags "noscript", "mglyph", and
"malignmark" will not be allowed, even if explicitly added to
the allowlist. If applications try to allow any of these tags, a warning
is emitted and the tags
are removed from the allow-list.</p>
<p>The CVEs addressed by this change are:</p>
<ul>
<li>CVE-2024-53988 (<a
href="https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-cfjx-w229-hgx5 ">https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-cfjx-w229-hgx5 </a>)</li>
<li>CVE-2024-53989 (<a
href="https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-rxv5-gxqc-xx8g ">https://github.com/rails/rails-html-sanitizer/security/advisories/GHSA-rxv5-gxqc-xx8g </a>)</li>
</ul>
<p>Please note that we <em>may</em> restore support for allowing
"noscript" in a future release. We do not
expect to ever allow "mglyph" or "malignmark",
though, especially since browser support is minimal
for these tags.</p>
<p><em>Mike Dalessio</em></p>
</li>
<li>
<p>Improve performance by eliminating needless operations on attributes
that are being removed. <a
href="https://redirect.github.com/rails/rails-html-sanitizer/issues/188 ">#188</a></p>
<p><em>Mike Dalessio</em></p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rails/rails-html-sanitizer/blob/main/CHANGELOG.md ">rails-html-sanitizer's
changelog</a>.</em></p>
<blockquote>
<h2>1.6.1 / 2024-12-02</h2>
<p>This is a performance and security release which addresses several
possible XSS vulnerabilities.</p>
<ul>
<li>
<p>The dependency on Nokogiri is updated to v1.15.7 or >=1.16.8.</p>
<p>This change addresses CVE-2024-53985 (GHSA-w8gc-x259-rc7x).</p>
<p><em>Mike Dalessio</em></p>
</li>
<li>
<p>Disallowed tags will be pruned when they appear in foreign content
(i.e. SVG or MathML content),
regardless of the <code>prune:</code> option value. Previously,
disallowed tags were "stripped" unless the
gem was configured with the <code>prune: true</code> option.</p>
<p>The CVEs addressed by this change are:</p>
<ul>
<li>CVE-2024-53986 (GHSA-638j-pmjw-jq48)</li>
<li>CVE-2024-53987 (GHSA-2x5m-9ch4-qgrr)</li>
</ul>
<p><em>Mike Dalessio</em></p>
</li>
<li>
<p>The tags "noscript", "mglyph", and
"malignmark" will not be allowed, even if explicitly added to
the allowlist. If applications try to allow any of these tags, a warning
is emitted and the tags
are removed from the allow-list.</p>
<p>The CVEs addressed by this change are:</p>
<ul>
<li>CVE-2024-53988 (GHSA-cfjx-w229-hgx5)</li>
<li>CVE-2024-53989 (GHSA-rxv5-gxqc-xx8g)</li>
</ul>
<p>Please note that we <em>may</em> restore support for allowing
"noscript" in a future release. We do not
expect to ever allow "mglyph" or "malignmark",
though, especially since browser support is minimal
for these tags.</p>
<p><em>Mike Dalessio</em></p>
</li>
<li>
<p>Improve performance by eliminating needless operations on attributes
that are being removed. <a
href="https://redirect.github.com/rails/rails-html-sanitizer/issues/188 ">#188</a></p>
<p><em>Mike Dalessio</em></p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/5e96b19bbb934284e675109851bd82429622bb6e "><code>5e96b19</code></a>
version bump to v1.6.1</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/383cc7c17f5a6aafed79adff1c419da31a414878 "><code>383cc7c</code></a>
doc: update CHANGELOG with assigned CVEs</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/a7b0cfe103ff5d8b17d77fb3660589522dd6bcad "><code>a7b0cfe</code></a>
Combine the noscript/mglyph prevention blocks</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/5658335ede931a47d02b8aa4d3b5800bd3184158 "><code>5658335</code></a>
Merge branch 'h1-2509647-noscript' into
flavorjones-2024-security-fixes</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/65fb72f07e875b401bbec479c2a5a3d3b10ad338 "><code>65fb72f</code></a>
Merge branch 'h1-2519936-mglyph-foster-parenting' into
flavorjones-2024-secur...</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/3fe22a8b892361c8463f50f4f4a5d08e299c62a2 "><code>3fe22a8</code></a>
Merge branch 'h1-2519936-foreign-ns-confusion' into
flavorjones-2024-security...</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/d7a94c125209a9611308fbfdb7420a8786d7e80f "><code>d7a94c1</code></a>
Merge branch 'h1-2503220-nokogiri-serialization' into
flavorjones-2024-securi...</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/3fd6e650f991ce687961da45038b77504114d237 "><code>3fd6e65</code></a>
doc: update CHANGELOG</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/16251735e36ebdc302e2f90f2a39cad56879414f "><code>1625173</code></a>
fix: disallow 'noscript' from safe lists</li>
<li><a
href="https://github.com/rails/rails-html-sanitizer/commit/a0a3e8b76b696446ffc6bffcff3bc7b7c6393c72 "><code>a0a3e8b</code></a>
fix: disallow 'mglyph' and 'malignmark' from safe lists</li>
<li>Additional commits viewable in <a
href="https://github.com/rails/rails-html-sanitizer/compare/v1.6.0...v1.6.1 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/chatwoot/chatwoot/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pranav <pranav@chatwoot.com >
2024-12-02 18:23:58 -08:00
Sivin Varghese and GitHub
062587487a
feat: Improve Contact list ( #10522 )
2024-12-02 18:23:41 -08:00
86bd339a47
chore(deps): bump vue-i18n from 9.14.0 to 9.14.2 ( #10526 )
...
Bumps
[vue-i18n](https://github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n )
from 9.14.0 to 9.14.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/intlify/vue-i18n/releases ">vue-i18n's
releases</a>.</em></p>
<blockquote>
<h2>v9.14.2</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>🔒 Security Fixes</h3>
<ul>
<li>fix: XSS vulnerability with prototype pollution on AST: <a
href="https://github.com/intlify/vue-i18n/security/advisories/GHSA-9r9m-ffp6-9x4v ">https://github.com/intlify/vue-i18n/security/advisories/GHSA-9r9m-ffp6-9x4v </a></li>
<li>fix: prototype pollusion on deepCopy: <a
href="https://github.com/intlify/vue-i18n/security/advisories/GHSA-hjwq-mjwj-4x6c ">https://github.com/intlify/vue-i18n/security/advisories/GHSA-hjwq-mjwj-4x6c </a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/intlify/vue-i18n/compare/v9.14.1...v9.14.2 ">https://github.com/intlify/vue-i18n/compare/v9.14.1...v9.14.2 </a></p>
<h2>v9.14.1</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>🐛 Bug Fixes</h3>
<ul>
<li>fix: messages <code>deepCopy</code> mutates <code>src</code>
arguments by <a
href="https://github.com/BobbieGoede "><code>@BobbieGoede</code></a> in
<a
href="https://redirect.github.com/intlify/vue-i18n/pull/1975 ">intlify/vue-i18n#1975</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/intlify/vue-i18n/compare/v9.14.0...v9.14.1 ">https://github.com/intlify/vue-i18n/compare/v9.14.0...v9.14.1 </a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/intlify/vue-i18n/commit/5448139375d123c90019f372404de6138ff6b588 "><code>5448139</code></a>
release: v9.14.2</li>
<li><a
href="https://github.com/intlify/vue-i18n/commit/af67265181fa776dab006afbab85de6a47a34d66 "><code>af67265</code></a>
release: v9.14.1</li>
<li>See full diff in <a
href="https://github.com/intlify/vue-i18n/commits/v9.14.2/packages/vue-i18n ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/chatwoot/chatwoot/network/alerts ).
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-02 18:16:33 -08:00
Sivin Varghese and GitHub
0ab7accd3f
feat: Contact filter preview ( #10516 )
...
# Pull Request Template
## Description
**Screenshots**
<img width="986" alt="image"
src="https://github.com/user-attachments/assets/8df44237-ec51-45d3-aed3-518cded42f5d ">
<img width="986" alt="image"
src="https://github.com/user-attachments/assets/2213ce2e-2461-41f0-a05a-0f955a4d7e3a ">
**Story**
<img width="992" alt="image"
src="https://github.com/user-attachments/assets/f8e25fe2-11e8-4b9b-8d0b-357f9b7b6e39 ">
2024-12-02 16:22:05 +05:30
Vishnu Narayanan and GitHub
e95680e800
feat: remove stale ONLINE_PRESENCE contact keys in redis ( #9558 )
...
50% of Redis memory size comes from ONLINE_PRESENCE keys. This PR adds a
periodic job to remove stale keys from all accounts.
2024-12-02 15:47:54 +05:30
Sivin Varghese and GitHub
1c12fbceb9
feat: New contacts advanced filter ( #10514 )
2024-11-29 10:55:15 +05:30
a50e4f1748
feat(v4): Update the design for the contacts list page ( #10501 )
...
---------
Co-authored-by: Pranav <pranavrajs@gmail.com >
Co-authored-by: Pranav <pranav@chatwoot.com >
2024-11-27 20:07:20 -08:00
25c61aba25
feat(v4): Add new conversation filters component ( #10502 )
...
Co-authored-by: Pranav <pranav@chatwoot.com >
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-11-27 20:05:54 -08:00
Sojan Jose and GitHub
94c918e468
chore: [Snyk] Security upgrade google-cloud-storage from 1.44.0 to 1.48.0 ( #10148 )
...
- bump up gems based on snyk security alerts
2024-11-27 20:31:01 +08:00
Nguyễn Trần Chung and GitHub
ea616d6a93
chore: clear apt warning in cwctl ( #10488 )
2024-11-27 17:08:54 +05:30
35702457ed
feat: Update design for report pages ( #10506 )
...
<img width="1440" alt="Screenshot 2024-11-26 at 8 38 57 PM"
src="https://github.com/user-attachments/assets/f752157c-6134-42cb-8211-ce636ea9e4d6 ">
<img width="1439" alt="Screenshot 2024-11-26 at 8 40 47 PM"
src="https://github.com/user-attachments/assets/580b1f61-68bc-489b-9081-b0aeb402f31d ">
---------
Co-authored-by: Shivam Mishra <scm.mymail@gmail.com >
2024-11-27 18:10:15 +08:00
d569713b66
fix: Fix z-index issue on account switcher ( #10505 )
...
Co-authored-by: Pranav <pranav@chatwoot.com >
2024-11-26 19:59:16 -08:00
Sojan Jose and GitHub
12a82b6459
fix: avoid Slack file upload API for fallback messages ( #10461 )
...
Skip calling the Slack file upload API for message types such as
fallback (e.g., Facebook and location messages) that lack actual file
data in attachments. This prevents unnecessary API calls and resolves a
Sentry error currently occurring in production.
fixes: https://github.com/chatwoot/chatwoot/issues/10460
2024-11-26 12:56:40 +08:00
Sivin Varghese and GitHub
b9d888d8ab
feat: Add contact header components ( #10498 )
2024-11-25 19:59:04 -08:00
Sivin Varghese and GitHub
ba1b02e274
feat: Add contact empty state components ( #10499 )
2024-11-25 19:50:33 -08:00
b0287fe389
feat: Add conditions row component ( #10496 )
...
---------
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-11-25 16:33:12 -08:00
c23cd094f9
feat(v4): Add filter input components ( #10493 )
...
This PR adds three components along with stories
1. MultiSelect - This is used for filter values, allowing multiple values and folding of values where there are too many items
2. SingleSelect - This is used for filter values, allows selecting and toggling a single item
3. FilterSelect - This is used for operators and others, it allows icons and labels as well as toggling them using props. The v-model for this binds just the final value unlike the previous two components with bind the entire object.
---------
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-11-25 11:52:28 -08:00
Sivin Varghese and GitHub
e9ba4200b2
feat: Add custom attributes components ( #10467 )
2024-11-24 16:46:00 -08:00
0f659224a7
feat: async update of article [CW-3721] ( #10435 )
...
### The problem
Writing in the text editor can be very frustrating, the reason is that
the editor had a debounced save method which would push the article to
the backend and update the current state. This however is a bad idea,
since the can take anywhere between 100-300ms depending on network
conditions.
While this would be in progress, the article is still being edited by
the user. So at the end of the network request, the state returned from
the backend and the current state in the editor is diverged. But since
the update happens anyway, the editor would prepend older context.
```
Time -->
User Action: [Edit 1] ---> [Edit 2] ---> [Edit 3]
Backend Save: Save Req (Edit 1) ----> Response (Edit 1)
Resulting Editor State: [Edit 3] + [Edit 1] (Outdated state prepended)
```
### The solution
The solution is to unbind the article from the backend state, ensuring
that the article editor is the source of truth and ignoring the
responses. This pull request does this by adding an asynchronous save
functionality. The changes include adding a new `saveArticleAsync` event
and ensuring that the local state is not updated unnecessarily during
asynchronous saves.
```
Time -->
User Action: [Edit 1] ---> [Edit 2] ---> [Edit 3]
Backend Save: Save Req (Edit 1) ----> Response (ignored)
Resulting Editor State: [Edit 3] (Consistent and up-to-date)
```
Added the following two debounced methods
These complementary debounce methods prevent unnecessary re-renders
while ensuring backend is in sync. `saveArticleAsync` preserves the
editor as the source of truth, while `saveArticle` manages periodic
state updates from the backend with a delay large enough to safely
assume that the user has stopped typing
Method | Delay | Behavior
-- | -- | --
`saveArticleAsync` | 400ms | Sends data to backend and ignores the
response
`saveArticle` | 2.5s | Sends data and updates local state with the
backend response
### How to test
1. Remove the following line
https://github.com/chatwoot/chatwoot/blob/dc042f6ddcb4e108795ff83bb57f8d92c6a2b90a/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticleEditorPage/ArticleEditor.vue#L64
1. Update the latency here to 400 (P.S. the diff shows the latency to be
600, but that was added as a stop-gap solution)
https://github.com/chatwoot/chatwoot/blob/dc042f6ddcb4e108795ff83bb57f8d92c6a2b90a/app/javascript/dashboard/components-next/HelpCenter/Pages/ArticleEditorPage/ArticleEditor.vue#L51
1. Set the browser network latency to Slow 3G or 3G
1. Start writing on the editor, try fixing typos with backspace or
moving around with the cursor
---------
Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com >
Co-authored-by: Pranav <pranav@chatwoot.com >
2024-11-21 19:38:08 -08:00
Sivin Varghese and GitHub
2dae4b22a2
feat: Add Label Input components ( #10480 )
2024-11-21 13:57:43 -08:00
cf6ef11b9f
feat: Add contact merge form component ( #10478 )
...
Co-authored-by: Pranav <pranavrajs@gmail.com >
2024-11-21 13:52:25 -08:00