-
Notifications
You must be signed in to change notification settings - Fork 6.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Include extra metadata when clicking an interactive button #12697
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, Thanks @rfoyard for your contribution. This is certainly helpful when developing interactive apps!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR @rfoyard. I think we can improve a bit on the performance side of the code. In general it looks good 👍
app/integration_action.go
Outdated
@@ -69,13 +69,6 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st | |||
close(pchan) | |||
}() | |||
|
|||
cchan := make(chan store.StoreResult, 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code was here to make the db requests asynchronous and improve performance. I would like to keep it here, or is there a reason not to?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This requests the channel from the postId but when the post does not exist, it's useless.
It was not a problem before, but as I need the channel to get the teamId, I would have to make another synchronous request when the post does not exist (to get the channel from the cookie's channelId line 85).
With this change I'm doing only one request to get the channel but if you prefer, I can change it and do another request just when using the cookie.
Just let me know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The usual case is the the cookie is not set and we jump into the else case of L94. Hence, It don't see a problem with just making the request even though we might not need it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I didn't know this was the usual case but with this in mind, I'll rework the PR. Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I changed the requests flow in 1b85d42, just let me know what you think.
Renamed TeamDomain to TeamName.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested and looks good to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM besides by request at https://github.com/mattermost/mattermost-server/pull/12697/files#r336210163
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just one small nit, otherwise LGTM. Thanks for parsing through that complex function!
@hanzei @crspeller This PR reminds me of my earlier proposal to eliminate the dependency on the database, and always use the "cookie" for the action metadata. Thoughts?
3/5 that we want this. Performance is key with post actions. Does this need client side changes? |
@hanzei I believe that all of the client code is in place, we should check what minimum client versions support cookies (including the RN fixes). Let's take this conversation (switching to cookies 100%) out of this ticket though, I'll log a Jira issue for Toolkit to triage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for digging into this 👍
(waiting for the tests) |
Thanks everybody |
Hey @rfoyard, Would you be interested in adding an example usage of this functionality to the demo plugin? This would greatly help with testing this. |
Hey @hanzei, sure, I'll take a look at it next week. |
* master: (70 commits) Run unused against codebase (mattermost#12968) [MM-12623] Create CLI command "config reset" (mattermost#10296) Migrate tests from store/storetest/status_store.go to use test… (mattermost#12873) Fix golangci-lint target (mattermost#12985) [MM-16437] Plugin crashes the server when calling WriteHeader with an invalid http code (mattermost#11276) MM-18060: Include deleted posts in compliance export. (mattermost#12957) [MM-18331] When patching a bot send websocket notification (mattermost#12373) [MM-19473] Fix data race on user login (mattermost#12870) license, openGraph tests: convert to testify (mattermost#12919) oauth_test: use testify (mattermost#12949) [MM-18830] Unhelpful error message when adding bot to a channel before adding to team (mattermost#12844) emoji_test: update to use testify (mattermost#12932) MM-19310 - Wrong validation message when Bot name ends in a . (mattermost#12905) Migrate tests from store/storetest/oauth_store.go to use testify (mattermost#12875) Include extra metadata when clicking an interactive button (mattermost#12697) MM-19553: Generate valid passwords on bulk import. (mattermost#12871) Convert api4/webhook_test.go t.Fatal calls into require/assert calls (mattermost#12904) Fix golangci-lint target for non GOPATH installations (mattermost#12934) MM-17888 Check plugin Helpers minimum server version comments (mattermost#12663) [MM-18898] Stringify plugin.Log* parameters (mattermost#12700) ...
@hanzei I created a draft PR in the demo plugin. |
That's totally fine. 👍 I will review your PR soon. |
Summary
Includes user_name, team_domain and channel_name when clicking an interactive button.
Ticket Link
JIRA: MM-10164
Fixes #12377