import type { ReqHandler } from "@ethicdevs/react-monolith";
import { User } from "@prisma/client";
import { AppRoute, AppRoutesParams } from "../../routes";
import { makeUsersService } from "../../services/user";
import UserDetailsView, {
UserDetailsViewProps,
} from "../../views/user/UserDetailsView";
const getUserDetailsView: ReqHandler = async (request, reply) => {
const { username } =
request.params as AppRoutesParams[AppRoute.USER_DETAILS]["params"];
const { curr_user_uid } = request.session.data;
const usersService = makeUsersService({ request });
const user = await usersService.getUserByUsername(username);
if (user == null) {
return reply.status(404).callNotFound();
}
let currentUser: User | null = null;
if (curr_user_uid != null && user.id === curr_user_uid) {
currentUser = await usersService.getUserById(curr_user_uid);
}
const reqHandler = reply.makeRequestHandler(request, reply);
return reqHandler<UserDetailsViewProps>(UserDetailsView.name, {
currentUser,
repositories: await usersService.getUserRepositories(user),
user,
});
};
export default getUserDetailsView;