github / VisualStudio

GitHub Extension for Visual Studio
https://visualstudio.github.com
MIT License
2.38k stars 1.2k forks source link

Reactions #345

Open donokuda opened 8 years ago

donokuda commented 8 years ago

Hereโ€™s an exploration of how reactions could work in Visual Studio. ๐Ÿ‘ ๐Ÿ‘Ž ๐Ÿ˜„ ๐ŸŽ‰ ๐Ÿ˜• โค๏ธ

I've covered three scenarios (but feel free to fill me in on any that I might've missed): When there are no reactions, when adding an additional reaction, and incrementing a reaction.

If no reactions exist

screen shot 2016-06-06 at 10 31 22 am
  1. โ€œAdd reactionโ€ reaction appears on hover
  2. Clicking reveals a row of emojis to choose from. Weโ€™ll utilize tooltips to explain the meaning of each emoji. We can also consider scaling the emoji up on hover as an interaction affordance.
  3. Clicking puts the emoji under the comment text

Adding an additional reaction

screen shot 2016-06-06 at 10 31 28 am
  1. โ€œAdd reactionโ€ reaction appears on hover next to existing reactions
  2. Clicking reveals the same row of emojis to choose from. The main difference is that you can still see the existing counts of reactions.
  3. Clicking an additional reaction adds it to the row.

Incrementing an existing reaction

Clicking on an existing reaction is enough to increment it.

screen shot 2016-06-06 at 10 31 34 am

Also threw together a mock-up of how this could look like in the context of a pull request conversation:

screen shot 2016-06-06 at 10 49 46 am

Couple of questions:

As always, feedback welcome! ๐Ÿ™‡

cc: @simurai for the additional ๐Ÿ‘€ and ๐Ÿ’ญ

paladique commented 8 years ago

yas

So hype for this :raised_hands:

:+1: to bundling emojis, emojis + Windows has always been a thing I've been :thought_balloon: about, definitely didn't realize they are different between versions

Interesting history of Windows emojis here

shana commented 8 years ago

Definite ๐Ÿ‘ to bundling emojis!

If we're making a request to GitHub, should we have some sort of UI that indicates that reactions are being saved? What about error notifications in case it fails for any reason? (That said, error notifications go beyond reactions and is probably a separate discussion)

We can delay showing the colored version of the emoji until it's saved. Then people will click repeatedly on it (which we can ignore) and when it goes colored, they feel like something happened (at least that's my experience every time I want to star something on twitter and the network is being stupid. Maybe it's just me... ๐Ÿ˜ ).

Dunno if we want to do notifications in case of errors... we'll need some sort of notification UI on the GitHub pane, and one that doesn't cause UI elements to move down (that would be annoying if you're clicking on emojis and the whole thing moves under the mouse and you click... somewhere else). Speaking of notification UI on the GitHub pane, have we mocked that up yet? Can't remember. We probably should ๐Ÿ˜„

When hovering an existing reaction, we probably want to show the list of users, just like the website does (and I'm hoping that's on the API, I made the case for it recently).

All in all, love this! โค๏ธ

donokuda commented 8 years ago

๐Ÿ‘ to bundling emojis, emojis + Windows has always been a thing I've been ๐Ÿ’ญ about, definitely didn't realize they are different between versions

Same here! Emojipedia has been the best resource in the emoji-space (filling me in with the nuances of emojis on Windows!) ๐Ÿ˜„

When hovering an existing reaction, we probably want to show the list of users, just like the website does (and I'm hoping that's on the API, I made the case for it recently).

๐Ÿ‘ Additionally, I think we can do the same thing as dotcom and limit the amount of users shown to around 11:

image

In our case, we could consider using the built-in tooltip text to show display the information:

reactions details

donokuda commented 8 years ago

We can delay showing the colored version of the emoji until it's saved. Then people will click repeatedly on it (which we can ignore) and when it goes colored, they feel like something happened (at least that's my experience every time I want to star something on twitter and the network is being stupid. Maybe it's just me... ๐Ÿ˜ ).

Since the neutral color for emojis on Windows is gray, it might be a little difficult to switch between a grayscale and color emoji. However, I like the idea of visually indicating that a request is in progress. Maybe we could use dim the emoji to 50-60% opacity while it's saving, then bring it back to 100% and increment the number when the request has succeeded. This would be similar to how submit buttons are disabled on submit and reenabled when the form has succeeded (or failed in some cases.)

Dunno if we want to do notifications in case of errors... we'll need some sort of notification UI on the GitHub pane, and one that doesn't cause UI elements to move down (that would be annoying if you're clicking on emojis and the whole thing moves under the mouse and you click... somewhere else). Speaking of notification UI on the GitHub pane, have we mocked that up yet? Can't remember. We probably should ๐Ÿ˜„

This is something that needs to be worked out too beyond reactions. I was thinking we could use an infobar UI to notify about any error, but agree that it might be jarring to have the entire content move down at once.

I wonder if there are any examples of UI's that handle errors nicely in Visual Studio (or any IDE extension.) Maybe we could dock the infobar to the top of the pane?

shana commented 8 years ago

Maybe we could use dim the emoji to 50-60% opacity while it's saving, then bring it back to 100% and increment the number when the request has succeeded. This would be similar to how submit buttons are disabled on submit and reenabled when the form has succeeded (or failed in some cases.)

Stupid idea alert: how about filling them up (with an animated mask) to show progress of save? /me hides ๐Ÿ˜

shana commented 8 years ago

This is something that needs to be worked out too beyond reactions. I was thinking we could use an infobar UI to notify about any error, but agree that it might be jarring to have the entire content move down at once.

I wonder if there are any examples of UI's that handle errors nicely in Visual Studio (or any IDE extension.) Maybe we could dock the infobar to the top of the pane?

I don't know of any (but I don't use a lot of extensions myself). I'm sure most people will tend to follow the guidelines and use the infobar, which forces all the content to move every time it shows... sigh.

We can use it, I guess... the alternative is allocating some space in our UI to messages, and we have to put something in it, otherwise it'll just be a waste of space. We can use the infobar for things where there's an obvious wait time, so people aren't clicking around and getting caught by the content shift. Team Explorer uses a little progress bar on top to show UI busy state, maybe we ought to follow that example.

donokuda commented 8 years ago

how about filling them up (with an animated mask) to show progress of save?

The idea of doing an animation directly on the emoji sounds delightful! Almost reminds me what happens when you like a tweet on Twitter's website! โœจ

I don't know of any (but I don't use a lot of extensions myself). I'm sure most people will tend to follow the guidelines and use the infobar, which forces all the content to move every time it shows... sigh.

Yeah, I'm also not convinced that the infobar is the best component to use for errors around reactions. It seems pretty intrusive for a small UI like reactions.

Team Explorer uses a little progress bar on top to show UI busy state, maybe we ought to follow that example.

I like this idea. We could use the indeterminate progress bar at the top to indicate that something is happening in the background.

In addition to the progress bar, we could increment the number and lower the opacity of the emojis as another affordance that the UI is busy. Incrementing the number could visually communicate the expected final state of the reactions. If there's an issue saving, we could decrement the number back to its original state and bring up the opacity to 100%. This might be enough for the user to know that something went wrong and they could try their action again.

image

donokuda commented 8 years ago

I forgot to explore how to show which reactions were set by the user. On dotcom, we highlight the button with a light blue background. Since we don't use a button to show reactions, I tried out highlighting the number instead with blue.

๐Ÿ’ญ ?

image

shana commented 8 years ago

I forgot to explore how to show which reactions were set by the user.

We can use the slack trick and render the emoji differently in this case, with a slight background tint or something.

donokuda commented 8 years ago

We can use the slack trick and render the emoji differently in this case, with a slight background tint or something.

ooo, I like that idea

screen shot 2016-06-09 at 6 25 44 pm