// 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 { useState } from "react"; import { Progress } from "antd"; import { Trans } from "react-i18next"; import { TFns } from "@utils/i18n"; interface EditProgressHookResponse { progressBar: JSX.Element; onProgress: () => void; initProgress: (total: number) => void; resetProgress: () => void; } export function useEditProgress( { t, tKey }: TFns ): EditProgressHookResponse { const [submitProgress, setSubmitProgress] = useState(0); const [submitTotal, setSubmitTotal] = useState(1); // Increment the progress bar when one of the names has been edited const onProgress = () => setSubmitProgress(c => c + 1); function initProgress(total: number) { setSubmitProgress(0); setSubmitTotal(total); } function resetProgress() { setSubmitProgress(0); setSubmitTotal(1); } const progressBar = <> {/* Submitting text */} <div style={{ textAlign: "center", marginBottom: 12 }}> <Trans t={t} i18nKey={tKey("progress")} count={submitTotal}> Editing <b>{{ count: submitTotal }}</b> names... </Trans> </div> {/* Progress bar */} <Progress percent={Math.round((submitProgress / submitTotal) * 100)} status="active" /> </>; return { progressBar, onProgress, initProgress, resetProgress }; }