@imposium-hub/components 2.8.0-7 → 2.8.1

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 (149) hide show
  1. package/dist/cjs/components/app-wrapper/AppWrapper.js +5 -0
  2. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  3. package/dist/cjs/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  4. package/dist/cjs/components/app-wrapper/AppWrapperV2.js +266 -0
  5. package/dist/cjs/components/app-wrapper/AppWrapperV2.js.map +1 -0
  6. package/dist/cjs/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  7. package/dist/cjs/components/app-wrapper/AppWrapperV3.js +195 -0
  8. package/dist/cjs/components/app-wrapper/AppWrapperV3.js.map +1 -0
  9. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  18. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  19. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  20. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  21. package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
  22. package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
  23. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
  24. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  25. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +104 -0
  26. package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  27. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  28. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
  29. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  30. package/dist/cjs/components/header/Header.js +3 -2
  31. package/dist/cjs/components/header/Header.js.map +1 -1
  32. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  33. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  34. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  35. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  36. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  37. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  38. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  39. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  40. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  41. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  42. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  43. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  44. package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
  45. package/dist/cjs/components/header/StoryDropdown.js +111 -0
  46. package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
  47. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +52 -23
  48. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  49. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +23 -11
  50. package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
  51. package/dist/cjs/constants/copy.d.ts +1 -1
  52. package/dist/cjs/constants/copy.js +1 -1
  53. package/dist/cjs/constants/copy.js.map +1 -1
  54. package/dist/cjs/constants/publish.d.ts +3 -0
  55. package/dist/cjs/constants/publish.js +5 -3
  56. package/dist/cjs/constants/publish.js.map +1 -1
  57. package/dist/cjs/redux/actions/auth.d.ts +9 -0
  58. package/dist/cjs/redux/actions/auth.js +30 -0
  59. package/dist/cjs/redux/actions/auth.js.map +1 -0
  60. package/dist/cjs/redux/reducers/auth.d.ts +3 -0
  61. package/dist/cjs/redux/reducers/auth.js +67 -0
  62. package/dist/cjs/redux/reducers/auth.js.map +1 -0
  63. package/dist/cjs/services/API.d.ts +2 -2
  64. package/dist/cjs/services/API.js +7 -4
  65. package/dist/cjs/services/API.js.map +1 -1
  66. package/dist/cjs/services/Auth0.d.ts +18 -0
  67. package/dist/cjs/services/Auth0.js +102 -0
  68. package/dist/cjs/services/Auth0.js.map +1 -0
  69. package/dist/cjs/services/Session.d.ts +26 -0
  70. package/dist/cjs/services/Session.js +155 -0
  71. package/dist/cjs/services/Session.js.map +1 -0
  72. package/dist/esm/components/app-wrapper/AppWrapper.js +5 -0
  73. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  74. package/dist/esm/components/app-wrapper/AppWrapperV2.d.ts +26 -0
  75. package/dist/esm/components/app-wrapper/AppWrapperV2.js +142 -0
  76. package/dist/esm/components/app-wrapper/AppWrapperV2.js.map +1 -0
  77. package/dist/esm/components/app-wrapper/AppWrapperV3.d.ts +19 -0
  78. package/dist/esm/components/app-wrapper/AppWrapperV3.js +88 -0
  79. package/dist/esm/components/app-wrapper/AppWrapperV3.js.map +1 -0
  80. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  81. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  82. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  83. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  84. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  85. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  86. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  87. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  88. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  89. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  90. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  91. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  92. package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
  93. package/dist/esm/components/auth-gate/AuthGate.js +59 -0
  94. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
  95. package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
  96. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +72 -0
  97. package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
  98. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  99. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
  100. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  101. package/dist/esm/components/header/Header.js +3 -2
  102. package/dist/esm/components/header/Header.js.map +1 -1
  103. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  104. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  105. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  106. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  107. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  108. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  109. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  110. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  111. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  112. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  113. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  114. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  115. package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
  116. package/dist/esm/components/header/StoryDropdown.js +82 -0
  117. package/dist/esm/components/header/StoryDropdown.js.map +1 -0
  118. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +43 -14
  119. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  120. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +20 -11
  121. package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
  122. package/dist/esm/constants/copy.d.ts +1 -1
  123. package/dist/esm/constants/copy.js +1 -1
  124. package/dist/esm/constants/copy.js.map +1 -1
  125. package/dist/esm/constants/publish.d.ts +3 -0
  126. package/dist/esm/constants/publish.js +4 -2
  127. package/dist/esm/constants/publish.js.map +1 -1
  128. package/dist/esm/redux/actions/auth.d.ts +9 -0
  129. package/dist/esm/redux/actions/auth.js +25 -0
  130. package/dist/esm/redux/actions/auth.js.map +1 -0
  131. package/dist/esm/redux/reducers/auth.d.ts +3 -0
  132. package/dist/esm/redux/reducers/auth.js +27 -0
  133. package/dist/esm/redux/reducers/auth.js.map +1 -0
  134. package/dist/esm/services/API.d.ts +2 -2
  135. package/dist/esm/services/API.js +7 -4
  136. package/dist/esm/services/API.js.map +1 -1
  137. package/dist/esm/services/Auth0.d.ts +18 -0
  138. package/dist/esm/services/Auth0.js +68 -0
  139. package/dist/esm/services/Auth0.js.map +1 -0
  140. package/dist/esm/services/Session.d.ts +26 -0
  141. package/dist/esm/services/Session.js +107 -0
  142. package/dist/esm/services/Session.js.map +1 -0
  143. package/package.json +1 -1
  144. package/src/components/app-wrapper/AppWrapper.tsx +6 -0
  145. package/src/components/header/Header.tsx +3 -2
  146. package/src/components/publish-wizard/publish/EmailWorkflow.tsx +66 -24
  147. package/src/constants/copy.ts +1 -1
  148. package/src/constants/publish.ts +7 -2
  149. package/src/services/API.ts +11 -6
@@ -0,0 +1,68 @@
1
+ import * as auth0 from 'auth0-js';
2
+ export default class AuthService {
3
+ static IMPOSIUM_APP_DEFAULTS = {
4
+ scope: 'openid',
5
+ audience: 'https://api.4cinsights.io/',
6
+ responseType: 'token id_token',
7
+ redirectUri: `${window.location.origin}/auth`
8
+ };
9
+ // Auth0 JS client
10
+ static auth0Client;
11
+ /*
12
+ Initialize the auth0 web client with client ID for a given app-wrapper
13
+ */
14
+ static bindToClient = (clientID, domain) => {
15
+ AuthService.auth0Client = new auth0.WebAuth({
16
+ clientID,
17
+ domain,
18
+ ...AuthService.IMPOSIUM_APP_DEFAULTS
19
+ });
20
+ };
21
+ /*
22
+ redirect to auth0 for login
23
+ */
24
+ static login = () => {
25
+ AuthService.auth0Client.authorize();
26
+ };
27
+ /*
28
+ Re-direct to auth0 to cancel session & instruct auth0 to redirect back to login
29
+ */
30
+ static logout = () => {
31
+ AuthService.auth0Client.logout({ returnTo: `${window.location.origin}/auth` });
32
+ };
33
+ /*
34
+ Validate auth0 expiry timestamp
35
+ */
36
+ static checkExpiry = (expiry) => expiry > Date.now().valueOf() / 1000;
37
+ /*
38
+ Parse out identity from hash
39
+ */
40
+ static parseIdFromHash = (hash) => {
41
+ return new Promise((resolve, reject) => {
42
+ AuthService.auth0Client.parseHash({ options: hash }, (e, id) => {
43
+ if (!e) {
44
+ resolve(id);
45
+ }
46
+ else {
47
+ reject(e);
48
+ }
49
+ });
50
+ });
51
+ };
52
+ /*
53
+ Defer to auth0 web servers to check if users session is valid
54
+ */
55
+ static checkSession = () => {
56
+ return new Promise((resolve, reject) => {
57
+ AuthService.auth0Client.checkSession({}, (e, id) => {
58
+ if (!e) {
59
+ resolve(id);
60
+ }
61
+ else {
62
+ reject(e);
63
+ }
64
+ });
65
+ });
66
+ };
67
+ }
68
+ //# sourceMappingURL=Auth0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Auth0.js","sourceRoot":"","sources":["../../../src/services/Auth0.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAC;AAWlC,MAAM,CAAC,OAAO,OAAO,WAAW;IACpB,MAAM,CAAU,qBAAqB,GAAQ;QACjD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,4BAA4B;QACtC,YAAY,EAAE,gBAAgB;QAC9B,WAAW,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,OAAO;KAChD,CAAC;IAEF,kBAAkB;IACV,MAAM,CAAC,WAAW,CAAgB;IAE1C;;OAEG;IACI,MAAM,CAAC,YAAY,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAQ,EAAE;QACpE,WAAW,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;YACxC,QAAQ;YACR,MAAM;YACN,GAAG,WAAW,CAAC,qBAAqB;SACvC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,KAAK,GAAG,GAAS,EAAE;QAC7B,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,MAAM,GAAG,GAAS,EAAE;QAC9B,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC,CAAC;IAEF;;OAEG;IACI,MAAM,CAAC,WAAW,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAE9F;;OAEG;IACI,MAAM,CAAC,eAAe,GAAG,CAAC,IAAY,EAAsB,EAAE;QACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAQ,EAAE,EAAa,EAAE,EAAE;gBAC7E,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;IACI,MAAM,CAAC,YAAY,GAAG,GAA+B,EAAE;QAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAQ,EAAE,EAAa,EAAE,EAAE;gBACjE,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"}
@@ -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,107 @@
1
+ import * as Cookies from 'js-cookie';
2
+ import axios from 'axios';
3
+ export default class SessionService {
4
+ static LOGIN_STORY_ID_CACHE = 'imp_hub_last_story_id';
5
+ static LOGIN_ORG_ID_CACHE = 'imp_hub_last_org_id';
6
+ static SESSION_COOKIE_NAME = 'auth_state';
7
+ static FRESH_COOKIE = {
8
+ sub: '',
9
+ organization_id: '',
10
+ story_id: ''
11
+ };
12
+ /*
13
+ Get list of accessible services with themes from Imposium API
14
+ */
15
+ static getAccessData = (idToken, baseUrl, getTotalRenders = false, accountId) => {
16
+ return new Promise((resolve, reject) => {
17
+ let accessUrl = baseUrl ? `${baseUrl}/access` : SessionService.determineAccessUrl();
18
+ const headers = { Authorization: `Bearer ${idToken}` };
19
+ if (getTotalRenders) {
20
+ accessUrl += '?include_total_renders=true';
21
+ }
22
+ if (accountId && accountId !== 'undefined') {
23
+ headers['X-Imposium-Account-Id'] = accountId;
24
+ }
25
+ axios
26
+ .get(accessUrl, { headers })
27
+ .then((res) => {
28
+ resolve(res.data ? res.data : []);
29
+ })
30
+ .catch((e) => {
31
+ reject(e);
32
+ });
33
+ });
34
+ };
35
+ static getSession = () => Cookies.getJSON(SessionService.SESSION_COOKIE_NAME);
36
+ static removeSession = () => {
37
+ const domain = SessionService.scrapeDomain();
38
+ Cookies.remove(SessionService.SESSION_COOKIE_NAME, { domain });
39
+ SessionService.clearCachedOrgId();
40
+ SessionService.clearCachedStoryId();
41
+ };
42
+ static buildFreshSession = (freshIdentity, orgId = null, storyId = null) => {
43
+ const { idTokenPayload: { sub, exp } } = freshIdentity;
44
+ const freshSession = {
45
+ sub
46
+ };
47
+ if (orgId) {
48
+ freshSession.organization_id = orgId;
49
+ }
50
+ if (storyId) {
51
+ freshSession.story_id = storyId;
52
+ }
53
+ SessionService.storeSession(freshSession, exp);
54
+ };
55
+ static storeSession = (values, auth0Expiry) => {
56
+ const cookieData = { ...SessionService.FRESH_COOKIE, ...values };
57
+ const domain = SessionService.scrapeDomain();
58
+ const expiry = new Date(auth0Expiry * 1000);
59
+ Cookies.set(SessionService.SESSION_COOKIE_NAME, cookieData, { domain, expires: expiry });
60
+ };
61
+ static cacheOrgId = (organizationId) => {
62
+ localStorage.setItem(SessionService.LOGIN_ORG_ID_CACHE, organizationId);
63
+ };
64
+ static clearCachedOrgId = () => {
65
+ localStorage.removeItem(SessionService.LOGIN_ORG_ID_CACHE);
66
+ };
67
+ static getCachedOrgId = () => {
68
+ return localStorage.getItem(SessionService.LOGIN_ORG_ID_CACHE);
69
+ };
70
+ static cacheStoryId = (storyId) => {
71
+ localStorage.setItem(SessionService.LOGIN_STORY_ID_CACHE, storyId);
72
+ };
73
+ static clearCachedStoryId = () => {
74
+ localStorage.removeItem(SessionService.LOGIN_STORY_ID_CACHE);
75
+ };
76
+ static getCachedStoryId = () => {
77
+ return localStorage.getItem(SessionService.LOGIN_STORY_ID_CACHE);
78
+ };
79
+ static updateSession = (values, auth0Expiry) => {
80
+ const prevCookieData = SessionService.getSession();
81
+ const nextCookieData = { ...prevCookieData, ...values };
82
+ SessionService.storeSession(nextCookieData, auth0Expiry);
83
+ };
84
+ /*
85
+ Determine which domain to assign cookie to
86
+ */
87
+ static scrapeDomain = () => {
88
+ const domainParts = window.location.host.split('.').reverse();
89
+ return domainParts.length > 2 ? `.${domainParts[1]}.${domainParts[0].split(':')[0]}` : null;
90
+ };
91
+ /*
92
+ Figure out which access endpoint to hit based on env
93
+ */
94
+ static determineAccessUrl = () => {
95
+ const { location: { hostname, host } } = window;
96
+ if (hostname === 'localhost') {
97
+ return 'https://api/access';
98
+ }
99
+ else if (host.includes('.staging.')) {
100
+ return 'https://api.staging.imposium.com/access';
101
+ }
102
+ else {
103
+ return 'https://api.imposium.com/access';
104
+ }
105
+ };
106
+ }
107
+ //# 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imposium-hub/components",
3
- "version": "2.8.0-7",
3
+ "version": "2.8.1",
4
4
  "description": "React & Typescript component / asset library for Imposium front-ends",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -229,6 +229,12 @@ export const AppWrapper: React.FC<IAppWrapperProps> = (props) => {
229
229
  })
230
230
  .catch((e: Error) => {
231
231
  setErrorState(APP_WRAPPER_ERROR_STATES.UNAUTHORIZED_ORG);
232
+
233
+ // Attempt to get the access data again without the org ID, so we can at least shoe the user the org dropdown
234
+ api.init(baseUrl, getAccessTokenSilently, null);
235
+ api.getAccessData(false).then((freshAccess: any) => {
236
+ props.setAccessData(freshAccess);
237
+ });
232
238
  });
233
239
 
234
240
  // If we're not loading, and we're not authenticated, call login, and cache story + org ID from URL if it's there
@@ -73,7 +73,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
73
73
 
74
74
  private static readonly SDK_DOCS_LINK: string = 'https://docs.imposium.com/js-sdk/';
75
75
 
76
- private static readonly DEFAULT_ACCOUNT_TOGGLE_COLOR: string = 'royalblue';
76
+ private static readonly DEFAULT_ACCOUNT_TOGGLE_COLOR: string = '#AF1126';
77
77
 
78
78
  private static readonly NO_STORIES_COPY: string = 'No stories were found';
79
79
 
@@ -144,7 +144,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
144
144
  : [];
145
145
 
146
146
  let dropdownToggleColor: string = ImposiumHeader.DEFAULT_ACCOUNT_TOGGLE_COLOR;
147
- let activeFirstChar: string = '';
147
+ let activeFirstChar: string = 'X';
148
148
 
149
149
  if (activeOrganizationBlob && activeOrganizationBlob.hasOwnProperty('name')) {
150
150
  dropdownToggleColor = string2HexCode(activeOrganizationBlob.name);
@@ -209,6 +209,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
209
209
  api.cacheActiveStory(activeServiceId, orgId, storyId);
210
210
  } else {
211
211
  pushRoute(`/${orgId}`);
212
+ api.cacheActiveStory(activeServiceId, orgId);
212
213
  }
213
214
  })
214
215
  .catch((e) => {
@@ -12,7 +12,13 @@ import { connect } from 'react-redux';
12
12
  import SelectField from '../../select-field/SelectField';
13
13
  import { updateAssociation, getBatch, setPage } from '../../../redux/actions/active-batch';
14
14
  import TextField from '../../text-field/TextField';
15
- import { CRM_PLACEMENT_VARS } from '../../../constants/publish';
15
+ import {
16
+ ADSTUDIO_POST_RENDER_ACTION,
17
+ ASSET_NAME_VAR,
18
+ ASSETS_POST_RENDER_ACTION,
19
+ CRM_PLACEMENT_VARS
20
+ } from '../../../constants/publish';
21
+ import CheckboxField from '../../checkbox-field/CheckboxField';
16
22
 
17
23
  interface IEmailWorkflowProps {
18
24
  story: any;
@@ -69,12 +75,12 @@ interface IEmailWorkflowProps {
69
75
  onNext: (val: boolean) => void;
70
76
  next: boolean;
71
77
  isCrM: boolean;
78
+ isCrMAsset?: boolean;
72
79
  }
73
80
 
74
81
  interface CrMOverrides {
75
82
  creative_id: string;
76
83
  creative_library_id: string;
77
- notification_email: string;
78
84
  placement_type: string;
79
85
  }
80
86
 
@@ -124,7 +130,6 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
124
130
  creativeManagerOverrides: {
125
131
  creative_id: '',
126
132
  creative_library_id: '',
127
- notification_email: '',
128
133
  placement_type: 'crm-adstudio'
129
134
  },
130
135
  waitingForPublish: false,
@@ -266,6 +271,8 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
266
271
  const { name } = this.props.story;
267
272
  const { isCrM } = this.props;
268
273
  const { inventory, inventoryKeys } = this.state;
274
+ const uploadAsAssets =
275
+ this.state.creativeManagerOverrides.placement_type === ASSETS_POST_RENDER_ACTION;
269
276
 
270
277
  const maskConfig: any[] = inventoryKeys.map((currKey: string) => {
271
278
  let value = '';
@@ -288,12 +295,27 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
288
295
  });
289
296
 
290
297
  if (isCrM) {
291
- for (const id of CRM_PLACEMENT_VARS) {
292
- maskConfig.push({
293
- id,
294
- name: id,
295
- show: true
296
- });
298
+ if (uploadAsAssets) {
299
+ maskConfig.push(
300
+ {
301
+ id: ASSET_NAME_VAR,
302
+ name: ASSET_NAME_VAR,
303
+ show: true
304
+ },
305
+ {
306
+ id: 'creative_library_id',
307
+ name: 'creative_library_id',
308
+ show: true
309
+ }
310
+ );
311
+ } else {
312
+ for (const id of CRM_PLACEMENT_VARS) {
313
+ maskConfig.push({
314
+ id,
315
+ name: id,
316
+ show: true
317
+ });
318
+ }
297
319
  }
298
320
  }
299
321
 
@@ -436,12 +458,7 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
436
458
  private getPostRenderActions() {
437
459
  const CrMUploadAction = { data: {} };
438
460
  const {
439
- creativeManagerOverrides: {
440
- placement_type,
441
- creative_id,
442
- creative_library_id,
443
- notification_email
444
- }
461
+ creativeManagerOverrides: { placement_type, creative_id, creative_library_id }
445
462
  } = this.state;
446
463
 
447
464
  CrMUploadAction['type'] = placement_type;
@@ -451,9 +468,6 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
451
468
  if (creative_library_id) {
452
469
  CrMUploadAction.data['creative_library_id'] = creative_library_id;
453
470
  }
454
- if (notification_email) {
455
- CrMUploadAction.data['notification_email'] = notification_email;
456
- }
457
471
 
458
472
  return [CrMUploadAction];
459
473
  }
@@ -911,10 +925,8 @@ const CrMOptions: React.FC<ICrMOptionsProps> = ({ options, onChange, errorCopy =
911
925
  </div>
912
926
  ) : null;
913
927
 
914
- return (
928
+ const standardInterface = (
915
929
  <>
916
- <HRule />
917
- <br />
918
930
  <h2>{copy.publish.crmPlacement}</h2>
919
931
  <p>{copy.publish.crmData}</p>
920
932
  {e}
@@ -933,14 +945,44 @@ const CrMOptions: React.FC<ICrMOptionsProps> = ({ options, onChange, errorCopy =
933
945
  value={options.creative_id}
934
946
  onChange={(v) => onInputChange('creative_id', v)}
935
947
  />
948
+ </>
949
+ );
950
+
951
+ const assetInterface = (
952
+ <>
953
+ <h2>{copy.publish.crmPlacement}</h2>
954
+ <p>{copy.publish.crmData}</p>
955
+ {e}
956
+ <br />
936
957
  <TextField
937
958
  width={'33%'}
938
959
  labelPosition='top'
939
- label={copy.publish.email}
940
- value={options.notification_email}
941
- onChange={(v) => onInputChange('notification_email', v)}
960
+ label={copy.publish.creativeLibraryId}
961
+ value={options.creative_library_id}
962
+ onChange={(v) => onInputChange('creative_library_id', v)}
942
963
  />
964
+ </>
965
+ );
966
+ return (
967
+ <>
968
+ <HRule />
943
969
  <br />
970
+ {options['placement_type'] === ASSETS_POST_RENDER_ACTION
971
+ ? assetInterface
972
+ : standardInterface}
973
+ <br />
974
+ <HRule />
975
+ <CheckboxField
976
+ value={options['placement_type'] === ASSETS_POST_RENDER_ACTION ? true : false}
977
+ label={copy.publish.uploadAsAssets}
978
+ onChange={(v) => {
979
+ if (v === false) {
980
+ onInputChange('placement_type', ADSTUDIO_POST_RENDER_ACTION);
981
+ } else {
982
+ onInputChange('placement_type', ASSETS_POST_RENDER_ACTION);
983
+ }
984
+ }}
985
+ />
944
986
  <HRule />
945
987
  </>
946
988
  );
@@ -123,6 +123,7 @@ export const compositions = {
123
123
  };
124
124
 
125
125
  export const publish = {
126
+ uploadAsAssets: 'Upload as Assets',
126
127
  noVariablesError:
127
128
  'No variables found on the project. Cannot proceed with publishing to Creative Manager until at least one variable is added to the project.',
128
129
  publishInProgress: 'Publish to Creative Manager in progress',
@@ -130,7 +131,6 @@ export const publish = {
130
131
  btnCrM: 'Creative Manager',
131
132
  creativeLibraryId: 'Creative Library ID',
132
133
  creativeId: 'Creative ID',
133
- email: 'Notification Email',
134
134
  missingFields: 'Please provide the missing fields and try again!',
135
135
  crmPlacement: 'Creative Manager Placement Variables',
136
136
  crmData: `If your CSV batch data doesn't contain the required Creative Manager placement variables, or you would like to override them, enter the values below before you upload the batch data.`,
@@ -14,11 +14,16 @@ export const CRM_PLACEMENT_OPTIONS = [
14
14
  }
15
15
  ];
16
16
 
17
+ export const ASSET_NAME_VAR = 'asset-name';
18
+
17
19
  export const CRM_PLACEMENT_VARS = [
18
20
  'creative_library_id',
19
21
  'creative_id',
20
22
  'version-name',
21
23
  'version-id',
22
- 'clickTag1',
23
- 'notificiaton_email'
24
+ 'clickTag1'
24
25
  ];
26
+
27
+ export const ADSTUDIO_POST_RENDER_ACTION = 'crm-adstudio';
28
+
29
+ export const ASSETS_POST_RENDER_ACTION = 'crm-asset';
@@ -148,7 +148,7 @@ export interface IImposiumAPI {
148
148
  getAssetMap(storyId: string);
149
149
  clearStoryCache(storyId: string);
150
150
  debugId(id: string);
151
- cacheActiveStory(serviceId: any, orgId: string, storyId: string);
151
+ cacheActiveStory(serviceId: any, orgId: string, storyId?: string);
152
152
  getCachedStoryForOrg(serviceId: string, orgId: string);
153
153
  getAccessData(includeTotalRenders?: boolean, orgId?: string);
154
154
  deleteExperience(experienceId: string, eraseMedia?: boolean);
@@ -1718,16 +1718,21 @@ export default class API {
1718
1718
  });
1719
1719
  };
1720
1720
 
1721
- public cacheActiveStory = (serviceId, orgId, storyId): Promise<any | Error> => {
1721
+ public cacheActiveStory = (serviceId, orgId, storyId?): Promise<any | Error> => {
1722
1722
  const route = `/service/${serviceId}/${orgId}/active`;
1723
1723
 
1724
+ const data: any = {
1725
+ organization_id: orgId
1726
+ };
1727
+
1728
+ if (storyId) {
1729
+ data['story_id'] = storyId;
1730
+ }
1731
+
1724
1732
  return this.doRequest({
1725
1733
  method: 'POST',
1726
1734
  url: route,
1727
- data: {
1728
- story_id: storyId,
1729
- organization_id: orgId
1730
- }
1735
+ data
1731
1736
  });
1732
1737
  };
1733
1738