-
Notifications
You must be signed in to change notification settings - Fork 2.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
Do not show the service to the user if it is disabled, fixes #6184 #8406
Conversation
This breaks Jasmine, there are specs that have expectations around available services that are no longer true with this PR. |
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.
(see previous comment)
Yep, it should be fixed now. I had to switch to another computer so it took time for |
a882b04
to
700ebec
Compare
OK so I'm confused @SuperTux88 said this to me on IRC:
But actually locally the jasmine tests are green without adding anything else that what I did here. What you are saying is that I should also modify |
When I wrote that I didn't check which fixture is used and where it's generated. I assumed that you didn't re-generate your fixtures locally, so you are still using fixtures that were generated before your change in So in the line below the line you added, you see it loads |
700ebec
to
0c029de
Compare
The related tests are fixed, the current failure in Rspec is unrelated, |
cdac600
to
b3b2a16
Compare
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.
Ideally, this would have a test with a service that's disabled globally but enabled in the user settings, and then confirming that the button isn't showing up. Writing a test for the actual behavior change here, that is.
But I feel adventurous today, so I'm personally not gonna block on that.
@@ -57,7 +57,8 @@ | |||
.btn-toolbar.pull-right#publisher-service-icons | |||
- if current_user.services | |||
- current_user.services.each do |service| | |||
= service_button(service) | |||
- if AppConfig.configured_services.map(&:to_s).include? service.provider |
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 only fixes it for the standard (desktop) UI, but it would also need to be fixed on mobile. And then it probably would be better to just extract a little helper to publisher_helper.rb
that returns a list of all enabled services, which can then be looped over for both UIs (without needing to do additional filters), and is also easier to write a little test for.
@@ -57,7 +57,8 @@ | |||
.btn-toolbar.pull-right#publisher-service-icons | |||
- if current_user.services |
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.
Sidenote, as you didn't change it here, but I don't think this if
is needed, as if there are no services, the list would just be empty, so there is nothing to loop over anyway?
b3b2a16
to
4e6772c
Compare
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.
However, it is hard to test as I can't enable services for my user locally (if you can tell me how to do that).
Just create a dummy service with dummy data on the user manually. You won't be able to post to it, but you can test if the buttons show:
user = User.find_by(username: "test")
user.services << Services::Tumblr.new(nickname: "nick", access_token: "token", access_secret: "secret", uid: "uid", provider: "Tumblr")
user.services << Services::Wordpress.new(nickname: "nick", access_token: "token", access_secret: "secret", uid: "uid", provider: "Wordpress")
app/helpers/publisher_helper.rb
Outdated
current_user.services.each do |service| | ||
return service_button(service) if AppConfig.configured_services.map(&:to_s).include? service.provider | ||
end |
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.
Could you explain me why?
Because doing an each
with a return
doesn't work. If current_user.services
is empty, it will just return the empty array, as the inner return will never trigger. Also if the if
inside the loop is never true (if none of the connected services are actually enabled) it will just return the current_user.services
to the view:
What I meant with a helper-method was just a method that filters the current_user.services
with the enabled services, but doesn't try to render any buttons.
@@ -32,3 +26,5 @@ | |||
data: {"disable-with" => t("shared.publisher.posting")} | |||
.pull-right | |||
= render partial: "aspects/aspect_dropdown" | |||
.pull-right#publisher-service-icons | |||
= display_available_services |
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 see what you tried to do here, but service_button(service)
(which you tried to return in display_available_services
) doesn't work on mobile, as the wordpress icon isn't available there in this form.
Lets just keep this the way it was before, but just change the source of the for loop to the filtered service list from the helper.
If you want to redesign how this looks on the mobile UI, this requires more work (there were also broken tests because of the UI changes), but I think it's not worth it, since the mobile UI will die eventually anyway.
4e6772c
to
52424fb
Compare
I removed your last commit, and added my own with the helper that just filters the services and also added a test for that helper. This now just filters the services for both UIs (so fixes the bug for both of them), but keeps the design otherwise as is. |
Thank you for finishing this |
I was wondering if we should disconnect all users if we detect that the podmin changed the config to disable the service, but first of all config change isn't easy to detect, and second I think that if the podmin then re-enables it it would be a shame to ask all users to reconnect.