those who can ban(mods) can edit/delete models

This commit is contained in:
BFlat committed 2024-02-12 15:52:08 +07:00
1 parent 1e0aa98860
commit 3ca5c74d3c
3 files changed
+79 -49

No files matched your search

@@ -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 <SessionContext.Provider {...{ value: {
canEditTtsModel,
check,
loggedIn,
modal: { close, open, view },
querySession,
querySubscriptions,
sessionFetched,
user,
userTokenMatch
} }}>
{ children }
{
<Modal {...{
content: AccountModal,
contentProps: { view, viewSwitch },
handleClose: close,
noHeader: true,
show: view > 0,
showButtons: false,
// title: "You need to login",
}}/>
}
</SessionContext.Provider>
};
return (
<SessionContext.Provider
{...{
value: {
canEditTtsModel,
canBanUsers,
check,
loggedIn,
modal: { close, open, view },
querySession,
querySubscriptions,
sessionFetched,
user,
userTokenMatch,
},
}}
>
{children}
{
<Modal
{...{
content: AccountModal,
contentProps: { view, viewSwitch },
handleClose: close,
noHeader: true,
show: view > 0,
showButtons: false,
// title: "You need to login",
}}
/>
}
</SessionContext.Provider>
);
}
@@ -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<SessionContextType>({
canEditTtsModel: () => false,
canBanUsers: () => false,
check: () => false,
loggedIn: false,
sessionFetched: false,
@@ -34,5 +36,5 @@ export default createContext<SessionContextType>({
open: () => {},
view: ModalView.Closed,
},
userTokenMatch: () => false
});
userTokenMatch: () => false,
});
@@ -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({
</div>
</Panel>
{canEditTtsModel(weight.creator?.user_token) && (
{(canEditTtsModel(weight.creator?.user_token) ||
canBanUsers()) && (
<div className="d-flex gap-2">
<Button
full={true}