From 3ca5c74d3cf51946ffdbe0b4221d343b99e0109a Mon Sep 17 00:00:00 2001 From: BFlat Date: Mon, 12 Feb 2024 15:52:08 +0700 Subject: [PATCH 1/5] those who can ban(mods) can edit/delete models --- .../SessionProvider/SessionProvider.tsx | 91 ++++++++++++------- .../src/context/SessionContext.tsx | 32 ++++--- .../src/v2/view/pages/weight/WeightPage.tsx | 5 +- 3 files changed, 79 insertions(+), 49 deletions(-) diff --git a/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx b/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx index 200f6c5796..a6c0154325 100644 --- a/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx +++ b/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx @@ -12,13 +12,26 @@ interface Props { sessionWrapper?: any; } -export default function SessionProvider({ children, querySession, querySubscriptions, sessionFetched, sessionWrapper }: Props) { - const sessionResponse = sessionWrapper?.sessionStateResponse || { logged_in: false }; +export default function SessionProvider({ + children, + querySession, + querySubscriptions, + sessionFetched, + sessionWrapper, +}: Props) { + const sessionResponse = sessionWrapper?.sessionStateResponse || { + logged_in: false, + }; const { logged_in: loggedIn, user } = sessionResponse; - const [view,viewSet] = useState(ModalView.Closed); + const [view, viewSet] = useState(ModalView.Closed); const open = () => viewSet(ModalView.Signup); - const close = () => { viewSet(ModalView.Closed);}; - const viewSwitch = () => view === ModalView.Signup ? viewSet(ModalView.Login) : viewSet(ModalView.Signup); + const close = () => { + viewSet(ModalView.Closed); + }; + const viewSwitch = () => + view === ModalView.Signup + ? viewSet(ModalView.Login) + : viewSet(ModalView.Signup); const check = () => { if (user) { return true; @@ -27,31 +40,45 @@ export default function SessionProvider({ children, querySession, querySubscript return false; } }; - const userTokenMatch = (otherUserToken: string) => !otherUserToken || !user?.user_token ? false : user.user_token === otherUserToken; - const canEditTtsModel = (userToken: string) => user?.canEditOtherUsersTtsModels || userTokenMatch(userToken); + const userTokenMatch = (otherUserToken: string) => + !otherUserToken || !user?.user_token + ? false + : user.user_token === otherUserToken; + const canEditTtsModel = (userToken: string) => + user?.canEditOtherUsersTtsModels || userTokenMatch(userToken); + const canBanUsers = () => user?.can_ban_users || false; - return - { children } - { - 0, - showButtons: false, - // title: "You need to login", - }}/> - } - -}; \ No newline at end of file + return ( + + {children} + { + 0, + showButtons: false, + // title: "You need to login", + }} + /> + } + + ); +} diff --git a/packages/fakeyou.com/src/context/SessionContext.tsx b/packages/fakeyou.com/src/context/SessionContext.tsx index 0e08199c3b..04be5c22b4 100644 --- a/packages/fakeyou.com/src/context/SessionContext.tsx +++ b/packages/fakeyou.com/src/context/SessionContext.tsx @@ -3,29 +3,31 @@ import { createContext } from "react"; export enum ModalView { Closed, Signup, - Login + Login, } interface ModalProps { - close: () => void, - open: () => void, - view: ModalView + close: () => void; + open: () => void; + view: ModalView; } interface SessionContextType { - canEditTtsModel: (token:string) => boolean, - check: () => boolean, - loggedIn: boolean, - modal: ModalProps, - querySession?: any, - querySubscriptions?: any, - sessionFetched: boolean, - user?: any, - userTokenMatch: (token:string) => boolean + canEditTtsModel: (token: string) => boolean; + canBanUsers: () => boolean; + check: () => boolean; + loggedIn: boolean; + modal: ModalProps; + querySession?: any; + querySubscriptions?: any; + sessionFetched: boolean; + user?: any; + userTokenMatch: (token: string) => boolean; } export default createContext({ canEditTtsModel: () => false, + canBanUsers: () => false, check: () => false, loggedIn: false, sessionFetched: false, @@ -34,5 +36,5 @@ export default createContext({ open: () => {}, view: ModalView.Closed, }, - userTokenMatch: () => false -}); \ No newline at end of file + userTokenMatch: () => false, +}); diff --git a/packages/fakeyou.com/src/v2/view/pages/weight/WeightPage.tsx b/packages/fakeyou.com/src/v2/view/pages/weight/WeightPage.tsx index eae5df337d..dd1d7f65f1 100644 --- a/packages/fakeyou.com/src/v2/view/pages/weight/WeightPage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/weight/WeightPage.tsx @@ -66,7 +66,7 @@ export default function WeightPage({ enqueueTtsJob, inferenceJobsByCategory, }: WeightProps) { - const { canEditTtsModel, user } = useSession(); + const { canEditTtsModel, canBanUsers, user } = useSession(); const { search } = useLocation(); const { weight_token } = useParams<{ weight_token: string }>(); const source = search ? new URLSearchParams(search).get("source") : ""; @@ -572,7 +572,8 @@ export default function WeightPage({ - {canEditTtsModel(weight.creator?.user_token) && ( + {(canEditTtsModel(weight.creator?.user_token) || + canBanUsers()) && (
+ ) : null} + + {media.urlCursor && !onScreen ? ( +