Repository navigation
Messages: Push (repost) and Quote (#31) - #181
Merged
Merged
Conversation
POST /api/messages takes a pushedMessageId; one field covers both Push (bare repost, empty content) and Quote (repost with commentary). Adds the write path, the card actions, and the embedded original. - Models/NewMessage.cs — a request record for POST /api/messages. The endpoint has grown enough optional fields (reply, schedule, media, push/quote) that the positional overload in InterlinedApiClient.cs was out of room; that file is untouched (it is in open PR #130), so this is a new overload in the Messages partial. Optional keys the caller never set are omitted rather than posted as explicit nulls. - PushMessageAsync / QuoteMessageAsync hard-code publiclyVisible: true — pushes and quotes are always public per /help/messages, whatever the user's defaultPubliclyVisible preference says (it is false on the test account). - MessageItemViewModel: PushCount, the IsPush/IsQuote split, the quoted-original projection off the nested pushedMessage, and Push/Quote commands. A Posted event lets the feed re-fetch after publishing — the write envelopes are not parsed, per this codebase's read-after-write discipline. - Pushing a *bare push* targets the original rather than the push, so the result is a one-level quote that renders. Quoting a Quote still targets the quote, which carries its own commentary. Client-side call: no nested pushedMessage appeared anywhere in an 80-row live sample, so the server's chaining behaviour is unverified. - FeedView.xaml: "↻ Pushed" / "❝ Quoted" badge, the embedded original card (avatar, clickable author, time, body, images), pushCount beside digCount, and an inline Quote composer whose amber banner is the "this will be public" confirmation. The footer is now a WrapPanel — seven actions overflowed a narrow window. A per-card status line was added too: ErrorMessage had no renderer at all before, so a failed Report was silent. Live-verified read-only against the test account (80-message sample): 5 of 80 rows carry pushedMessageId + a full nested pushedMessage. Contrary to the note on the issue, 2 of those 5 have non-empty content — real Quotes, not only bare reposts — so the content-based IsQuote split is exercised by live data. All 5 are publiclyVisible: true, consistent with the always-public rule. No write path was exercised: posting, pushing or quoting from this account publishes publicly and syndicates to Mastodon/Bluesky. Closes #31 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Conflict in FeedView.xaml on the card-body TextBlock — the exact reconcile flagged when this PR was opened. #94's MentionText attached property and #31's bare-Push collapse both target that one element. Both kept: MentionText.Text renders @mentions as clickable links, and the Visibility binding (already outside the conflict region) collapses the body for a bare Push, which carries no commentary. Comment records why both are there so neither is removed as redundant. Debug and Release both build clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #31
What this does
Push (repost) and Quote, per
/help/messages:POST /api/messagesgainspushedMessageId.pushedMessage, which arrives complete (its ownuser,imageUrls,tags,linkMetadata) so no second fetch is needed.pushCountdisplays alongsidedigCount.What the live feed corrected
My issue text said all 5 sampled pushes had empty content. Wrong — 2 of 5 carry real commentary ("Anybody else got thoughts on this?", "Did a reaction vid to this years ago too…"), so they're genuine Quotes and the content-based
IsQuotesplit is exercised by real data, not just theory.pushedMessage.pushedMessageIdwas null on all 5, so server-side chaining is unverified — a bare push therefore targets the original, commented as a client-side decision.Incidental fix
MessageItemViewModel.ErrorMessagehad no renderer at all, so a failed Report — or its "Reported. Thanks…" acknowledgement — was silently dropped. This adds a per-card status line.Not exercised
No post, push, quote or dig was sent: every write here publishes to a real shared account and syndicates to Mastodon/Bluesky. The compose paths are built and live-unverified.
Note for review
This adds a
Visibilitybinding to the card-bodyTextBlockso a bare Push collapses its empty body — the same element #141'sMentionTextattached property claims. Whichever merges second needs a one-line reconcile.Builds green in Debug and Release.
🤖 Generated with Claude Code