.ts
TypeScript
(application/typescript)
// 1st-party
import type { ReactView } from "@ethicdevs/react-monolith";
// 3rd-party
import React from "react";
// generated via script[generate:prisma]
import type { Organization, Repository, User } from "@prisma/client";
// app
import type { CommonProps } from "../../types";
import { IslandWrapper, Layout, PageWrapper } from "../../components";
// app islands
import RepositoryHero from "../../islands/RepositoryHero";
import RepositoriesList from "../../islands/RepositoriesList";

export interface UserDetailsViewProps extends CommonProps {
  user: User;
  currentUser: User | null;
  repositories: (Repository & { parentOrg: Organization })[];
}

const UserDetailsView: ReactView<UserDetailsViewProps> = ({
  commonProps,
  user,
  currentUser,
  repositories,
}) => {
  return (
    <Layout
      {...commonProps}
      showDrawerSettings={currentUser != null && currentUser!.id === user.id}
      username={user.username!}
    >
      <PageWrapper>
        <IslandWrapper data-islandid={`${RepositoryHero.name}$$0`}>
          <RepositoryHero
            themeScheme={commonProps.themeScheme}
            parentOrg={{ slug: user.username } as any}
            repo={{ slug: "" } as any}
            path={`Repositories`}
            showForkButton={false}
            showNewButton={false}
            // newButtonText={"New SSH Key"}
            // newButtonUrl={buildRouteLink(
            //   AppRoute.SETTINGS_KEY_ADD,
            //   { username: commonProps.currentUserUsername! },
            //   { encodeURIComponent: 0 },
            // )}
          />
        </IslandWrapper>
        <IslandWrapper data-islandid={`${RepositoriesList.name}$$0`}>
          <RepositoriesList
            repositories={repositories}
            themeScheme={commonProps.themeScheme}
          />
        </IslandWrapper>
      </PageWrapper>
    </Layout>
  );
};

UserDetailsView.displayName = "UserDetailsView";
export default UserDetailsView;