GitFOSS
.ts
TypeScript
(application/typescript)
// 3rd-party
import type { ReqHandler } from "@ethicdevs/react-monolith";
// app
import { AppRoute } from "../../routes.defs";
import { makeUsersService } from "../../services/user";
// app views
import UserDashboardView, {
  UserDashboardViewProps,
} from "../../views/user/UserDashboardView";

const getUserDashboardView: ReqHandler = async (request, reply) => {
  const { authenticated, curr_user_uid } = request.session.data;

  if (authenticated === false || curr_user_uid == null) {
    reply.redirect(302, request.namedViewsPathMap[AppRoute.AUTH_LOGIN]);
    return reply;
  }

  const usersService = makeUsersService({ request });
  const currentUser = await usersService.getUserById(curr_user_uid);

  if (currentUser == null) {
    reply.redirect(302, request.namedViewsPathMap[AppRoute.AUTH_LOGIN]);
    return reply;
  }

  const repositories = await usersService.getUserRepositories(currentUser);

  const reqHandler = reply.makeRequestHandler(request, reply);
  return reqHandler<UserDashboardViewProps>(UserDashboardView.name, {
    currentUser,
    repositories,
  });
};

export default getUserDashboardView;