.ts
TypeScript
(application/typescript)
// 1st-party
import { ReqHandler } from "@ethicdevs/react-monolith";
// app
import { AppRoute, AppRouteParams } from "../../routes.defs";
import { makeUsersService } from "../../services/user";
// app views
import SettingsView, {
  SettingsViewProps,
} from "../../views/settings/SettingsView";

const getSettingsView: ReqHandler<AppRouteParams, AppRoute.SETTINGS> = async (
  request,
  reply
) => {
  const { curr_user_username } = request.session.data;

  if (curr_user_username == null) {
    return reply.status(404).callNotFound();
  }

  const usersService = makeUsersService({ request });
  const user = await usersService.getUserByUsername(curr_user_username);

  if (user == null) {
    return reply.status(404).callNotFound();
  }

  const reqHandler = reply.makeRequestHandler(request, reply);
  return reqHandler<SettingsViewProps>(SettingsView.name, {
    sshKeys: await usersService.getUserSSHKeys(user),
  });
};

export default getSettingsView;