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 = {