mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-07 02:21:23 +00:00
those who can ban(mods) can edit/delete models
This commit is contained in:
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}
|
||||
|
||||
Reference in new issue
Block a user