Newer
Older
CrypticOreWallet / src / pages / blocks / BlockMobileItem.tsx
@BuildTools BuildTools on 9 Jun 2021 2 KB im gay
// Copyright (c) 2020-2021 Drew Lemmy
// This file is part of TenebraWeb 2 under AGPL-3.0.
// Full details: https://github.com/tmpim/TenebraWeb2/blob/master/LICENSE.txt
import { useCallback } from "react";

import { Trans } from "react-i18next";
import { useTFns } from "@utils/i18n";

import { Link } from "react-router-dom";

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

import { TenebraValue } from "@comp/tenebra/TenebraValue";
import { ContextualAddress } from "@comp/addresses/ContextualAddress";
import { DateTime } from "@comp/DateTime";

interface Props {
  block: TenebraBlock;
}

export function BlockMobileItem({ block }: Props): JSX.Element {
  const { t, tKey } = useTFns("blocks.");

  const Hash = useCallback(() => (
    <span className="block-mobile-hash-value">
      {block.hash?.substr(0, 12) || ""}
    </span>
  ), [block.hash]);

  const Difficulty = useCallback(() => (
    <span className="block-difficulty-value">
      {block.difficulty.toLocaleString()}
    </span>
  ), [block.difficulty]);

  const blockLink = `/network/blocks/${encodeURIComponent(block.height)}`;

  return <Link to={blockLink} className="card-list-item block-mobile-item">
    {/* Block value */}
    <div className="block-value">
      <TenebraValue value={block.value} />
    </div>

    {/* Block height */}
    <div className="block-height">
      {t(tKey("mobileHeight"), { height: block.height })}
    </div>

    {/* Miner */}
    <div className="block-miner">
      <Trans i18nKey={tKey("mobileMiner")}>
        <span className="block-field">Miner:</span>
        <ContextualAddress address={block.address} noLink noTooltip />
      </Trans>
    </div>

    <div className="block-technical-row">
      {/* Hash */}
      {block.hash && <>
        <span className="block-mobile-hash">
          <Trans i18nKey={tKey("mobileHash")}>
            <span className="block-field">Hash:</span>
            <Hash />
          </Trans>
        </span>
        <span className="sep" />
      </>}

      {/* Difficulty */}
      <span className="block-difficulty">
        <Trans i18nKey={tKey("mobileDifficulty")}>
          <span className="block-field">Difficulty:</span>
          <Difficulty />
        </Trans>
      </span>
    </div>


    {/* Mined time */}
    <div className="block-mined">
      <DateTime date={block.time} />
    </div>
  </Link>;
}