diff --git a/bin/gcloud-images.sh b/bin/gcloud-images.sh old mode 100644 new mode 100755 diff --git a/dokusho/src/App.re b/dokusho/src/App.re index 778ccb4..fb796c5 100644 --- a/dokusho/src/App.re +++ b/dokusho/src/App.re @@ -23,7 +23,8 @@ let mapUrlToRoute = (url: ReasonReact.Router.url) => { Routes.Home; } | ["callback"] => { - LoginButton.Auth.handleAuth(url); + ReasonReact.Router.push("/"); + Routes.Home; } | _ => { Routes.Home; diff --git a/dokusho/src/app/Client.re b/dokusho/src/app/Client.re index 996c109..c355943 100644 --- a/dokusho/src/app/Client.re +++ b/dokusho/src/app/Client.re @@ -11,7 +11,6 @@ module Client = { open Dom.Storage; let accessToken = () => localStorage |> getItem("accessToken") |> Rationale.Option.default("no_token"); - let backendURI = "http://35.189.70.144:8080"; let jsonHeader = Fetch.HeadersInit.make({"Content-Type": "application/json"}); let authHeader = () => Fetch.HeadersInit.makeWithArray([|( "Content-Type", "application/json" ), ( "accessToken", accessToken() )|]); @@ -22,8 +21,18 @@ module Client = { readingHistory: json |> field("readingHistory", Decoders.parseHistory) }; }; - /* Fetches the given user's reading history */ - let userHistory = (_userId:string) => { + + let parseResponseT = (jString) => + Json.parse(jString) + |> Rationale.Option.default(Json.parseOrRaise("{\"userId\": \"userId\",\"readingHistory\": {\"days\": [] } }")) + |> json => + Json.Decode.{ + userId: json |> field("userId", string), + readingHistory: json |> field("readingHistory", Decoders.parseHistory) + }; + + /* Fetches the given user's reading history, or an empty one */ + let userHistory: string => Js.Promise.t(serverResponse) = (_userId:string) => { Js.Console.log("Get history " ++ accessToken()); Js.Promise.( Fetch.fetchWithInit(backendURI ++ "/history", @@ -31,8 +40,8 @@ module Client = { ~method_=Get, ~headers=authHeader(), ())) - |> then_(Fetch.Response.json) - |> then_(resp => resp |> parseResponse |> resolve) + |> then_(Fetch.Response.text) + |> then_(resp => resp |> parseResponseT |> resolve) ); }; diff --git a/dokusho/src/app/LoginButton.re b/dokusho/src/app/LoginButton.re index 23a56d6..8c39a06 100644 --- a/dokusho/src/app/LoginButton.re +++ b/dokusho/src/app/LoginButton.re @@ -37,7 +37,6 @@ module Auth { }; }; - open Types; open Dom.Storage; let handleAuth = (url: ReasonReact.Router.url) => { @@ -48,8 +47,6 @@ module Auth { localStorage |> setItem("accessToken", accessToken); localStorage |> setItem("id_token", idToken); localStorage |> setItem("expiresIn", expiresIn); - - Routes.Home; }; let getIdToken = () => localStorage |> getItem("id_token") |> resolveOption;