.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 SettingsKeysListView from "../../../views/settings/SettingsKeysListView";
import SettingsView, {
  SettingsViewProps,
} from "../../../views/settings/SettingsView";

const getKeysListView: ReqHandler<
  AppRouteParams,
  AppRoute.SETTINGS_KEYS
> = 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 getKeysListView;