feat: SPA bug fixes, interactivity, federation badges, admin reindex
Some checks failed
CI / Check / Test (push) Failing after 10m55s
Some checks failed
CI / Check / Test (push) Failing after 10m55s
- fix wrapup status "completed" → "Ready"
- fix unfollow sending {handle} instead of {actor_url}
- fix missing post import in users.ts
- fix feed/activity cache not invalidated on review delete/log
- add person_id to cast/crew types, link to /people pages
- add movie_id to wrapup MovieRef, link highlights to /movies pages
- add wrapup actor profile images + clickable person links
- add federated review globe badge in feed and movie detail
- add fediverse handle (@user@instance) in follower/following cards
- add admin reindex search button in settings
- add wrapup user picker for admins
- add username/display_name to user summary type
- use tmdbProfileUrl for person search results
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Link } from "@tanstack/react-router"
|
||||
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
|
||||
import { Card, CardContent } from "@/components/ui/card"
|
||||
import { posterUrl } from "@/lib/api/client"
|
||||
import { tmdbProfileUrl } from "@/lib/api/client"
|
||||
|
||||
type PersonRowProps = {
|
||||
id: string
|
||||
@@ -16,7 +16,7 @@ export function PersonRow({ id, name, subtitle, imagePath }: PersonRowProps) {
|
||||
<Card size="sm">
|
||||
<CardContent className="flex items-center gap-3">
|
||||
<Avatar>
|
||||
{imagePath && <AvatarImage src={posterUrl(imagePath)} />}
|
||||
{imagePath && <AvatarImage src={tmdbProfileUrl(imagePath)} />}
|
||||
<AvatarFallback>{name[0]?.toUpperCase()}</AvatarFallback>
|
||||
</Avatar>
|
||||
<div className="min-w-0 flex-1">
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Link } from "@tanstack/react-router"
|
||||
import { Globe } from "lucide-react"
|
||||
import { StarDisplay } from "@/components/star-display"
|
||||
import { Card, CardContent } from "@/components/ui/card"
|
||||
import { posterUrl } from "@/lib/api/client"
|
||||
@@ -9,9 +10,10 @@ type ReviewCardProps = {
|
||||
review: ReviewDto
|
||||
userName?: string
|
||||
userId?: string
|
||||
isFederated?: boolean
|
||||
}
|
||||
|
||||
export function ReviewCard({ movie, review, userName, userId }: ReviewCardProps) {
|
||||
export function ReviewCard({ movie, review, userName, userId, isFederated }: ReviewCardProps) {
|
||||
return (
|
||||
<Card size="sm">
|
||||
<CardContent className="flex gap-3">
|
||||
@@ -28,6 +30,7 @@ export function ReviewCard({ movie, review, userName, userId }: ReviewCardProps)
|
||||
) : (
|
||||
<span>{userName}</span>
|
||||
)}
|
||||
{isFederated && <Globe className="size-3 text-muted-foreground/60" />}
|
||||
<span>·</span>
|
||||
<span>{review.watched_at.slice(0, 10)}</span>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user