slanted-gamedev-toolz
Version:
A slanted mix of tools for your brilliant ideas in game design.
45 lines (44 loc) • 2.24 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { useCallback } from "react";
import { useNavigate } from "react-router-dom";
import { toast } from "react-toastify";
import { saveStringToastConfig } from "../../../../constants/toastConfig";
import { useGlobalContext } from "../../../../contexts/globalContext/GlobalContext";
import { APP_ROUTES } from "../../../layouts/appRoutes";
import { colors } from "../../../theme/palettes/colors";
import { HexBtn } from "../../uiComponents/buttons/HexBtn/HexBtn";
import { menuText } from "../LocalizationSelect/menuText";
import { CopySaveStringToast } from "./CopySaveStringToast";
import { compressBoxerWithPako } from "./saveStringUtil";
export const ImportExportBoxerBtns = ({ setSaveString, hasShownToastOnSave, saveString, }) => {
const navigate = useNavigate();
const { getLocalizedText, selectedBoxer } = useGlobalContext();
const importBoxerString = useCallback(() => {
navigate(APP_ROUTES.IMPORT_BOXER.PATH, {
replace: true,
state: { saveString: saveString },
});
}, [navigate, saveString]);
const exportBoxerString = useCallback(() => {
const string = selectedBoxer ? compressBoxerWithPako(selectedBoxer) : "";
setSaveString(string);
// Copy to clipboard
return navigator.clipboard
.writeText(string)
.then(() => {
if (!hasShownToastOnSave.current) {
hasShownToastOnSave.current = true;
toast(_jsx(CopySaveStringToast, {}), saveStringToastConfig);
}
return string;
})
.catch((err) => {
console.error("Unable to copy to clipboard", err);
throw err;
});
}, [selectedBoxer, setSaveString, hasShownToastOnSave]);
return (_jsxs("div", { style: {
display: "flex",
justifyContent: "center",
}, children: [_jsx(HexBtn, { label: getLocalizedText(menuText.importBoxer), onClick: importBoxerString, color: colors.red }), selectedBoxer ? (_jsx(HexBtn, { label: `${getLocalizedText(menuText.exportBoxer)} (${selectedBoxer.name})`, onClick: exportBoxerString, color: colors.red })) : null] }));
};