diff --git a/dokusho/src/App.re b/dokusho/src/App.re index fb796c5..5fe6465 100644 --- a/dokusho/src/App.re +++ b/dokusho/src/App.re @@ -19,11 +19,12 @@ let component = ReasonReact.reducerComponent("App"); let mapUrlToRoute = (url: ReasonReact.Router.url) => { switch url.path { - | [] => { + | ["callback"] => { + let _token = LoginButton.Auth.handleAuth(url); Routes.Home; } - | ["callback"] => { - ReasonReact.Router.push("/"); + | [] => { + Js.Console.log("Home"); Routes.Home; } | _ => { @@ -47,7 +48,7 @@ let make = _children => {
(switch self.state { | Routes.Home => - }) + })
}; diff --git a/dokusho/src/app/Actions.re b/dokusho/src/app/Actions.re index bce55a1..583c54a 100644 --- a/dokusho/src/app/Actions.re +++ b/dokusho/src/app/Actions.re @@ -16,16 +16,15 @@ module Actions = { let loadUserData = (userId) => ReasonReact.SideEffects( (self => - Js.Promise.( Client.userHistory(userId) - |> then_((serverResponse: serverResponse) => { + |> Js.Promise.then_((serverResponse: serverResponse) => { if(List.length(serverResponse.readingHistory.days) != 0) { self.send( UpdateHistory( serverResponse.readingHistory.days)) }; - resolve(serverResponse); - })) + Js.Promise.resolve(serverResponse); + }) |> ignore ) ); diff --git a/dokusho/src/app/Client.re b/dokusho/src/app/Client.re index c355943..2844022 100644 --- a/dokusho/src/app/Client.re +++ b/dokusho/src/app/Client.re @@ -10,10 +10,10 @@ type serverResponse = { module Client = { open Dom.Storage; - let accessToken = () => localStorage |> getItem("accessToken") |> Rationale.Option.default("no_token"); + let accessToken = (default) => sessionStorage |> getItem("accessToken") |> Rationale.Option.default(default); 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() )|]); + let authHeader = () => Fetch.HeadersInit.makeWithArray([|( "Content-Type", "application/json" ), ( "accessToken", accessToken("accessToken") )|]); let parseResponse = (json: Js.Json.t) => { Json.Decode.{ @@ -33,7 +33,7 @@ module Client = { /* 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.Console.log("Get history: " ++ LoginButton.Auth.getAccessToken()); Js.Promise.( Fetch.fetchWithInit(backendURI ++ "/history", Fetch.RequestInit.make( diff --git a/dokusho/src/app/LoginButton.re b/dokusho/src/app/LoginButton.re index 8c39a06..cf944d5 100644 --- a/dokusho/src/app/LoginButton.re +++ b/dokusho/src/app/LoginButton.re @@ -44,13 +44,18 @@ module Auth { let accessToken = url.hash |> resolveRegex(matchAccessToken); let idToken = url.hash |> resolveRegex(matchIdToken); let expiresIn = url.hash |> resolveRegex(matchExpiresIn); - localStorage |> setItem("accessToken", accessToken); - localStorage |> setItem("id_token", idToken); - localStorage |> setItem("expiresIn", expiresIn); + Js.Console.log("Storing auth: " ++ accessToken); + + sessionStorage |> setItem("accessToken", accessToken); + sessionStorage |> setItem("id_token", idToken); + sessionStorage |> setItem("expiresIn", expiresIn); + + accessToken; }; - let getIdToken = () => localStorage |> getItem("id_token") |> resolveOption; + let getIdToken = () => sessionStorage |> getItem("id_token") |> resolveOption; + let getAccessToken = () => (sessionStorage |> getItem("accessToken") |> resolveOption); }; let authOptions = {