* MM-46410: adds urgency on mention counts
We have introduced priority for posts in
https://github.com/mattermost/mattermost-webapp/pull/10951.
We do need to color the mention badges in the webapp with a prominent
color when a mention is posted in an urgent message.
A thread has urgent mentions if the root post is marked as urgent, and
the replies contain mentions to the user viewing the thread.
This PR adds two columns, urgentmentioncount, and isurgent, in
channelmembers, and threads tables respectively.
Furthermore when asking for team/thread mention counts, we also return
urgent mention counts for the user.
* Fixes method in tests
* empty commit
* Fixes method call
* Fixes single thread response is_urgent
* Fixes errors
* Fixes mysql migration and adds graphql schema
* Fixes tests
* Refactors IsUrgent and Adds PostsPriority table
Changes:
- removes is_urgent from the threads table
- adds a new table to hold posts priorities
- refactors priority out of the props and into the new table
* Fixes
* Adds translation strings
* Fixes migrations and tests
* Fixes tests
* empty
* Adds Priority to Copy
* empty
* Fixes priority not saved when boards is enabled
We are nilifying Metadata when post.ForPlugin(), which didn't save Priority
for a post when Boards was enabled.
This commit copies metadata again to the post, so metadata are
reinstated.
* Fixes tests
* Adding store tests and fixes syntax error
* Uses threads.ThreadTeamId
* Fixes error
* Adds UrgentMentionCount in graphql api test
* Fetches post priority in batches
* Addresses review comments
* Restore only priority on create post
* Fixes tests
* Nits
* Some refactoring
* Fixes get thread options when post priority enabled
* Adds missing translation
* Use the constant instead of "urgent" string
* Renames urgent constant
* MM-47750: Adds PostAcknowledgements table and apis
- Adds post acknowledgement api/app/store methods to be able to save and
delete post acknowledgements by users.
- Adds wesbsocket events for acknowledgement created/deleted
- Returns post acknowledgements in the post's metadata
* Empty
* Fixes incorrect urgent count when marking a post as unread
* Adds license
* Fixes ACK api, and adds tests
* Fixes vet
* Fixes tests
* Addresses review comments
* Remove unnecessary lines
* Adds config option and changes return of delete ack
* Empty
* Empty
* Enable config by default
* Fixes intl
* Fixes test after setting config default true
* Changes endpoints to PostForUser
* Avoids replica lag
* Fixes error in merge
* Fixes RetryLayer tests due to merge
* Empty
* Empty
* Empty
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* MM-46410: adds urgency on mention counts
We have introduced priority for posts in
https://github.com/mattermost/mattermost-webapp/pull/10951.
We do need to color the mention badges in the webapp with a prominent
color when a mention is posted in an urgent message.
A thread has urgent mentions if the root post is marked as urgent, and
the replies contain mentions to the user viewing the thread.
This PR adds a column, urgentmentioncount, in channelmembers.
Furthermore when asking for team/thread mention counts, we also return
urgent mention counts for the user.
Adds a new table to hold posts priorities
Refactors priority out of the props and into the new table
We are nilifying Metadata when post.ForPlugin(), which didn't save Priority
for a post when Boards was enabled.
This commit copies metadata again to the post, so metadata are
reinstated.
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Vishal Choudhary <vish9812@gmail.com>
* Call Cloud HandleLicenseChange when license is changed in a cloud context
* Remove UpdateSubscriptionFromHook as its no longer necessary
* Update mocks
* Remove another reference
* Remove translation
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* MM-48186: Add a new API endpoint to add a user to their default GroupChannels and GroupTeams.
* MM-48186: Removed unrelated lint fixes.
* MM-48186: Removed variable from previous iteration.
* MM-48186: Adds translation.
* MM-48186: Not upgrading golang.org/x/text in this pr.
* MM-48186: Validate user ID and auth service.
* MM-48186: Use user id from struct.
* MM-48186: Added basic client test.
* MM-48186: Adds empty translation.
* MM-48186: Added translations.
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Creating the post in a separate goroutine would create a race condition
because that method also calls GetChannel. This can cause a bug
if the cache was wiped before the the other goroutine would get
a chance to update the cache. And if that happens, then
it would populate the cache with the old value.
Pseudo-code
```
func deleteChannel() {
go func() {
getFromCache()
}()
updateDB()
wipeCache() // a
}
func getFromCache() {
err := checkCache()
if err == ErrNotFound {
getFromDB() // x
updateCache() // y
}
}
func Test() {
deleteChannel()
getFromCache()
}
```
If the sequence of events happen like
- x
- a
- y
Then the getFromCache() call later will get the wrong
value from cache.
The fix is to make the call synchronous.
https://mattermost.atlassian.net/browse/MM-47465
Special thanks to @noxer for finding the root cause.
```release-note
NONE
```
* Parse and reconstruct URI, instead of using string concatenation
* Rename parse error, add test
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
There were certain queries which did not filter
by the current schema, but hardcoded public schema.
Apart from that, we always filter with the current schema
which allows connection proxies to run multiple MM within
a single DB.
```release-note
NONE
```
* Add teamId to Threads table
* Get rid of multiple teamId reads
* Fix failed test
* Inline ThreadStore.MarkAllAsUnreadByTeam
The query to `MarkAllAsUnreadByTeam` first fetched all thread memberships, then fed just the ids back to a second query to ensure all are marked as unread. Optimize this by simply doing a single `UPDATE` query with the necessary joins.
Co-authored-by: iomodo <wineson@gmail.com>