diff --git a/app/routes/TryRoute.res b/app/routes/TryRoute.res
index 062a3c9db..799a83423 100644
--- a/app/routes/TryRoute.res
+++ b/app/routes/TryRoute.res
@@ -22,21 +22,26 @@ let loader = async () => {
)
}
- let versions = {
- let response = await fetch(versionsBaseUrl + "/playground-bundles/versions.json")
- let json = await WebAPI.Response.json(response)
- json
- ->JSON.Decode.array
- ->Option.getOrThrow
- ->Array.map(json => json->JSON.Decode.string->Option.getOrThrow)
- }
+ try {
+ let versions = {
+ let response = await fetch(versionsBaseUrl + "/playground-bundles/versions.json")
+ let json = await WebAPI.Response.json(response)
+ json
+ ->JSON.Decode.array
+ ->Option.getOrThrow
+ ->Array.map(json => json->JSON.Decode.string->Option.getOrThrow)
+ }
- {
- bundleBaseUrl,
- versions,
+ Some({
+ bundleBaseUrl,
+ versions,
+ })
+ } catch {
+ | JsExn(e) =>
+ Console.error2("error while fetching compiler versions", e)
+ None
}
}
-
module ClientOnly = {
@react.component
let make = (~bundleBaseUrl, ~versions) => {
@@ -47,12 +52,19 @@ module ClientOnly = {
}
let default = () => {
- let {bundleBaseUrl, versions} = ReactRouter.useLoaderData()
+ let data = ReactRouter.useLoaderData()
<>
-
+ {switch data {
+ | Some({bundleBaseUrl, versions}) =>
+ | None =>
+
+
{React.string("Oops an error occurred!")}
+ {React.string("The playground cannot be loaded, please try again in a few moments.")}
+
+ }}
>
}
diff --git a/app/routes/TryRoute.resi b/app/routes/TryRoute.resi
index 6a78ab4d3..28764a056 100644
--- a/app/routes/TryRoute.resi
+++ b/app/routes/TryRoute.resi
@@ -3,6 +3,6 @@ type props = {
versions: array,
}
-let loader: unit => promise
+let loader: unit => promise