mirror of
https://git.v0l.io/Kieran/void.cat.git
synced 2025-03-17 21:12:22 +01:00
Bug fixes
This commit is contained in:
parent
5f4b43b189
commit
1199ea0174
@ -43,10 +43,12 @@ public class UserController : Controller
|
||||
|
||||
var requestedId = isMe ? loggedUser!.Value : id.FromBase58Guid();
|
||||
var user = await _store.Get(requestedId);
|
||||
if (loggedUser != requestedId && !(user?.Flags.HasFlag(UserFlags.PublicProfile) ?? false))
|
||||
if (user == default) return NotFound();
|
||||
if (loggedUser != requestedId && !user.Flags.HasFlag(UserFlags.PublicProfile))
|
||||
return NotFound();
|
||||
|
||||
return Json(user!.ToApiUser(isMe));
|
||||
var isMyProfile = requestedId == user.Id;
|
||||
return Json(user!.ToApiUser(isMyProfile));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -117,6 +117,7 @@ public class UserManager
|
||||
var users = await _store.ListUsers(new(0, 1));
|
||||
if (users.TotalResults == 0)
|
||||
{
|
||||
newUser.Flags |= UserFlags.EmailVerified; // force email as verified for admin user
|
||||
newUser.Roles.Add(new()
|
||||
{
|
||||
UserId = newUser.Id,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import './App.css';
|
||||
|
||||
import {createBrowserRouter, Outlet, RouterProvider} from "react-router-dom";
|
||||
import {createBrowserRouter, LoaderFunctionArgs, Outlet, RouterProvider} from "react-router-dom";
|
||||
import {Provider} from "react-redux";
|
||||
|
||||
import store from "./Store";
|
||||
@ -11,6 +11,8 @@ import {UserLogin} from "./Pages/UserLogin";
|
||||
import {ProfilePage} from "./Pages/Profile";
|
||||
import {Header} from "./Components/Shared/Header";
|
||||
import {Donate} from "./Pages/Donate";
|
||||
import {VoidApi} from "@void-cat/api";
|
||||
import {ApiHost} from "./Const";
|
||||
|
||||
|
||||
const router = createBrowserRouter([
|
||||
@ -27,6 +29,13 @@ const router = createBrowserRouter([
|
||||
},
|
||||
{
|
||||
path: "/u/:id",
|
||||
loader: async ({params}: LoaderFunctionArgs) => {
|
||||
const api = new VoidApi(ApiHost, store.getState().login.jwt);
|
||||
if(params.id) {
|
||||
return await api.getUser(params.id);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
element: <ProfilePage/>
|
||||
},
|
||||
{
|
||||
|
@ -1,8 +1,8 @@
|
||||
import "./Profile.css";
|
||||
import {Fragment, useEffect, useState} from "react";
|
||||
import {Fragment, useState} from "react";
|
||||
import {useDispatch, useSelector} from "react-redux";
|
||||
import {default as moment} from "moment";
|
||||
import {useParams} from "react-router-dom";
|
||||
import {useLoaderData} from "react-router-dom";
|
||||
import {Profile} from "@void-cat/api";
|
||||
|
||||
import useApi from "Hooks/UseApi";
|
||||
@ -16,11 +16,10 @@ import ApiKeyList from "../Components/Profile/ApiKeyList";
|
||||
|
||||
export function ProfilePage() {
|
||||
const dispatch = useDispatch();
|
||||
const params = useParams();
|
||||
const loader = useLoaderData();
|
||||
const Api = useApi();
|
||||
|
||||
const [profile, setProfile] = useState<Profile>();
|
||||
const [noProfile, setNoProfile] = useState<boolean>();
|
||||
const [profile, setProfile] = useState(loader as Profile | null);
|
||||
const [emailCode, setEmailCode] = useState("");
|
||||
const [emailCodeError, setEmailCodeError] = useState("");
|
||||
const [newCodeSent, setNewCodeSent] = useState(false);
|
||||
@ -31,17 +30,6 @@ export function ProfilePage() {
|
||||
const needsEmailVerify = canEdit && profile?.needsVerification === true;
|
||||
const cantEditProfile = canEdit && !needsEmailVerify;
|
||||
|
||||
|
||||
async function loadProfile(id: string) {
|
||||
try {
|
||||
let p = await Api.getUser(id);
|
||||
setProfile(p);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
setNoProfile(true);
|
||||
}
|
||||
}
|
||||
|
||||
async function changeAvatar() {
|
||||
const res = await new Promise<Array<File>>((resolve) => {
|
||||
let i = document.createElement('input');
|
||||
@ -54,9 +42,7 @@ export function ProfilePage() {
|
||||
});
|
||||
|
||||
const file = res[0];
|
||||
const noop = (_: any) => {
|
||||
};
|
||||
const uploader = Api.getUploader(file, noop, noop, noop);
|
||||
const uploader = Api.getUploader(file);
|
||||
const rsp = await uploader.upload();
|
||||
if (rsp.ok) {
|
||||
setProfile({
|
||||
@ -79,7 +65,6 @@ export function ProfilePage() {
|
||||
async function submitCode(id: string, code: string) {
|
||||
try {
|
||||
await Api.submitVerifyCode(id, code);
|
||||
await loadProfile(id);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
setEmailCodeError("Invalid or expired code.");
|
||||
@ -157,12 +142,6 @@ export function ProfilePage() {
|
||||
);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (params.id) {
|
||||
loadProfile(params.id).catch(console.error);
|
||||
}
|
||||
}, [params]);
|
||||
|
||||
if (profile) {
|
||||
let avatarUrl = profile.avatar ?? DefaultAvatar;
|
||||
if (!avatarUrl.startsWith("http")) {
|
||||
@ -209,12 +188,6 @@ export function ProfilePage() {
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
} else if (noProfile) {
|
||||
return (
|
||||
<div className="page">
|
||||
<h1>No profile found :(</h1>
|
||||
</div>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<div className="page">
|
||||
|
Loading…
x
Reference in New Issue
Block a user