Nominators.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from "react";
  2. import User from "../User";
  3. import { Handles, Stake } from "../../types";
  4. // TODO use MemberBox after refactor
  5. const Nominators = (props: {
  6. sortBy: (field: string) => void;
  7. toggleExpand: () => void;
  8. expand: boolean;
  9. handles: Handles;
  10. nominators?: Stake[];
  11. }) => {
  12. const { sortBy, toggleExpand, expand, handles, nominators } = props;
  13. if (!nominators || !nominators.length) return <div />;
  14. let sum: number = 0;
  15. nominators.forEach((n) => (sum += n.value));
  16. if (nominators.length === 1)
  17. return (
  18. <div className="d-flex flex-row">
  19. <div onClick={() => sortBy("othersStake")}>{nominators[0].value}</div>
  20. <User id={nominators[0].who} handle={handles[nominators[0].who]} />
  21. </div>
  22. );
  23. if (expand)
  24. return (
  25. <div>
  26. <span onClick={() => sortBy("othersStake")}>{sum}</span>
  27. <span onClick={toggleExpand}> -</span>
  28. {nominators.map((n) => (
  29. <div key={n.who} className="d-flex flex-row">
  30. <div>{n.value}</div>
  31. <User id={n.who} handle={handles[n.who]} />
  32. </div>
  33. ))}
  34. </div>
  35. );
  36. return (
  37. <div>
  38. <span onClick={() => sortBy("othersStake")}> {sum}</span>
  39. {nominators
  40. .sort((a, b) => b.value - a.value)
  41. .map((n) => (
  42. <User key={n.who} id={n.who} handle={handles[n.who]} />
  43. ))}
  44. <span onClick={toggleExpand}> +</span>
  45. </div>
  46. );
  47. };
  48. export default Nominators;