Merge branch 'master' into typescript
This commit is contained in:
+71
-48
@@ -8,6 +8,7 @@ import OfflineBanner from "../components/banner/OfflineBanner";
|
||||
import LoadingOverlay from "../components/LoadingOverlay";
|
||||
import Link from "../components/Link";
|
||||
import MapLoadingOverlay from "../components/map/MapLoadingOverlay";
|
||||
import UpgradingLoadingOverlay from "../components/UpgradingLoadingOverlay";
|
||||
|
||||
import AuthModal from "../modals/AuthModal";
|
||||
import GameExpiredModal from "../modals/GameExpiredModal";
|
||||
@@ -18,6 +19,10 @@ import { MapStageProvider } from "../contexts/MapStageContext";
|
||||
import { useDatabase } from "../contexts/DatabaseContext";
|
||||
import { PlayerProvider } from "../contexts/PlayerContext";
|
||||
import { PartyProvider } from "../contexts/PartyContext";
|
||||
import { AssetsProvider, AssetURLsProvider } from "../contexts/AssetsContext";
|
||||
import { MapDataProvider } from "../contexts/MapDataContext";
|
||||
import { TokenDataProvider } from "../contexts/TokenDataContext";
|
||||
import { MapLoadingProvider } from "../contexts/MapLoadingContext";
|
||||
|
||||
import NetworkedMapAndTokens from "../network/NetworkedMapAndTokens";
|
||||
import NetworkedParty from "../network/NetworkedParty";
|
||||
@@ -44,7 +49,10 @@ function Game() {
|
||||
}, [session]);
|
||||
|
||||
// Handle session errors
|
||||
const [peerError, setPeerError]: [ peerError: any, setPeerError: React.Dispatch<any>] = useState(null);
|
||||
const [peerError, setPeerError]: [
|
||||
peerError: any,
|
||||
setPeerError: React.Dispatch<any>
|
||||
] = useState(null);
|
||||
useEffect(() => {
|
||||
function handlePeerError({ error }: { error: any }) {
|
||||
if (error.code === "ERR_WEBRTC_SUPPORT") {
|
||||
@@ -84,16 +92,18 @@ function Game() {
|
||||
};
|
||||
}, [session]);
|
||||
|
||||
|
||||
// Join game
|
||||
useEffect(() => {
|
||||
if (sessionStatus === "ready" && databaseStatus !== "loading") {
|
||||
if (
|
||||
sessionStatus === "ready" &&
|
||||
(databaseStatus === "loaded" || databaseStatus === "disabled")
|
||||
) {
|
||||
session.joinGame(gameId, password);
|
||||
}
|
||||
}, [gameId, password, databaseStatus, session, sessionStatus]);
|
||||
|
||||
function handleAuthSubmit(newPassword: string) {
|
||||
if (databaseStatus !== "loading") {
|
||||
if (databaseStatus === "loaded" || databaseStatus === "disabled") {
|
||||
session.joinGame(gameId, newPassword);
|
||||
}
|
||||
}
|
||||
@@ -103,50 +113,63 @@ function Game() {
|
||||
const mapStageRef: React.MutableRefObject<any> = useRef();
|
||||
|
||||
return (
|
||||
<PlayerProvider session={session}>
|
||||
<PartyProvider session={session}>
|
||||
<MapStageProvider value={mapStageRef}>
|
||||
<Flex sx={{ flexDirection: "column", height: "100%" }}>
|
||||
<Flex
|
||||
sx={{
|
||||
justifyContent: "space-between",
|
||||
flexGrow: 1,
|
||||
height: "100%",
|
||||
}}
|
||||
>
|
||||
<NetworkedParty session={session} gameId={gameId} />
|
||||
<NetworkedMapAndTokens session={session} />
|
||||
</Flex>
|
||||
</Flex>
|
||||
<Banner
|
||||
isOpen={!!peerError}
|
||||
onRequestClose={() => setPeerError(null)}
|
||||
>
|
||||
<Box p={1}>
|
||||
<Text as="p" variant="body2">
|
||||
{peerError} See <Link to="/faq#connection">FAQ</Link> for more
|
||||
information.
|
||||
</Text>
|
||||
</Box>
|
||||
</Banner>
|
||||
<OfflineBanner isOpen={sessionStatus === "offline"} />
|
||||
<ReconnectBanner isOpen={sessionStatus === "reconnecting"} />
|
||||
<AuthModal
|
||||
isOpen={sessionStatus === "auth"}
|
||||
onSubmit={handleAuthSubmit}
|
||||
/>
|
||||
<GameExpiredModal
|
||||
isOpen={gameExpired}
|
||||
onRequestClose={() => setGameExpired(false)}
|
||||
/>
|
||||
<ForceUpdateModal
|
||||
isOpen={sessionStatus === "needs_update"}
|
||||
/>
|
||||
{!sessionStatus && <LoadingOverlay />}
|
||||
<MapLoadingOverlay />
|
||||
</MapStageProvider>
|
||||
</PartyProvider>
|
||||
</PlayerProvider>
|
||||
<AssetsProvider>
|
||||
<AssetURLsProvider>
|
||||
<MapLoadingProvider>
|
||||
<MapDataProvider>
|
||||
<TokenDataProvider>
|
||||
<PlayerProvider session={session}>
|
||||
<PartyProvider session={session}>
|
||||
<MapStageProvider value={mapStageRef}>
|
||||
<Flex
|
||||
sx={{
|
||||
justifyContent: "space-between",
|
||||
flexGrow: 1,
|
||||
height: "100%",
|
||||
}}
|
||||
>
|
||||
<NetworkedParty session={session} gameId={gameId} />
|
||||
<NetworkedMapAndTokens session={session} />
|
||||
</Flex>
|
||||
<Banner
|
||||
isOpen={!!peerError}
|
||||
onRequestClose={() => setPeerError(null)}
|
||||
>
|
||||
<Box p={1}>
|
||||
<Text as="p" variant="body2">
|
||||
{peerError} See <Link to="/faq#connection">FAQ</Link>{" "}
|
||||
for more information.
|
||||
</Text>
|
||||
</Box>
|
||||
</Banner>
|
||||
<OfflineBanner isOpen={sessionStatus === "offline"} />
|
||||
<ReconnectBanner
|
||||
isOpen={sessionStatus === "reconnecting"}
|
||||
/>
|
||||
<AuthModal
|
||||
isOpen={sessionStatus === "auth"}
|
||||
onSubmit={handleAuthSubmit}
|
||||
/>
|
||||
<GameExpiredModal
|
||||
isOpen={gameExpired}
|
||||
onRequestClose={() => setGameExpired(false)}
|
||||
/>
|
||||
<ForceUpdateModal
|
||||
isOpen={sessionStatus === "needs_update"}
|
||||
/>
|
||||
{!sessionStatus && <LoadingOverlay />}
|
||||
{sessionStatus && databaseStatus === "upgrading" && (
|
||||
<UpgradingLoadingOverlay />
|
||||
)}
|
||||
<MapLoadingOverlay />
|
||||
</MapStageProvider>
|
||||
</PartyProvider>
|
||||
</PlayerProvider>
|
||||
</TokenDataProvider>
|
||||
</MapDataProvider>
|
||||
</MapLoadingProvider>
|
||||
</AssetURLsProvider>
|
||||
</AssetsProvider>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ const v162 = raw("../docs/releaseNotes/v1.6.2.md");
|
||||
const v170 = raw("../docs/releaseNotes/v1.7.0.md");
|
||||
const v180 = raw("../docs/releaseNotes/v1.8.0.md");
|
||||
const v181 = raw("../docs/releaseNotes/v1.8.1.md");
|
||||
const v190 = raw("../docs/releaseNotes/v1.9.0.md");
|
||||
|
||||
function ReleaseNotes() {
|
||||
const location = useLocation();
|
||||
@@ -49,13 +50,18 @@ function ReleaseNotes() {
|
||||
<Text mb={2} variant="heading" as="h1" sx={{ fontSize: 5 }}>
|
||||
Release Notes
|
||||
</Text>
|
||||
<div id="v190">
|
||||
<Accordion heading="v1.9.0" defaultOpen>
|
||||
<Markdown source={v190} />
|
||||
</Accordion>
|
||||
</div>
|
||||
<div id="v181">
|
||||
<Accordion heading="v1.8.1" defaultOpen>
|
||||
<Accordion heading="v1.8.1" defaultOpen={location.hash === "#v181"}>
|
||||
<Markdown source={v181} />
|
||||
</Accordion>
|
||||
</div>
|
||||
<div id="v180">
|
||||
<Accordion heading="v1.8.0" defaultOpen>
|
||||
<Accordion heading="v1.8.0" defaultOpen={location.hash === "#v180"}>
|
||||
<Markdown source={v180} />
|
||||
</Accordion>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user