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:
@@ -31,6 +31,7 @@ export const feedEntryDtoSchema = z.object({
|
||||
user_id: z.string().uuid(),
|
||||
user_email: z.string(),
|
||||
user_display_name: z.string(),
|
||||
is_federated: z.boolean(),
|
||||
})
|
||||
export type FeedEntryDto = z.infer<typeof feedEntryDtoSchema>
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ export const keywordDtoSchema = z.object({
|
||||
})
|
||||
|
||||
export const castMemberDtoSchema = z.object({
|
||||
person_id: z.string(),
|
||||
tmdb_person_id: z.number(),
|
||||
name: z.string(),
|
||||
character: z.string(),
|
||||
@@ -69,6 +70,7 @@ export const castMemberDtoSchema = z.object({
|
||||
export type CastMemberDto = z.infer<typeof castMemberDtoSchema>
|
||||
|
||||
export const crewMemberDtoSchema = z.object({
|
||||
person_id: z.string(),
|
||||
tmdb_person_id: z.number(),
|
||||
name: z.string(),
|
||||
job: z.string(),
|
||||
|
||||
@@ -68,7 +68,7 @@ export function follow(data: FollowRequest) {
|
||||
return post("/social/follow", data)
|
||||
}
|
||||
|
||||
export function unfollow(data: FollowRequest) {
|
||||
export function unfollow(data: ActorUrlRequest) {
|
||||
return post("/social/unfollow", data)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import { z } from "zod"
|
||||
import { diaryEntryDtoSchema, paginatedSchema } from "./common"
|
||||
import { get, put, putForm } from "./client"
|
||||
import { get, post, put, putForm } from "./client"
|
||||
|
||||
export const userSummaryDtoSchema = z.object({
|
||||
id: z.string().uuid(),
|
||||
email: z.string(),
|
||||
username: z.string(),
|
||||
display_name: z.string().optional(),
|
||||
total_movies: z.number(),
|
||||
avg_rating: z.number().optional(),
|
||||
})
|
||||
@@ -130,3 +132,7 @@ export function updateProfile(data: UpdateProfileData) {
|
||||
export function updateProfileFields(data: UpdateProfileFieldsRequest) {
|
||||
return put("/profile/fields", data)
|
||||
}
|
||||
|
||||
export function reindexSearch() {
|
||||
return post("/admin/reindex-search")
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ export function deleteWrapUp(id: string) {
|
||||
}
|
||||
|
||||
export type MovieRef = {
|
||||
movie_id?: string
|
||||
title: string
|
||||
year: number
|
||||
runtime_minutes?: number
|
||||
@@ -54,6 +55,7 @@ export type MovieRef = {
|
||||
}
|
||||
|
||||
export type PersonStat = {
|
||||
person_id?: string
|
||||
name: string
|
||||
count: number
|
||||
avg_rating: number
|
||||
@@ -91,6 +93,7 @@ export type WrapUpReport = {
|
||||
first_movie_of_period?: MovieRef
|
||||
last_movie_of_period?: MovieRef
|
||||
poster_paths: string[]
|
||||
top_cast_profile_paths: string[]
|
||||
}
|
||||
|
||||
export function getWrapUpReport(id: string) {
|
||||
|
||||
Reference in New Issue
Block a user