@imposium-hub/components 2.11.3-2 → 2.11.3-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/cjs/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  2. package/dist/cjs/components/app-wrapper/AppWrapperV2.js +266 -0
  3. package/dist/cjs/components/app-wrapper/AppWrapperV2.js.map +1 -0
  4. package/dist/cjs/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  5. package/dist/cjs/components/app-wrapper/AppWrapperV3.js +195 -0
  6. package/dist/cjs/components/app-wrapper/AppWrapperV3.js.map +1 -0
  7. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  8. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  9. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  18. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  19. package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
  20. package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
  21. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
  22. package/dist/cjs/components/edit-guide-modal/EditGuideModal.d.ts +8 -0
  23. package/dist/cjs/components/edit-guide-modal/EditGuideModal.js +132 -0
  24. package/dist/cjs/components/edit-guide-modal/EditGuideModal.js.map +1 -0
  25. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  26. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +104 -0
  27. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  28. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  29. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
  30. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  31. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  32. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  33. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  34. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  35. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  36. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  37. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  38. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  39. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  40. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  41. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  42. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  43. package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
  44. package/dist/cjs/components/header/StoryDropdown.js +111 -0
  45. package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
  46. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.d.ts +11 -0
  47. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +213 -0
  48. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -0
  49. package/dist/cjs/redux/actions/auth.d.ts +9 -0
  50. package/dist/cjs/redux/actions/auth.js +30 -0
  51. package/dist/cjs/redux/actions/auth.js.map +1 -0
  52. package/dist/cjs/redux/reducers/auth.d.ts +3 -0
  53. package/dist/cjs/redux/reducers/auth.js +67 -0
  54. package/dist/cjs/redux/reducers/auth.js.map +1 -0
  55. package/dist/cjs/services/API.d.ts +2 -0
  56. package/dist/cjs/services/API.js +6 -0
  57. package/dist/cjs/services/API.js.map +1 -1
  58. package/dist/cjs/services/Auth0.d.ts +18 -0
  59. package/dist/cjs/services/Auth0.js +102 -0
  60. package/dist/cjs/services/Auth0.js.map +1 -0
  61. package/dist/cjs/services/Session.d.ts +26 -0
  62. package/dist/cjs/services/Session.js +155 -0
  63. package/dist/cjs/services/Session.js.map +1 -0
  64. package/dist/esm/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  65. package/dist/esm/components/app-wrapper/AppWrapperV2.js +142 -0
  66. package/dist/esm/components/app-wrapper/AppWrapperV2.js.map +1 -0
  67. package/dist/esm/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  68. package/dist/esm/components/app-wrapper/AppWrapperV3.js +88 -0
  69. package/dist/esm/components/app-wrapper/AppWrapperV3.js.map +1 -0
  70. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  71. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  72. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  73. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  74. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  75. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  76. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  77. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  78. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  79. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  80. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  81. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  82. package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
  83. package/dist/esm/components/auth-gate/AuthGate.js +59 -0
  84. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
  85. package/dist/esm/components/edit-guide-modal/EditGuideModal.d.ts +8 -0
  86. package/dist/esm/components/edit-guide-modal/EditGuideModal.js +65 -0
  87. package/dist/esm/components/edit-guide-modal/EditGuideModal.js.map +1 -0
  88. package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  89. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +72 -0
  90. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  91. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  92. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
  93. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  94. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  95. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  96. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  97. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  98. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  99. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  100. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  101. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  102. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  103. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  104. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  105. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  106. package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
  107. package/dist/esm/components/header/StoryDropdown.js +82 -0
  108. package/dist/esm/components/header/StoryDropdown.js.map +1 -0
  109. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.d.ts +11 -0
  110. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +141 -0
  111. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -0
  112. package/dist/esm/redux/actions/auth.d.ts +9 -0
  113. package/dist/esm/redux/actions/auth.js +25 -0
  114. package/dist/esm/redux/actions/auth.js.map +1 -0
  115. package/dist/esm/redux/reducers/auth.d.ts +3 -0
  116. package/dist/esm/redux/reducers/auth.js +27 -0
  117. package/dist/esm/redux/reducers/auth.js.map +1 -0
  118. package/dist/esm/services/API.d.ts +2 -0
  119. package/dist/esm/services/API.js +6 -0
  120. package/dist/esm/services/API.js.map +1 -1
  121. package/dist/esm/services/Auth0.d.ts +18 -0
  122. package/dist/esm/services/Auth0.js +68 -0
  123. package/dist/esm/services/Auth0.js.map +1 -0
  124. package/dist/esm/services/Session.d.ts +26 -0
  125. package/dist/esm/services/Session.js +107 -0
  126. package/dist/esm/services/Session.js.map +1 -0
  127. package/package.json +4 -7
  128. package/src/services/API.ts +8 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ var auth0 = __importStar(require("auth0-js"));
38
+ var AuthService = /** @class */ (function () {
39
+ function AuthService() {
40
+ }
41
+ AuthService.IMPOSIUM_APP_DEFAULTS = {
42
+ scope: 'openid',
43
+ audience: 'https://api.4cinsights.io/',
44
+ responseType: 'token id_token',
45
+ redirectUri: "".concat(window.location.origin, "/auth")
46
+ };
47
+ /*
48
+ Initialize the auth0 web client with client ID for a given app-wrapper
49
+ */
50
+ AuthService.bindToClient = function (clientID, domain) {
51
+ AuthService.auth0Client = new auth0.WebAuth(__assign({ clientID: clientID, domain: domain }, AuthService.IMPOSIUM_APP_DEFAULTS));
52
+ };
53
+ /*
54
+ redirect to auth0 for login
55
+ */
56
+ AuthService.login = function () {
57
+ AuthService.auth0Client.authorize();
58
+ };
59
+ /*
60
+ Re-direct to auth0 to cancel session & instruct auth0 to redirect back to login
61
+ */
62
+ AuthService.logout = function () {
63
+ AuthService.auth0Client.logout({ returnTo: "".concat(window.location.origin, "/auth") });
64
+ };
65
+ /*
66
+ Validate auth0 expiry timestamp
67
+ */
68
+ AuthService.checkExpiry = function (expiry) { return expiry > Date.now().valueOf() / 1000; };
69
+ /*
70
+ Parse out identity from hash
71
+ */
72
+ AuthService.parseIdFromHash = function (hash) {
73
+ return new Promise(function (resolve, reject) {
74
+ AuthService.auth0Client.parseHash({ options: hash }, function (e, id) {
75
+ if (!e) {
76
+ resolve(id);
77
+ }
78
+ else {
79
+ reject(e);
80
+ }
81
+ });
82
+ });
83
+ };
84
+ /*
85
+ Defer to auth0 web servers to check if users session is valid
86
+ */
87
+ AuthService.checkSession = function () {
88
+ return new Promise(function (resolve, reject) {
89
+ AuthService.auth0Client.checkSession({}, function (e, id) {
90
+ if (!e) {
91
+ resolve(id);
92
+ }
93
+ else {
94
+ reject(e);
95
+ }
96
+ });
97
+ });
98
+ };
99
+ return AuthService;
100
+ }());
101
+ exports.default = AuthService;
102
+ //# sourceMappingURL=Auth0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Auth0.js","sourceRoot":"","sources":["../../../src/services/Auth0.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAkC;AAWlC;IAAA;IAsEA,CAAC;IArE2B,iCAAqB,GAAQ;QACjD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,4BAA4B;QACtC,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,UAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,UAAO;KAChD,CAAC;IAKF;;OAEG;IACW,wBAAY,GAAG,UAAC,QAAgB,EAAE,MAAc;QAC1D,WAAW,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,OAAO,YACvC,QAAQ,UAAA,EACR,MAAM,QAAA,IACH,WAAW,CAAC,qBAAqB,EACtC,CAAC;IACP,CAAC,CAAC;IAEF;;OAEG;IACW,iBAAK,GAAG;QAClB,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC,CAAC;IAEF;;OAEG;IACW,kBAAM,GAAG;QACnB,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,UAAO,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC;IAEF;;OAEG;IACW,uBAAW,GAAG,UAAC,MAAc,IAAc,OAAA,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,EAApC,CAAoC,CAAC;IAE9F;;OAEG;IACW,2BAAe,GAAG,UAAC,IAAY;QACzC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAC,CAAQ,EAAE,EAAa;gBACzE,IAAI,CAAC,CAAC,EAAE,CAAC;oBACL,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF;;OAEG;IACW,wBAAY,GAAG;QACzB,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,UAAC,CAAQ,EAAE,EAAa;gBAC7D,IAAI,CAAC,CAAC,EAAE,CAAC;oBACL,OAAO,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACN,kBAAC;CAAA,AAtED,IAsEC;kBAtEoB,WAAW"}
@@ -0,0 +1,26 @@
1
+ import { IIdentity } from './Auth0';
2
+ export interface IHubSession {
3
+ sub: string;
4
+ organization_id: string;
5
+ story_id: string;
6
+ }
7
+ export default class SessionService {
8
+ private static readonly LOGIN_STORY_ID_CACHE;
9
+ private static readonly LOGIN_ORG_ID_CACHE;
10
+ private static readonly SESSION_COOKIE_NAME;
11
+ private static readonly FRESH_COOKIE;
12
+ static getAccessData: (idToken: string, baseUrl?: string, getTotalRenders?: boolean, accountId?: string) => Promise<any[]>;
13
+ static getSession: () => IHubSession;
14
+ static removeSession: () => void;
15
+ static buildFreshSession: (freshIdentity: IIdentity, orgId?: string, storyId?: string) => void;
16
+ static storeSession: (values: any, auth0Expiry: number) => void;
17
+ static cacheOrgId: (organizationId: string) => void;
18
+ static clearCachedOrgId: () => void;
19
+ static getCachedOrgId: () => string;
20
+ static cacheStoryId: (storyId: string) => void;
21
+ static clearCachedStoryId: () => void;
22
+ static getCachedStoryId: () => string;
23
+ static updateSession: (values: any, auth0Expiry: number) => void;
24
+ private static scrapeDomain;
25
+ private static determineAccessUrl;
26
+ }
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ var Cookies = __importStar(require("js-cookie"));
41
+ var axios_1 = __importDefault(require("axios"));
42
+ var SessionService = /** @class */ (function () {
43
+ function SessionService() {
44
+ }
45
+ SessionService.LOGIN_STORY_ID_CACHE = 'imp_hub_last_story_id';
46
+ SessionService.LOGIN_ORG_ID_CACHE = 'imp_hub_last_org_id';
47
+ SessionService.SESSION_COOKIE_NAME = 'auth_state';
48
+ SessionService.FRESH_COOKIE = {
49
+ sub: '',
50
+ organization_id: '',
51
+ story_id: ''
52
+ };
53
+ /*
54
+ Get list of accessible services with themes from Imposium API
55
+ */
56
+ SessionService.getAccessData = function (idToken, baseUrl, getTotalRenders, accountId) {
57
+ if (getTotalRenders === void 0) { getTotalRenders = false; }
58
+ return new Promise(function (resolve, reject) {
59
+ var accessUrl = baseUrl ? "".concat(baseUrl, "/access") : SessionService.determineAccessUrl();
60
+ var headers = { Authorization: "Bearer ".concat(idToken) };
61
+ if (getTotalRenders) {
62
+ accessUrl += '?include_total_renders=true';
63
+ }
64
+ if (accountId && accountId !== 'undefined') {
65
+ headers['X-Imposium-Account-Id'] = accountId;
66
+ }
67
+ axios_1.default
68
+ .get(accessUrl, { headers: headers })
69
+ .then(function (res) {
70
+ resolve(res.data ? res.data : []);
71
+ })
72
+ .catch(function (e) {
73
+ reject(e);
74
+ });
75
+ });
76
+ };
77
+ SessionService.getSession = function () {
78
+ return Cookies.getJSON(SessionService.SESSION_COOKIE_NAME);
79
+ };
80
+ SessionService.removeSession = function () {
81
+ var domain = SessionService.scrapeDomain();
82
+ Cookies.remove(SessionService.SESSION_COOKIE_NAME, { domain: domain });
83
+ SessionService.clearCachedOrgId();
84
+ SessionService.clearCachedStoryId();
85
+ };
86
+ SessionService.buildFreshSession = function (freshIdentity, orgId, storyId) {
87
+ if (orgId === void 0) { orgId = null; }
88
+ if (storyId === void 0) { storyId = null; }
89
+ var _a = freshIdentity.idTokenPayload, sub = _a.sub, exp = _a.exp;
90
+ var freshSession = {
91
+ sub: sub
92
+ };
93
+ if (orgId) {
94
+ freshSession.organization_id = orgId;
95
+ }
96
+ if (storyId) {
97
+ freshSession.story_id = storyId;
98
+ }
99
+ SessionService.storeSession(freshSession, exp);
100
+ };
101
+ SessionService.storeSession = function (values, auth0Expiry) {
102
+ var cookieData = __assign(__assign({}, SessionService.FRESH_COOKIE), values);
103
+ var domain = SessionService.scrapeDomain();
104
+ var expiry = new Date(auth0Expiry * 1000);
105
+ Cookies.set(SessionService.SESSION_COOKIE_NAME, cookieData, { domain: domain, expires: expiry });
106
+ };
107
+ SessionService.cacheOrgId = function (organizationId) {
108
+ localStorage.setItem(SessionService.LOGIN_ORG_ID_CACHE, organizationId);
109
+ };
110
+ SessionService.clearCachedOrgId = function () {
111
+ localStorage.removeItem(SessionService.LOGIN_ORG_ID_CACHE);
112
+ };
113
+ SessionService.getCachedOrgId = function () {
114
+ return localStorage.getItem(SessionService.LOGIN_ORG_ID_CACHE);
115
+ };
116
+ SessionService.cacheStoryId = function (storyId) {
117
+ localStorage.setItem(SessionService.LOGIN_STORY_ID_CACHE, storyId);
118
+ };
119
+ SessionService.clearCachedStoryId = function () {
120
+ localStorage.removeItem(SessionService.LOGIN_STORY_ID_CACHE);
121
+ };
122
+ SessionService.getCachedStoryId = function () {
123
+ return localStorage.getItem(SessionService.LOGIN_STORY_ID_CACHE);
124
+ };
125
+ SessionService.updateSession = function (values, auth0Expiry) {
126
+ var prevCookieData = SessionService.getSession();
127
+ var nextCookieData = __assign(__assign({}, prevCookieData), values);
128
+ SessionService.storeSession(nextCookieData, auth0Expiry);
129
+ };
130
+ /*
131
+ Determine which domain to assign cookie to
132
+ */
133
+ SessionService.scrapeDomain = function () {
134
+ var domainParts = window.location.host.split('.').reverse();
135
+ return domainParts.length > 2 ? ".".concat(domainParts[1], ".").concat(domainParts[0].split(':')[0]) : null;
136
+ };
137
+ /*
138
+ Figure out which access endpoint to hit based on env
139
+ */
140
+ SessionService.determineAccessUrl = function () {
141
+ var _a = window.location, hostname = _a.hostname, host = _a.host;
142
+ if (hostname === 'localhost') {
143
+ return 'https://api/access';
144
+ }
145
+ else if (host.includes('.staging.')) {
146
+ return 'https://api.staging.imposium.com/access';
147
+ }
148
+ else {
149
+ return 'https://api.imposium.com/access';
150
+ }
151
+ };
152
+ return SessionService;
153
+ }());
154
+ exports.default = SessionService;
155
+ //# sourceMappingURL=Session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Session.js","sourceRoot":"","sources":["../../../src/services/Session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+ import { IImposiumAPI } from '../../services/API';
3
+ export interface IAppWrapperProps {
4
+ auth0: any;
5
+ auth0Code: string;
6
+ baseUrl: string;
7
+ api: IImposiumAPI;
8
+ children: React.ReactChildren;
9
+ organizationId: string;
10
+ serviceId: number;
11
+ access: any;
12
+ setAccessData(accessData: any): any;
13
+ onAuthenticated: (activeOrgId: string, activeStoryId: string) => any;
14
+ onStoryChange(storyId: string): any;
15
+ onOrganizationChange(orgId: string, storyId: string): any;
16
+ storyId?: string;
17
+ CrMLink?: string;
18
+ hideStoryPicker?: boolean;
19
+ hideDocs?: boolean;
20
+ hideOrgPicker?: boolean;
21
+ }
22
+ export interface IAppWrapperState {
23
+ blockRender: boolean;
24
+ }
25
+ declare const _default: React.ComponentType<Omit<import("@auth0/auth0-react").WithAuth0Props, "auth0">>;
26
+ export default _default;
@@ -0,0 +1,142 @@
1
+ import * as React from 'react';
2
+ import Header from '../header/Header';
3
+ import { connect } from 'react-redux';
4
+ import { bindActionCreators } from 'redux';
5
+ import { validateAccessLevel } from '../../Util';
6
+ import { setAccessData } from '../../redux/actions/access';
7
+ import { ConfirmModal } from '../confirm-modal/ConfirmModal';
8
+ import API from '../../services/API';
9
+ import SessionService from '../../services/Session';
10
+ import { withAuth0, withAuthenticationRequired } from '@auth0/auth0-react';
11
+ class AppWrapper extends React.Component {
12
+ constructor(p) {
13
+ super(p);
14
+ this.state = {
15
+ blockRender: true,
16
+ };
17
+ }
18
+ componentDidMount = () => {
19
+ void this.doCheckSession(true);
20
+ };
21
+ /*
22
+ Check the auth0 session expiry
23
+ */
24
+ componentDidUpdate = (prevProps) => {
25
+ // const { auth } = this.props;
26
+ // let validAccessLevel: boolean;
27
+ // if (auth) {
28
+ // const {
29
+ // idTokenPayload: { exp }
30
+ // } = auth;
31
+ // const validSession: boolean = AuthService.checkExpiry(exp);
32
+ // if (!validSession) {
33
+ // // this.props.clearCachedAuth();
34
+ // this.doCheckSession();
35
+ // }
36
+ // }
37
+ };
38
+ /*
39
+ Emit creds to React parent
40
+ */
41
+ getCachedStoryAndOrgForService(freshAccess, serviceId) {
42
+ const service = freshAccess.services.find((s) => s.id === serviceId);
43
+ if (service) {
44
+ return {
45
+ story_id: service.story_id,
46
+ organization_id: service.organization_id
47
+ };
48
+ }
49
+ }
50
+ propagateCreds = (freshAccess) => {
51
+ const { storyId: initialStoryId, organizationId: initialOrganizationId, onAuthenticated } = this.props;
52
+ // If an org and story ID was passed in, we're following a deeplink. Verify we have access to it, and if so, propagate those IDs and set them on the service
53
+ if (initialOrganizationId && initialStoryId) {
54
+ // Validate the user has access to the orgId and storyID passed in, if not, show the "Unauthorized" interface
55
+ const validAccessLevel = validateAccessLevel(initialOrganizationId, this.props.serviceId, freshAccess);
56
+ if (validAccessLevel) {
57
+ onAuthenticated(initialOrganizationId, initialStoryId);
58
+ this.setState({ blockRender: false });
59
+ }
60
+ else {
61
+ //TODO: go to unauthorized page
62
+ }
63
+ // If no orgID or storyID was passed in from the URL use the cached orgID and story ID on the service
64
+ }
65
+ else {
66
+ const { story_id, organization_id } = this.getCachedStoryAndOrgForService(freshAccess, this.props.serviceId);
67
+ onAuthenticated(organization_id, story_id);
68
+ this.setState({ blockRender: false });
69
+ }
70
+ };
71
+ /*
72
+ Bust cached creds if exist, invoke auth failure handler
73
+ */
74
+ handleCheckSessionFailure = (e) => {
75
+ if (this.props.storyId) {
76
+ SessionService.cacheStoryId(this.props.storyId);
77
+ }
78
+ else {
79
+ SessionService.clearCachedStoryId();
80
+ }
81
+ if (this.props.organizationId) {
82
+ SessionService.cacheOrgId(this.props.organizationId);
83
+ }
84
+ else {
85
+ SessionService.clearCachedOrgId();
86
+ }
87
+ // this.props.clearCachedAuth();
88
+ // this.props.onAuthenticationFailure(e);
89
+ };
90
+ /*
91
+ Check auth0 session, pull Imposium access creds on success and initialize app-wrapper
92
+ */
93
+ doCheckSession = async (blockRender = false) => {
94
+ const { auth0, baseUrl } = this.props;
95
+ if (blockRender) {
96
+ this.setState({ blockRender: true });
97
+ }
98
+ if (auth0.isAuthenticated) {
99
+ const token = await auth0.getAccessTokenSilently();
100
+ const orgId = this.props.organizationId
101
+ ? this.props.organizationId
102
+ : null;
103
+ const api = new API(baseUrl, token, orgId);
104
+ api.getAccessData(false)
105
+ .then((freshAccess) => {
106
+ this.props.setAccessData(freshAccess);
107
+ this.propagateCreds(freshAccess);
108
+ })
109
+ .catch((e) => {
110
+ // this.setState({ restrictAccess: true, blockRender: false });
111
+ // TODO: push to a different route here?
112
+ });
113
+ }
114
+ else {
115
+ auth0.loginWithRedirect();
116
+ }
117
+ };
118
+ render = () => {
119
+ const { blockRender } = this.state;
120
+ const { children, organizationId, storyId, hideStoryPicker, hideDocs, hideOrgPicker, CrMLink, baseUrl, api } = this.props;
121
+ let innerContent;
122
+ if (!blockRender) {
123
+ innerContent = children;
124
+ }
125
+ return (React.createElement("div", { id: 'app', className: 'app' },
126
+ React.createElement(Header, { activeServiceId: this.props.serviceId, baseUrl: baseUrl, api: api, activeOrganization: organizationId, activeStory: storyId, hideStoryPicker: hideStoryPicker, hideDocs: hideDocs, showFTLogo: false, hideOrgPicker: hideOrgPicker, CrMLink: CrMLink, onStoryChange: this.props.onStoryChange, onOrganizationChange: this.props.onOrganizationChange }),
127
+ innerContent,
128
+ React.createElement(ConfirmModal, null)));
129
+ };
130
+ }
131
+ const mapDispatchToProps = (dispatch) => {
132
+ return bindActionCreators({
133
+ // login,
134
+ setAccessData,
135
+ // clearCachedAuth
136
+ }, dispatch);
137
+ };
138
+ const mapStateToProps = (state) => {
139
+ return { access: state.access };
140
+ };
141
+ export default withAuth0(withAuthenticationRequired(connect(mapStateToProps, mapDispatchToProps)(AppWrapper)));
142
+ //# sourceMappingURL=AppWrapperV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppWrapperV2.js","sourceRoot":"","sources":["../../../../src/components/app-wrapper/AppWrapperV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,GAAqB,MAAM,oBAAoB,CAAC;AACvD,OAAO,cAAc,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AA0B3E,MAAM,UAAW,SAAQ,KAAK,CAAC,SAA6C;IAExE,YAAY,CAAmB;QAC3B,KAAK,CAAC,CAAC,CAAC,CAAC;QAET,IAAI,CAAC,KAAK,GAAG;YACT,WAAW,EAAE,IAAI;SACpB,CAAC;IACN,CAAC;IAEM,iBAAiB,GAAG,GAAS,EAAE;QAClC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF;;OAEG;IACI,kBAAkB,GAAG,CAAC,SAAS,EAAQ,EAAE;QAC5C,+BAA+B;QAC/B,iCAAiC;QAEjC,cAAc;QACd,cAAc;QACd,kCAAkC;QAClC,gBAAgB;QACZ,8DAA8D;QAE9D,uBAAuB;QACvB,uCAAuC;QACvC,6BAA6B;QAC7B,IAAI;QACR,IAAI;IACR,CAAC,CAAC;IAEF;;OAEG;IAEK,8BAA8B,CAAC,WAAW,EAAE,SAAS;QACzD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACrE,IAAG,OAAO,EAAC,CAAC;YACR,OAAO;gBACH,QAAQ,EAAC,OAAO,CAAC,QAAQ;gBACzB,eAAe,EAAC,OAAO,CAAC,eAAe;aAC1C,CAAA;QACL,CAAC;IACL,CAAC;IAEO,cAAc,GAAG,CAAC,WAAW,EAAQ,EAAE;QAC3C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvG,4JAA4J;QAC5J,IAAG,qBAAqB,IAAI,cAAc,EAAC,CAAC;YAExC,6GAA6G;YAC7G,MAAM,gBAAgB,GAAG,mBAAmB,CACxC,qBAAqB,EACrB,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,WAAW,CACd,CAAC;YAEF,IAAG,gBAAgB,EAAC,CAAC;gBACjB,eAAe,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;gBACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAI,CAAC;gBAEF,+BAA+B;YACnC,CAAC;YAEL,qGAAqG;QACrG,CAAC;aAAI,CAAC;YAEF,MAAM,EAAC,QAAQ,EAAE,eAAe,EAAC,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3G,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC,CAAC;IAEF;;OAEG;IACK,yBAAyB,GAAG,CAAC,CAAQ,EAAQ,EAAE;QACnD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,cAAc,CAAC,kBAAkB,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC5B,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,cAAc,CAAC,gBAAgB,EAAE,CAAC;QACtC,CAAC;QAED,gCAAgC;QAChC,yCAAyC;IAC7C,CAAC,CAAC;IAEF;;MAEE;IACM,cAAc,GAAG,KAAK,EAAE,cAAuB,KAAK,EAAE,EAAE;QAE5D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtC,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAG,KAAK,CAAC,eAAe,EAAC,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;YAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc;gBACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc;gBAC3B,CAAC,CAAC,IAAI,CAAC;YAEP,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;iBACnB,IAAI,CAAC,CAAC,WAAgB,EAAE,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;gBAChB,+DAA+D;gBAC/D,wCAAwC;YAC5C,CAAC,CAAC,CAAC;QACf,CAAC;aAAI,CAAC;YACF,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC,CAAC;IAEK,MAAM,GAAG,GAAgB,EAAE;QAC9B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzH,IAAI,YAAiB,CAAC;QAEtB,IAAI,CAAC,WAAW,EAAC,CAAC;YACd,YAAY,GAAG,QAAQ,CAAC;QAC5B,CAAC;QAED,OAAO,CACH,6BACI,EAAE,EAAC,KAAK,EACR,SAAS,EAAC,KAAK;YACf,oBAAC,MAAM,IACH,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EACrC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,kBAAkB,EAAE,cAAc,EAClC,WAAW,EAAE,OAAO,EACpB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,KAAK,EACjB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,GACvD;YACD,YAAY;YACb,oBAAC,YAAY,OAAG,CACd,CACT,CAAC;IACN,CAAC,CAAC;CACL;AAED,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,EAAE;IACpC,OAAO,kBAAkB,CACrB;QACI,SAAS;QACT,aAAa;QACb,kBAAkB;KACrB,EACD,QAAQ,CACX,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAK,EAAO,EAAE;IACnC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import { IImposiumAPI } from '../../services/API';
3
+ export interface IAppWrapperProps {
4
+ baseUrl: string;
5
+ api: IImposiumAPI;
6
+ children?: any;
7
+ organizationId: string;
8
+ serviceId: number;
9
+ setAccessData(getAccessData: any): void;
10
+ onAuthenticated: (token: string, activeOrgId: string, activeStoryId: string) => any;
11
+ onStoryChange(storyId: string): any;
12
+ onOrganizationChange(orgId: string, storyId: string): any;
13
+ storyId?: string;
14
+ CrMLink?: string;
15
+ hideStoryPicker?: boolean;
16
+ hideDocs?: boolean;
17
+ hideOrgPicker?: boolean;
18
+ }
19
+ export declare const AppWrapper: (props: IAppWrapperProps) => React.JSX.Element;
@@ -0,0 +1,88 @@
1
+ import * as React from 'react';
2
+ import Header from '../header/Header';
3
+ import { validateAccessLevel } from '../../Util';
4
+ import { ConfirmModal } from '../confirm-modal/ConfirmModal';
5
+ import API from '../../services/API';
6
+ import { useAuth0 } from '@auth0/auth0-react';
7
+ export const AppWrapper = (props) => {
8
+ const [blockRender, setBlockRender] = React.useState(true);
9
+ const { children, organizationId, storyId, hideStoryPicker, hideDocs, hideOrgPicker, CrMLink, baseUrl, api, serviceId } = props;
10
+ const { isAuthenticated, isLoading, getAccessTokenSilently, loginWithRedirect, logout } = useAuth0();
11
+ React.useEffect(() => {
12
+ void doCheckSession(true);
13
+ }, [isAuthenticated, isLoading]);
14
+ const getCachedStoryAndOrgForService = (freshAccess, sId) => {
15
+ const service = freshAccess.services.find((s) => s.id === sId);
16
+ if (service) {
17
+ return {
18
+ story_id: service.story_id,
19
+ organization_id: service.organization_id
20
+ };
21
+ }
22
+ };
23
+ const propagateCreds = (freshAccess, token) => {
24
+ const { storyId: initialStoryId, organizationId: initialOrganizationId } = props;
25
+ // If an org and story ID was passed in, we're following a deeplink. Verify we have access to it, and if so, propagate those IDs and set them on the service
26
+ if (initialOrganizationId && initialStoryId) {
27
+ // Validate the user has access to the orgId and storyID passed in, if not, show the "Unauthorized" interface
28
+ const validAccessLevel = validateAccessLevel(initialOrganizationId, serviceId, freshAccess);
29
+ if (validAccessLevel) {
30
+ props.onAuthenticated(token, initialOrganizationId, initialStoryId);
31
+ setBlockRender(false);
32
+ }
33
+ else {
34
+ //TODO: go to unauthorized page
35
+ }
36
+ // If no orgID or storyID was passed in from the URL use the cached orgID and story ID on the service
37
+ }
38
+ else {
39
+ const { story_id, organization_id } = getCachedStoryAndOrgForService(freshAccess, serviceId);
40
+ props.onAuthenticated(token, organization_id, story_id);
41
+ setBlockRender(false);
42
+ }
43
+ };
44
+ /*
45
+ Check auth0 session, pull Imposium access creds on success and initialize app-wrapper
46
+ */
47
+ const doCheckSession = async (doBlockRender = false) => {
48
+ if (doBlockRender) {
49
+ setBlockRender(true);
50
+ }
51
+ // If we're authenticated, get the access token, pull the access data, and propagate back to the parent component
52
+ if (isAuthenticated) {
53
+ const token = await getAccessTokenSilently();
54
+ const orgId = organizationId
55
+ ? organizationId
56
+ : null;
57
+ const tempAPI = new API(baseUrl, token, orgId);
58
+ tempAPI.getAccessData(false)
59
+ .then((freshAccess) => {
60
+ props.setAccessData(freshAccess);
61
+ propagateCreds(freshAccess, token);
62
+ })
63
+ .catch((e) => {
64
+ // this.setState({ restrictAccess: true, blockRender: false });
65
+ // TODO: push to a different route here?
66
+ });
67
+ // If we're not loading, and we're not authenticated, call login, and cache story + org ID from URL if it's there
68
+ }
69
+ else if (!isLoading && !isAuthenticated) {
70
+ void loginWithRedirect({
71
+ appState: { returnTo: window.location.href }
72
+ });
73
+ }
74
+ };
75
+ const onLogout = () => {
76
+ setBlockRender(true);
77
+ void logout({ logoutParams: { returnTo: window.location.origin } });
78
+ };
79
+ let innerContent;
80
+ if (!blockRender) {
81
+ innerContent = children;
82
+ }
83
+ return (React.createElement("div", { id: 'app', className: 'app' },
84
+ React.createElement(Header, { onLogout: onLogout, activeServiceId: serviceId, baseUrl: baseUrl, api: api, activeOrganization: organizationId, activeStory: storyId, hideStoryPicker: hideStoryPicker, hideDocs: hideDocs, showFTLogo: false, hideOrgPicker: hideOrgPicker, CrMLink: CrMLink, onStoryChange: props.onStoryChange, onOrganizationChange: props.onOrganizationChange }),
85
+ innerContent,
86
+ React.createElement(ConfirmModal, null)));
87
+ };
88
+ //# sourceMappingURL=AppWrapperV3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppWrapperV3.js","sourceRoot":"","sources":["../../../../src/components/app-wrapper/AppWrapperV3.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { IIdentity } from '../../services/Auth0';
3
+ export interface IAppWrapperProps {
4
+ children: React.ReactChildren;
5
+ auth0Domain: string;
6
+ auth0ClientId: string;
7
+ organizationId: string;
8
+ baseUrl: string;
9
+ storyId?: string;
10
+ serviceId: number;
11
+ access: any;
12
+ auth: any;
13
+ isFreshUser: boolean;
14
+ setAccessData(accessData: any): any;
15
+ allowUnauthenticatedRender: boolean;
16
+ onAuthenticated: (activeOrgId: string, activeStoryId: string) => any;
17
+ onAuthenticationFailure: (e: Error) => any;
18
+ showRequestAccess?: boolean;
19
+ login: (id: IIdentity) => any;
20
+ clearCachedAuth: () => any;
21
+ }
22
+ export interface IAppWrapperState {
23
+ blockRender: boolean;
24
+ restrictAccess: boolean;
25
+ }
26
+ declare const _default: any;
27
+ export default _default;