Function: useCreateReview()
useCreateReview():
UseMutationResult<{author: {avatar:string;did:string;displayName:string;handle:string; };body: {facets:object[];text:string; };cid:string;content:string;createdAt:string;indexedAt:string;motivation:"commenting"|"highlighting"|"questioning"|"replying"|"assessing"|"bookmarking"|"classifying"|"describing"|"editing"|"linking"|"moderating"|"tagging";parentReviewUri:string;preprintUri:string;replyCount:number;target: {page:number;refinedBy: {boundingRect: {height:number;width:number;x1:number;x2:number;y1:number;y2:number; };end:number;pageNumber:number;start:number;type:"TextPositionSelector"; };selector: {exact:string;prefix:string;suffix:string;type:"TextQuoteSelector"; };source:string; };uri:string; },Error,CreateReviewInput,unknown>
Defined in: web/lib/hooks/use-review.ts:327
Mutation hook for creating a new review.
Returns
UseMutationResult<{ author: { avatar: string; did: string; displayName: string; handle: string; }; body: { facets: object[]; text: string; }; cid: string; content: string; createdAt: string; indexedAt: string; motivation: "commenting" | "highlighting" | "questioning" | "replying" | "assessing" | "bookmarking" | "classifying" | "describing" | "editing" | "linking" | "moderating" | "tagging"; parentReviewUri: string; preprintUri: string; replyCount: number; target: { page: number; refinedBy: { boundingRect: { height: number; width: number; x1: number; x2: number; y1: number; y2: number; }; end: number; pageNumber: number; start: number; type: "TextPositionSelector"; }; selector: { exact: string; prefix: string; suffix: string; type: "TextQuoteSelector"; }; source: string; }; uri: string; }, Error, CreateReviewInput, unknown>
Mutation object for creating reviews
Remarks
Creates a review in the user's PDS. Supports:
- General reviews (no target)
- Inline annotations (with target span)
- Threaded replies (with parentReviewUri)
- Rich text bodies with embedded references
Automatically invalidates relevant queries on success.
Example
const createReview = useCreateReview();
const handleSubmit = async (content: string) => {
await createReview.mutateAsync({
preprintUri,
content,
motivation: 'commenting',
});
};
return (
<ReviewForm
onSubmit={handleSubmit}
isSubmitting={createReview.isPending}
/>
);