Skip to content

Commit 3d2bb77

Browse files
elliotBraemitexpert120coderabbitai[bot]
authored
Upgrade staging (#191)
* moderation handle platform_user_id and near account id * standardize activity * fmt * delete tests * fix shared types * activity leaderboard * throw not error * fix services * feat: use tanstack table for leaderboard (#183) * fix: mobile layout improvement feed page (#185) * Refactors create feed flow, steps use router (#188) * wip * feed types * better feed form * Update packages/shared-db/tsconfig.json Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/app/src/routes/_layout/create/feed/settings.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Update apps/app/src/routes/_layout/create/feed/index.tsx Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * set lock * nitpicks * fmt --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Implements JWT auth flow with 7 day tokens (#187) * better auth services * nit picks * nonce validation * nitpicks * clean up * fix error types * import error * fix auth requests * fix: toast colors not correct (#189) * fix: toast colors not corrent * fmt * fix feed * fix zod type * fix @ and config * fmt * feat: add settings page UI * feat: add route based tab navigation * feat: welcome route for new feed (#192) * feat: welcome route for new feed * fix: feed overflow in top feeds column of leaderboard * fix: coderabbit comments * moderate submissions * fmt * fmt --------- Co-authored-by: Zeeshan Ahmad <itexpert120@outlook.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
1 parent 75ebdb6 commit 3d2bb77

File tree

15 files changed

+553
-121
lines changed

15 files changed

+553
-121
lines changed

apps/app/src/components/FeedItem.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const NotesSection = ({
3030
}: {
3131
title: string;
3232
username: string;
33-
note: string | null;
33+
note?: string | null;
3434
className?: string;
3535
}) => {
3636
// Change title based on whether there are notes or not
@@ -63,8 +63,8 @@ const ModerationActions = ({
6363
submission: FeedContextSubmission;
6464
feedId: string;
6565
}) => {
66-
const approveMutation = useApproveSubmission();
67-
const rejectMutation = useRejectSubmission();
66+
const approveMutation = useApproveSubmission(submission.tweetId);
67+
const rejectMutation = useRejectSubmission(submission.tweetId);
6868

6969
const handleApprove = () => {
7070
if (!submission.tweetId || !feedId) {
@@ -97,14 +97,19 @@ const ModerationActions = ({
9797
});
9898
};
9999

100-
const isPending = approveMutation.isPending || rejectMutation.isPending;
101-
102100
return (
103101
<div className="flex justify-center flex-col gap-2">
104-
<Button onClick={handleApprove} disabled={isPending}>
102+
<Button
103+
onClick={handleApprove}
104+
disabled={approveMutation.isPending || rejectMutation.isPending}
105+
>
105106
{approveMutation.isPending ? "Approving..." : "Approve"}
106107
</Button>
107-
<Button onClick={handleReject} variant="destructive" disabled={isPending}>
108+
<Button
109+
onClick={handleReject}
110+
variant="destructive"
111+
disabled={approveMutation.isPending || rejectMutation.isPending}
112+
>
108113
{rejectMutation.isPending ? "Rejecting..." : "Reject"}
109114
</Button>
110115
</div>
@@ -203,7 +208,7 @@ export const FeedItem = ({
203208
<div className="flex-col flex-grow">
204209
<NotesSection
205210
title="Moderation Notes"
206-
username={lastModeration.adminId}
211+
username={lastModeration.moderatorAccountId}
207212
note={lastModeration.note}
208213
// className="mb-4"
209214
/>

apps/app/src/components/UserMenu.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from "./ui/dropdown-menu";
1010

1111
import { useNavigate } from "@tanstack/react-router";
12-
import { ChevronDown, CircleUserRound, LogOut } from "lucide-react";
12+
import { ChevronDown, CircleUserRound, LogOut, Settings } from "lucide-react";
1313
import { useAuth } from "../contexts/auth-context";
1414
import { useNearSocialProfile } from "../hooks/near-social";
1515
import { AvatarProfile } from "./AvatarProfile";
@@ -89,7 +89,7 @@ export default function UserMenu({ className }: UserMenuProps) {
8989
</DropdownMenuTrigger>
9090
<DropdownMenuContent className="w-56 mt-4">
9191
<DropdownMenuItem>
92-
<div className="flex gap-2 w-full items-start">
92+
<div className="flex gap-2 w-full items-center">
9393
{currentAccountId ? (
9494
<AvatarProfile accountId={currentAccountId} size="medium" />
9595
) : (
@@ -112,6 +112,15 @@ export default function UserMenu({ className }: UserMenuProps) {
112112
<CircleUserRound />
113113
<span>Profile</span>
114114
</DropdownMenuItem>
115+
<DropdownMenuItem
116+
className="cursor-pointer hover:bg-gray-100"
117+
onClick={() => {
118+
navigate({ to: "/profile/settings" });
119+
}}
120+
>
121+
<Settings />
122+
<span>Settings</span>
123+
</DropdownMenuItem>
115124
<DropdownMenuItem
116125
onClick={handleSignOut}
117126
className="cursor-pointer hover:bg-gray-100"

apps/app/src/components/leaderboard/LeaderboardColumns.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,11 @@ export function createLeaderboardColumns(
8888
<div className="flex flex-col min-h-[32px] justify-center">
8989
<div className="flex items-center gap-2">
9090
{feedSubmissions && feedSubmissions.length > 0 && (
91-
<div className="flex items-center justify-between gap-1 border border-neutral-400 px-2 py-1 rounded-md w-[150px]">
92-
<span className="text-sm">#{feedSubmissions[0].feedId}</span>
93-
<span className="text-sm">
91+
<div className="flex items-center justify-between gap-1 border border-neutral-400 px-2 py-1 rounded-md w-[150px] min-w-0">
92+
<span className="text-sm truncate flex-shrink">
93+
#{feedSubmissions[0].feedId}
94+
</span>
95+
<span className="text-sm whitespace-nowrap flex-shrink-0">
9496
{feedSubmissions[0].count}/{feedSubmissions[0].totalInFeed}
9597
</span>
9698
</div>
@@ -116,9 +118,11 @@ export function createLeaderboardColumns(
116118
<div className="flex flex-col gap-2 mt-2 pl-0">
117119
{feedSubmissions.slice(1).map((feed, feedIndex) => (
118120
<div key={feedIndex} className="flex items-center">
119-
<div className="flex items-center gap-1 border border-neutral-400 px-2 py-1 rounded-md justify-between w-[150px]">
120-
<span className="text-sm">#{feed.feedId}</span>
121-
<span className="text-sm">
121+
<div className="flex items-center gap-1 border border-neutral-400 px-2 py-1 rounded-md justify-between w-[150px] min-w-0">
122+
<span className="text-sm truncate flex-shrink">
123+
#{feed.feedId}
124+
</span>
125+
<span className="text-sm whitespace-nowrap flex-shrink-0">
122126
{feed.count}/{feed.totalInFeed}
123127
</span>
124128
</div>

apps/app/src/components/ui/tabs.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const TabsList = React.forwardRef<
1212
<TabsPrimitive.List
1313
ref={ref}
1414
className={cn(
15-
"inline-flex h-9 items-center justify-center rounded-lg bg-neutral-100 p-1 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400",
15+
"inline-flex h-9 items-center justify-center rounded-lg bg-slate-100 p-1 text-neutral-500 dark:bg-neutral-800 dark:text-neutral-400",
1616
className,
1717
)}
1818
{...props}

apps/app/src/config/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { isProduction } from './../../../api/src/services/config.service';
1+
import { isProduction } from "./../../../api/src/services/config.service";
22
interface EVMChain {
33
chainId: number;
44
name: string;
@@ -25,7 +25,10 @@ const evmWalletChains: EVMWalletChains = {
2525
},
2626
};
2727

28-
export const NETWORK_ID = isProduction ? "mainnet" : (process.env.PUBLIC_NETWORK || "testnet");
28+
export const NETWORK_ID =
29+
process.env.NODE_ENV === "production" // TODO: strange
30+
? "mainnet"
31+
: process.env.PUBLIC_NETWORK || "testnet";
2932
export const EVMWalletChain = evmWalletChains[NETWORK_ID];
3033

3134
// API Configuration

apps/app/src/lib/api/moderation.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
import { useApiMutation } from "../../hooks/api-client";
2-
import { useQueryClient } from "@tanstack/react-query";
3-
import { useAuth } from "../../contexts/auth-context";
4-
import { toast } from "../../hooks/use-toast";
51
import type {
62
CreateModerationRequest,
73
ModerationActionCreatedWrappedResponse,
84
ModerationActionType,
95
} from "@curatedotfun/types";
6+
import { useQueryClient } from "@tanstack/react-query";
7+
import { useAuth } from "../../contexts/auth-context";
8+
import { useApiMutation } from "../../hooks/api-client";
9+
import { toast } from "../../hooks/use-toast";
1010

11-
const useModerateSubmission = (moderationAction: ModerationActionType) => {
11+
const useModerateSubmission = (
12+
moderationAction: ModerationActionType,
13+
submissionId: string,
14+
) => {
1215
const queryClient = useQueryClient();
1316
const auth = useAuth();
1417

@@ -23,6 +26,7 @@ const useModerateSubmission = (moderationAction: ModerationActionType) => {
2326
message: "moderateSubmission",
2427
},
2528
{
29+
mutationKey: ["moderate", moderationAction, submissionId],
2630
onSuccess: (_data, variables) => {
2731
queryClient.invalidateQueries({ queryKey: ["submissions"] });
2832
queryClient.invalidateQueries({
@@ -54,7 +58,7 @@ const useModerateSubmission = (moderationAction: ModerationActionType) => {
5458
);
5559

5660
const mutate = (
57-
payload: Omit<CreateModerationRequest, "action" | "adminId">,
61+
payload: Omit<CreateModerationRequest, "action" | "moderatorAccountId">,
5862
) => {
5963
if (!auth.isSignedIn || !auth.currentAccountId) {
6064
console.error(
@@ -70,13 +74,15 @@ const useModerateSubmission = (moderationAction: ModerationActionType) => {
7074
const internalPayload: CreateModerationRequest = {
7175
...payload,
7276
action: moderationAction,
73-
adminId: auth.currentAccountId,
77+
moderatorAccountId: auth.currentAccountId,
7478
};
7579
actualMutate(internalPayload);
7680
};
7781

7882
return { mutate, ...rest };
7983
};
8084

81-
export const useApproveSubmission = () => useModerateSubmission("approve");
82-
export const useRejectSubmission = () => useModerateSubmission("reject");
85+
export const useApproveSubmission = (submissionId: string) =>
86+
useModerateSubmission("approve", submissionId);
87+
export const useRejectSubmission = (submissionId: string) =>
88+
useModerateSubmission("reject", submissionId);

0 commit comments

Comments
 (0)