rune
Version:
CLI to upload your games to Rune
37 lines (36 loc) • 2.27 kB
JavaScript
import { Box, Text } from "ink";
import open from "open";
import React, { useEffect, useState } from "react";
import { Choose } from "../components/Choose.js";
import { Step } from "../components/Step.js";
import { useDashboardMagicLink } from "../gql/useMagicDashboardLink.js";
import { formatApolloError } from "../lib/formatApolloError.js";
export function OpenDashboard() {
const { createDashboardMagicLink, dashboardMagicLink, error } = useDashboardMagicLink();
const [status, setStatus] = useState("waiting");
useEffect(() => {
createDashboardMagicLink({});
}, [createDashboardMagicLink]);
return (React.createElement(Box, { flexDirection: "column" },
!error && !dashboardMagicLink && (React.createElement(Step, { status: "waiting", label: "Opening..." })),
error && React.createElement(Text, { color: "red" }, formatApolloError(error, {})),
!error && dashboardMagicLink && (React.createElement(React.Fragment, null,
React.createElement(Text, null,
"Dashboard link: ",
React.createElement(Text, { color: "green" }, dashboardMagicLink)),
status === "opened" ? (React.createElement(Step, { status: "success", label: "Dashboard opened" })) : status === "failedBrowser" ? (React.createElement(Step, { status: "error", label: "Failed to open your default browser. Please open the link manually" })) : status === "skipped" ? (React.createElement(Step, { status: "success", label: "Done." })) : (React.createElement(Step, { status: "userInput", label: "Open in default browser?", view: React.createElement(Choose, { options: ["Yes", "No"], onSubmit: (response) => {
const shouldOpen = response === "Yes";
if (shouldOpen) {
open(dashboardMagicLink)
.then(() => {
setStatus("opened");
})
.catch(() => {
setStatus("failedBrowser");
});
}
else {
setStatus("skipped");
}
} }) }))))));
}