🏡 index : quine-global/quine-anaconda-webui.git

/*
 * Copyright (C) 2024 Red Hat, Inc.
 * SPDX-License-Identifier: LGPL-2.1-or-later
 */

import cockpit from "cockpit";

import { useContext, useEffect, useState } from "react";

import { AvailabilityState } from "../helpers.js";

import {
    StorageContext,
} from "../../../../contexts/Common.jsx";

import {
    useDiskTotalSpace,
    useRequiredSize,
} from "../../../../hooks/Storage.jsx";

const _ = cockpit.gettext;

export const useAvailabilityEraseAll = () => {
    const [scenarioAvailability, setScenarioAvailability] = useState();

    const { diskSelection } = useContext(StorageContext);
    const selectedDisks = diskSelection.selectedDisks;
    const diskTotalSpace = useDiskTotalSpace();
    const requiredSize = useRequiredSize();

    useEffect(() => {
        if ([diskTotalSpace, requiredSize].some((value) => value === undefined)) {
            return;
        }

        const availability = new AvailabilityState();

        availability.available = !!selectedDisks.length;
        availability.hidden = false;

        if (diskTotalSpace < requiredSize) {
            availability.available = false;
            availability.reason = _("Not enough space on selected disks.");
            availability.hint = cockpit.format(
                _("The installation needs $0 of disk space; however, the capacity of the selected disks is only $1."),
                cockpit.format_bytes(requiredSize), cockpit.format_bytes(diskTotalSpace));
        }

        return setScenarioAvailability(availability);
    }, [diskTotalSpace, requiredSize, selectedDisks]);

    return scenarioAvailability;
};