Newer
Older
CrypticOreWallet / src / pages / transactions / TransactionRawDataCard.tsx
@Drew Lemmy Drew Lemmy on 5 Mar 2021 1 KB refactor: import aliases
// Copyright (c) 2020-2021 Drew Lemmy
// This file is part of KristWeb 2 under GPL-3.0.
// Full details: https://github.com/tmpim/KristWeb2/blob/master/LICENSE.txt
import React from "react";
import { Card, Table } from "antd";

import { useTranslation } from "react-i18next";

import { KristTransaction } from "@api/types";

import { HelpIcon } from "@comp/HelpIcon";

export function TransactionRawDataCard({ transaction }: { transaction: KristTransaction }): JSX.Element {
  const { t } = useTranslation();

  // Convert the transaction object to an array of entries {key, value}
  const processed = Object.entries(transaction)
    .map(([key, value]) => ({ key, value }));

  return <Card
    className="kw-card transaction-card-raw-data"
    title={<>
      {t("transaction.cardRawDataTitle")}
      <HelpIcon textKey="transaction.cardRawDataHelp" />
    </>}
  >
    <Table
      className="raw-data-table"
      size="small"

      dataSource={processed}
      rowKey="key"

      columns={[
        // Key
        {
          title: t("transaction.rawDataColumnKey"),
          dataIndex: "key", key: "key"
        },

        // Value
        {
          title: t("transaction.rawDataColumnValue"),
          dataIndex: "value", key: "value",

          className: "transaction-raw-data-cell-value",
          render: value => {
            if (value === null || value === undefined)
              return <span className="transaction-raw-data-null">null</span>;

            return value.toString();
          }
        }
      ]}

      pagination={false}
    />
  </Card>;
}