Skip to content

Conversation

@chrisbobbe
Copy link
Collaborator

@chrisbobbe chrisbobbe commented Jan 17, 2026

Fixes #1798.

Notable commit message:

compose: Show the Refresh/Subscribe banner when can send, too

Fixes #1798.

In #1873, we started showing a Refresh/Subscribe banner when viewing
an unsubscribed channel -- but only if you didn't have permission to
send messages there. We postponed showing it in the case where you
*can* send messages because the UI message for that case is "Replies
to your messages will not appear automatically", and that message
would have been confusing in a world where your own messages didn't
appear automatically either because of bugs that hadn't been fixed.

We've fixed those bugs in #2034 -- the "first" and "third" parts
of #1798 -- so now go ahead and offer the Refresh/Subscribe banner,
with the planned text, in the case where you can send messages.

This completes the work for #1798.

Also a few other behavior changes:

  • The label and buttons of the "Refresh/Subscribe" banner that we already show (when you can't send messages) are now a bit more compact. The new banner uses the same compact layout, because it also has long text, but other banners are unaffected.
  • When you're viewing a channel that doesn't actually exist, the banner says "You cannot send messages here." instead of "You do not have permission to post in this channel.", which was implying that the channel does exist.
  • We stop offering a compose box when you don't have content access to a channel. Alya's suggestion: msglist: Friendlier placeholder text when narrow has no messages #1947 (comment)
  • We stop offering a compose box when DM recipients are unknown users. Alya's suggestion: msglist: Friendlier placeholder text when narrow has no messages #1947 (comment)

Screenshots coming up.

The message is "New messages will not appear automatically." and the
buttons are "Refresh" and "Subscribe".
We'll keep using this for the case where you don't have permission
to send messages in the channel. It's not quite appropriate for the
case of an *unknown* channel, though, and we'll start showing
something different for that, coming up.
Soon we'll stop offering the compose box when one or more of the DM
recipients are unknown. Fix these tests to not fail with that
change, by adding appropriate user data to the store.
Fixes zulip#1798.

In zulip#1873, we started showing a Refresh/Subscribe banner when viewing
an unsubscribed channel -- but only if you didn't have permission to
send messages there. We postponed showing it in the case where you
*can* send messages because the UI message for that case is "Replies
to your messages will not appear automatically", and that message
would have been confusing in a world where your own messages didn't
appear automatically either because of bugs that hadn't been fixed.

We've fixed those bugs in zulip#2034 -- the "first" and "third" parts
of zulip#1798 -- so now go ahead and offer the Refresh/Subscribe banner,
with the planned text, in the case where you can send messages.

This completes the work for zulip#1798.
@chrisbobbe chrisbobbe added the maintainer review PR ready for review by Zulip maintainers label Jan 17, 2026
@chrisbobbe
Copy link
Collaborator Author

chrisbobbe commented Jan 17, 2026

cc @alya

Main feature implemented:

Before After
image image

Other behavior changes described above:

Before After
image image
image image
image image
image image

Several of those screenshots are a reminder that we just show an infinite loading spinner if we fail to fetch the first batch of messages. I didn't find an issue for that, so I've just filed #2085.

Copy link
Member

@rajveermalviya rajveermalviya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @chrisbobbe! All LGTM and tests great. Couple of comments below about lingering l10n entries, I am not sure if Weblate automatically garbage collects them.

Moving over to Greg's review.

Comment on lines +505 to +507
"composeBoxBannerLabelCannotSendInChannel": "You do not have permission to post in this channel.",
"@composeBoxBannerLabelCannotSendInChannel": {
"description": "Label text for a banner replacing the compose box when you do not have permission to send messages in the channel."
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commit 7f397e42a413544a6830ea5c7f567630223a0fac 

compose [nfc]: Rename a localizations string for its intended use
…

I think you'll also need to manually remove errorBannerCannotPostInChannelLabel and @errorBannerCannotPostInChannelLabel entries from other assets/l10n/app_*.arb files. Not sure if there is better way to do this.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better yet, rename those entries. That way Weblate will pick up the existing values, and won't ask translators to re-translate the strings.

I'd do that with a find-and-replace: from the command line, something like perl -i -pe 's/errorBannerCannotPostInChannelLabel/composeBoxBannerLabelCannotSendInChannel/g' assets/l10n/*.arb, but if one has a favorite other find-and-replace tool then that should work fine too.

Comment on lines +501 to +503
"composeBoxBannerLabelDeactivatedDmRecipient": "You cannot send messages to deactivated users.",
"@composeBoxBannerLabelDeactivatedDmRecipient": {
"description": "Label text for a banner replacing the compose box when you cannot send messages in the DM conversation because one or more members are deactivated."
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commit 92cff0af1cc87fd91e3f9dffc5d35d1910f4a734

compose [nfc]: Name/describe a localization string more like its friends

Same here for errorBannerDeactivatedDmLabel and @errorBannerDeactivatedDmLabel.

@rajveermalviya rajveermalviya added integration review Added by maintainers when PR may be ready for integration and removed maintainer review PR ready for review by Zulip maintainers labels Jan 23, 2026
@gnprice
Copy link
Member

gnprice commented Jan 24, 2026

Thanks @chrisbobbe for taking care of this, and @rajveermalviya for the previous review!

The code all LGTM except the points Rajesh mentioned above. If @alya has product feedback, we can also incorporate that, though this situation in the app isn't a critical one so it's possible she won't get to it soon.

@gnprice gnprice added the product review Added by maintainers when a PR needs product review label Jan 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

integration review Added by maintainers when PR may be ready for integration product review Added by maintainers when a PR needs product review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

In unsubscribed channel, handle that message-send/edit events are not expected

3 participants