Tusky
Tusky copied to clipboard
3771 mark post as reply
Fixes #3771 / partly addresses #1469
This shows in a timeline the status info "In reply to < username>" just like the existing "< username> boosted" above a status.
This is a more or less low-hanging fruit as the information is available and the web gui does this (but see review comments here for details).
This is NOT the requested "Show thread" functionality - which would still need to be discussed; i.e. every reply makes a thread?
I haven't tested this yet, but I've just observed the following:
-
item_status.xml
(and related layouts) have aR.id.status_info
view at the top, which is where the "X boosted" message goes. -
StatusBaseViewHolder.java
has asetIsReply
method that's called whenever the status is a reply
So, in StatusViewHolder.java
, wouldn't it be simpler to just do this:
protected void setIsReply(boolean isReply) {
super setIsReply(isReply);
if (isReply) {
statusInfo.text = getString(R.string.post_replied_format, ...)
}
}
?
Also, what should happen if the status was a reply, and it was reblogged? https://chaos.social/@jollysea/110668273086228868 is an example post that is a reply that was reblogged by @mcclure.
- The "X boosted" message is more important
- The "In reply to Y" message is more important
- The message should be "X boosted this reply to Y"
- Show two lines of text
Note that that status above is an interesting edge case for this, because it's mcc reblogging a reply to her own post, so although option 3 might be generally good, it would lead to "mcc boosted this reply to mcc". Which might be more mcc than a single line can handle :-)
So, in
StatusViewHolder.java
, wouldn't it be simpler to just do this:protected void setIsReply(boolean isReply) { super setIsReply(isReply); if (isReply) { statusInfo.text = getString(R.string.post_replied_format, ...) } }
?
Instead of what?
At least all the changes before and in (now) setStatusInfoText()
would be necessary as they also deal with emojis and a maybe different name.
And at least at the moment the setIsReply()
only deals with two different reply cases. The reblog information is orthogonal.
Also, what should happen if the status was a reply, and it was reblogged? https://chaos.social/@jollysea/110668273086228868 is an example post that is a reply that was reblogged by @mcclure.
3. The message should be "X boosted this reply to Y"
I kind of like option 3. However that might be too much information? (and will often be too long, names tend to be long...) 2 lines will also be too much, I think.
At the moment (in my code) reblog is more important than reply. So an "if ... else if" logic.
@Lakoja Can you take a look at https://github.com/Lakoja/Tusky/pull/4, and see if you want to merge that in to this PR? I figured that was easier than more back-and-forth.
You'll want to merge develop
in to this PR first to minimse the diffs.
Some quick screenshots:
It shows reply and boost, with a bullet between them
If the account isn't known, but mentioned, it uses the @-form of the user name
Long lines are truncated / ellipsised
I'm not 100% convinced that moving the left margin over is a good idea, but as you can see from the screenshots, sometimes the line does get quite long.
WDYT?
Some quick screenshots:
WDYT?
I find the lines with two information quite hard to parse visually. (thus) I still wouldn't present two informations there.
Some quick screenshots:
WDYT?
I find the lines with two information quite hard to parse visually. (thus) I still wouldn't present two informations there.
I think that might be a problem, because with this PR we're trying to use the statusInfo to show two difference pieces of information.
Currently the statusInfo answers the "Why am I seeing this in my timeline?" question. It tells the user "You are seeing this because someone you follow has boosted it".
This PR extends that to also answer the "Can I tap on this post to read a thread?" question.
I'm not sure that only ever showing one bit of information is a good idea, because it means that users will not be able to rely on the information in the statusInfo -- what's shown will vary, and it will be difficult for users to figure out why it's varying.
By which I mean that some replies -- replies from people that the user follows -- will be marked as replies, and the user will know they can tap the post to see the thread.
But other replies -- replies from people they don't follow that have been boosted by someone they do -- will not be marked as replies.
[I know the "reply" icon at the bottom of the post will change as well, but as we see from the bug reports, this is also something that users don't always notice]
If we flip that example around, and decide that showing that it's part of a thread is more important than showing that it's a boost, then we get the problem that a user can see "user-i-dont-follow replied to ..." in the statusInfo, and not know why this post is appearing in their timeline.
The first screenshot in my previous comment is an example of that. I don't follow rain, but I do follow Norm.
Both of those seem like a recipe for user confusion.
I think we can collapse some of the information down. For example, if someone boosts their own post there's no need to show their display name again.
And we could experiment with putting some of the information elsewhere. I'm not sure a two-line statusInfo is a good idea, ~~but maybe the "reply" icon could appear next to the display name of the poster (i.e., the displayname that appears to the right of the avatar)? That would leave the statusInfo for boosts (and later, hashtags).~~
~~But... that would mean the left-edge of the display names would jump around a bit as the user scrolls through their timeline.~~
[Edit: Putting a reply icon next to the display name is a bad idea -- users could easily add an emoji to their display name that looks like a reply icon (or other), which would be very confusing.]
I'll try some mockups and see what happens.
Here's the latest variant (I'm still waiting for a self-boost to cross my timeline).
Replying to themselves
Some of https://github.com/tuskyapp/Tusky/issues/3883 is relevant to this as well. There's one, possibly two additional values that can be included in the status_info, but they're mutually exclusive with the others (I think). They are:
- "Sent you a direct message"
- "Replied to your direct message"
or similar. Possibly with "direct message" in that text in bold, or bold tusky_red, or something like that, to make it even more distinctive.
Doesn't this need a database migration for
TimelineAccountEntity
?
There is no change there?
All info here is present (in rare cases the "replied to account info" might be missing and then the name is not show).
What does this patch do if a post is BOTH a reply AND an RT?
The current PR code displays this when a reply is boosted
Oh, it looks super weird in the thread view - is that intentional?
I guess this change should be applied to the notification timeline as well? (Maybe in a second pass after the refactor lands?)
Oh, it looks super weird in the thread view - is that intentional?
No. (Super weird: it shows "Replied" above every status.)
I fixed it by not showing the status info in the thread view.
But I guess the introduced flag should/could be part of "StatusDisplayOptions" object?
I guess this change should be applied to the notification timeline as well? (Maybe in a second pass after the refactor lands?)
Yes, probably and yes.
imo the changes look ok, but it will have to be rebased again after #4026 lands (after the 25.0 release) 😐 I'm really sorry that this has been in stasis for almost a year
Should we in turn get rid of the double arrow on the reply button that currently indicates replies? It wouldn't be necessary anymore.