Fix repost state drift and document workflow

This commit is contained in:
cyph3rasi
2026-03-07 19:47:49 -08:00
parent 76ca21e14f
commit 17baf8e4f0
12 changed files with 256 additions and 23 deletions
+2 -1
View File
@@ -182,7 +182,8 @@ export async function GET(
const viewerReposts = await db.query.posts.findMany({
where: and(
eq(posts.userId, viewer.id),
inArray(posts.repostOfId, allPostIds)
inArray(posts.repostOfId, allPostIds),
eq(posts.isRemoved, false)
),
});
const repostedPostIds = new Set(viewerReposts.map(r => r.repostOfId));
+2 -1
View File
@@ -821,7 +821,8 @@ export async function GET(request: Request) {
const viewerReposts = await db.query.posts.findMany({
where: and(
eq(posts.userId, viewer.id),
inArray(posts.repostOfId, localPostIds)
inArray(posts.repostOfId, localPostIds),
eq(posts.isRemoved, false)
),
});
viewerReposts.forEach(r => { if (r.repostOfId) repostedPostIds.add(r.repostOfId); });
+2 -1
View File
@@ -201,7 +201,8 @@ export async function GET(request: Request) {
const viewerReposts = await db.query.posts.findMany({
where: and(
eq(posts.userId, viewer.id),
inArray(posts.repostOfId, postIds)
inArray(posts.repostOfId, postIds),
eq(posts.isRemoved, false)
),
});
const repostedPostIds = new Set(viewerReposts.map(r => r.repostOfId));
+2 -1
View File
@@ -67,7 +67,8 @@ export async function GET(request: Request, context: RouteContext) {
const viewerReposts = await db.query.posts.findMany({
where: and(
eq(posts.userId, viewer.id),
inArray(posts.repostOfId, postIds)
inArray(posts.repostOfId, postIds),
eq(posts.isRemoved, false)
),
});
const repostedPostIds = new Set(viewerReposts.map(r => r.repostOfId));
+2 -1
View File
@@ -177,7 +177,8 @@ export async function GET(request: Request, context: RouteContext) {
const viewerReposts = await db.query.posts.findMany({
where: and(
eq(posts.userId, viewer.id),
inArray(posts.repostOfId, postIds)
inArray(posts.repostOfId, postIds),
eq(posts.isRemoved, false)
),
});
const repostedPostIds = new Set(viewerReposts.map(r => r.repostOfId));
+6 -1
View File
@@ -274,7 +274,12 @@ export default function ExplorePage() {
const handleRepost = async (postId: string, currentReposted: boolean) => {
const method = currentReposted ? 'DELETE' : 'POST';
await fetch(`/api/posts/${postId}/repost`, { method });
const res = await fetch(`/api/posts/${postId}/repost`, { method });
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data.error || 'Failed to update repost');
}
};
const handleDelete = (postId: string) => {
+7 -4
View File
@@ -173,10 +173,13 @@ export default function Home() {
const handleRepost = async (postId: string, currentReposted: boolean) => {
if (!did || !handle) return;
if (currentReposted) {
await signedAPI.unrepostPost(postId, did, handle);
} else {
await signedAPI.repostPost(postId, did, handle);
const res = currentReposted
? await signedAPI.unrepostPost(postId, did, handle)
: await signedAPI.repostPost(postId, did, handle);
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data.error || 'Failed to update repost');
}
};
+6 -1
View File
@@ -187,7 +187,12 @@ export default function SearchPage() {
const handleRepost = async (postId: string, currentReposted: boolean) => {
const method = currentReposted ? 'DELETE' : 'POST';
await fetch(`/api/posts/${postId}/repost`, { method });
const res = await fetch(`/api/posts/${postId}/repost`, { method });
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data.error || 'Failed to update repost');
}
};
const handleDelete = (postId: string) => {
+6 -1
View File
@@ -213,7 +213,12 @@ export default function ProfilePage() {
const handleRepost = async (postId: string, currentReposted: boolean) => {
const method = currentReposted ? 'DELETE' : 'POST';
await fetch(`/api/posts/${postId}/repost`, { method });
const res = await fetch(`/api/posts/${postId}/repost`, { method });
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data.error || 'Failed to update repost');
}
};
const handleComment = (post: Post) => {
+7 -4
View File
@@ -92,10 +92,13 @@ export default function PostDetailPage() {
const handleRepost = async (postId: string, currentReposted: boolean) => {
if (!did || !userHandle) return;
if (currentReposted) {
await signedAPI.unrepostPost(postId, did, userHandle);
} else {
await signedAPI.repostPost(postId, did, userHandle);
const res = currentReposted
? await signedAPI.unrepostPost(postId, did, userHandle)
: await signedAPI.repostPost(postId, did, userHandle);
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data.error || 'Failed to update repost');
}
};