Tusky icon indicating copy to clipboard operation
Tusky copied to clipboard

3771 mark post as reply

Open Lakoja opened this issue 1 year ago • 17 comments

Fixes #3771 / partly addresses #1469

grafik

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?

Lakoja avatar Jun 29 '23 08:06 Lakoja

I haven't tested this yet, but I've just observed the following:

  1. item_status.xml (and related layouts) have a R.id.status_info view at the top, which is where the "X boosted" message goes.
  2. StatusBaseViewHolder.java has a setIsReply 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.

  1. The "X boosted" message is more important
  2. The "In reply to Y" message is more important
  3. The message should be "X boosted this reply to Y"
  4. 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 :-)

nikclayton avatar Jul 08 '23 14:07 nikclayton

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.

Lakoja avatar Jul 10 '23 12:07 Lakoja

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 avatar Jul 10 '23 12:07 Lakoja

@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

image

image


If the account isn't known, but mentioned, it uses the @-form of the user name

image


Long lines are truncated / ellipsised

image


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?

nikclayton avatar Jul 29 '23 20:07 nikclayton

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.

Lakoja avatar Jul 29 '23 21:07 Lakoja

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.

nikclayton avatar Jul 30 '23 11:07 nikclayton

Here's the latest variant (I'm still waiting for a self-boost to cross my timeline).

Replying to themselves

image

nikclayton avatar Jul 30 '23 12:07 nikclayton

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.

nikclayton avatar Aug 03 '23 20:08 nikclayton

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).

Lakoja avatar Oct 05 '23 18:10 Lakoja

What does this patch do if a post is BOTH a reply AND an RT?

mcclure avatar Oct 06 '23 01:10 mcclure

The current PR code displays this when a reply is boosted

Screenshot 2023-10-06 at 11 12 35 AM

Tak avatar Oct 06 '23 09:10 Tak

Oh, it looks super weird in the thread view - is that intentional?

Tak avatar Oct 06 '23 11:10 Tak

I guess this change should be applied to the notification timeline as well? (Maybe in a second pass after the refactor lands?)

Tak avatar Oct 06 '23 11:10 Tak

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?

Lakoja avatar Oct 06 '23 18:10 Lakoja

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.

Lakoja avatar Oct 06 '23 18:10 Lakoja

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

Tak avatar Apr 26 '24 07:04 Tak

Should we in turn get rid of the double arrow on the reply button that currently indicates replies? It wouldn't be necessary anymore.

connyduck avatar May 03 '24 12:05 connyduck