12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import orderBy from 'lodash/orderBy';
- import {Relay, RelayActivity} from 'sentry/types';
- import ActivityList from './activityList';
- import CardHeader from './cardHeader';
- import {getRelaysByPublicKey} from './utils';
- import WaitingActivity from './waitingActivity';
- type CardHeaderProps = React.ComponentProps<typeof CardHeader>;
- type WaitingActivityProps = React.ComponentProps<typeof WaitingActivity>;
- type Props = {
- disabled: boolean;
- relayActivities: Array<RelayActivity>;
- relays: Array<Relay>;
- } & Pick<CardHeaderProps, 'onDelete' | 'onEdit'> &
- Pick<WaitingActivityProps, 'onRefresh'>;
- const List = ({
- relays,
- relayActivities,
- onRefresh,
- onDelete,
- onEdit,
- disabled,
- }: Props) => {
- const orderedRelays = orderBy(relays, relay => relay.created, ['desc']);
- const relaysByPublicKey = getRelaysByPublicKey(orderedRelays, relayActivities);
- const renderCardContent = (activities: Array<RelayActivity>) => {
- if (!activities.length) {
- return <WaitingActivity onRefresh={onRefresh} disabled={disabled} />;
- }
- return <ActivityList activities={activities} />;
- };
- return (
- <div>
- {Object.keys(relaysByPublicKey).map(relayByPublicKey => {
- const {name, description, created, activities} =
- relaysByPublicKey[relayByPublicKey];
- return (
- <div key={relayByPublicKey}>
- <CardHeader
- publicKey={relayByPublicKey}
- name={name}
- description={description}
- created={created}
- onEdit={onEdit}
- onDelete={onDelete}
- disabled={disabled}
- />
- {renderCardContent(activities)}
- </div>
- );
- })}
- </div>
- );
- };
- export default List;
|