17426: Add dialog box with form to example plugin.
[arvados-workbench2.git] / src / common / redirect-to.ts
index 86fac71cbae8ab7adb27354ee7a351e34c7c72e3..77be742f877ce62477a6e3439eb6c020e41821b0 100644 (file)
@@ -7,23 +7,29 @@ import { Config } from './config';
 const REDIRECT_TO_KEY = 'redirectTo';
 
 export const storeRedirects = () => {
-    if (window.location.href.indexOf(REDIRECT_TO_KEY) > -1) {
-        const { location: { href }, sessionStorage } = window;
-        const redirectUrl = href.split(`${REDIRECT_TO_KEY}=`)[1];
-        
-        if (sessionStorage) {
-            sessionStorage.setItem(REDIRECT_TO_KEY, redirectUrl);
-        }
+    let redirectUrl;
+    const { location: { href }, localStorage } = window;
+
+    if (href.indexOf(REDIRECT_TO_KEY) > -1) {
+        redirectUrl = href.split(`${REDIRECT_TO_KEY}=`)[1];
+    }
+
+    if (localStorage && redirectUrl) {
+        localStorage.setItem(REDIRECT_TO_KEY, redirectUrl);
     }
 };
 
-export const handleRedirects = (config: Config) => {
-    const { sessionStorage } = window;
+export const handleRedirects = (token: string, config: Config) => {
+    const { localStorage } = window;
     const { keepWebServiceUrl } = config;
 
-    if (sessionStorage && sessionStorage.getItem(REDIRECT_TO_KEY)) {
-        const redirectUrl = sessionStorage.getItem(REDIRECT_TO_KEY);
-        sessionStorage.removeItem(REDIRECT_TO_KEY);
-        window.location.href = `${keepWebServiceUrl}${redirectUrl}`;
+    if (localStorage && localStorage.getItem(REDIRECT_TO_KEY)) {
+        const redirectUrl = localStorage.getItem(REDIRECT_TO_KEY);
+        localStorage.removeItem(REDIRECT_TO_KEY);
+
+        if (redirectUrl) {
+            const sep = redirectUrl.indexOf("?") > -1 ? "&" : "?";
+            window.location.href = `${keepWebServiceUrl}${redirectUrl}${sep}api_token=${token}`;
+        }
     }
-};
\ No newline at end of file
+};