surveysparrow-ionic-plugin 2.0.2-beta.1 → 2.0.2-beta.2
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.
- package/dist/angular-ui/esm2022/spotchecks/SpotCheckComponent.mjs +81 -100
- package/dist/angular-ui/esm2022/spotchecks/SpotCheckEventListener.mjs +26 -0
- package/dist/angular-ui/esm2022/spotchecks/SpotcheckStateService.mjs +1 -3
- package/dist/angular-ui/esm2022/spotchecks/api.mjs +3 -3
- package/dist/angular-ui/esm2022/spotchecks/helpers.mjs +14 -18
- package/dist/angular-ui/esm2022/spotchecks/index.mjs +2 -1
- package/dist/angular-ui/esm2022/spotchecks/types.mjs +1 -1
- package/dist/angular-ui/fesm2022/angular-ui.mjs +120 -122
- package/dist/angular-ui/fesm2022/angular-ui.mjs.map +1 -1
- package/dist/angular-ui/spotchecks/SpotCheckComponent.d.ts +10 -5
- package/dist/angular-ui/spotchecks/SpotCheckEventListener.d.ts +16 -0
- package/dist/angular-ui/spotchecks/helpers.d.ts +1 -2
- package/dist/angular-ui/spotchecks/index.d.ts +1 -0
- package/dist/angular-ui/spotchecks/types.d.ts +0 -2
- package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.d.ts +10 -5
- package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.js +75 -95
- package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/SpotCheckEventListener.d.ts +16 -0
- package/dist/esm/angular-ui/lib/spotchecks/SpotCheckEventListener.js +28 -0
- package/dist/esm/angular-ui/lib/spotchecks/SpotCheckEventListener.js.map +1 -0
- package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.js +0 -2
- package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/api.js +3 -4
- package/dist/esm/angular-ui/lib/spotchecks/api.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/helpers.d.ts +1 -2
- package/dist/esm/angular-ui/lib/spotchecks/helpers.js +15 -18
- package/dist/esm/angular-ui/lib/spotchecks/helpers.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/index.d.ts +1 -0
- package/dist/esm/angular-ui/lib/spotchecks/index.js +1 -0
- package/dist/esm/angular-ui/lib/spotchecks/index.js.map +1 -1
- package/dist/esm/angular-ui/lib/spotchecks/types.d.ts +0 -2
- package/dist/esm/angular-ui/lib/spotchecks/types.js.map +1 -1
- package/dist/plugin.cjs.js +116 -116
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +116 -116
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
- package/src/angular-ui/lib/spotchecks/SpotCheckComponent.ts +76 -98
- package/src/angular-ui/lib/spotchecks/SpotCheckEventListener.ts +50 -0
- package/src/angular-ui/lib/spotchecks/SpotcheckStateService.ts +0 -2
- package/src/angular-ui/lib/spotchecks/api.ts +4 -4
- package/src/angular-ui/lib/spotchecks/helpers.ts +14 -23
- package/src/angular-ui/lib/spotchecks/index.ts +3 -0
- package/src/angular-ui/lib/spotchecks/types.ts +0 -2
|
@@ -2,8 +2,8 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
2
2
|
import { Device } from '@capacitor/device';
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import { SpotcheckStateService } from './SpotcheckStateService';
|
|
5
|
+
import { getSpotCheckEventListener } from './SpotCheckEventListener';
|
|
5
6
|
let globalSpotcheckStateService;
|
|
6
|
-
let globalOS = null;
|
|
7
7
|
export const getSpotcheckStateService = () => {
|
|
8
8
|
if (!globalSpotcheckStateService) {
|
|
9
9
|
globalSpotcheckStateService = new SpotcheckStateService();
|
|
@@ -23,11 +23,10 @@ export const ischatSurvey = (type) => {
|
|
|
23
23
|
};
|
|
24
24
|
export const getOS = async () => {
|
|
25
25
|
const info = await Device.getInfo();
|
|
26
|
-
|
|
27
|
-
return globalOS;
|
|
26
|
+
return info.operatingSystem;
|
|
28
27
|
};
|
|
29
28
|
export const setAppearance = async (responseJson, screen, domainName, traceId, variables) => {
|
|
30
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
31
30
|
try {
|
|
32
31
|
const spotcheckStateService = getSpotcheckStateService();
|
|
33
32
|
let state = spotcheckStateService.getState();
|
|
@@ -74,11 +73,11 @@ export const setAppearance = async (responseJson, screen, domainName, traceId, v
|
|
|
74
73
|
spotcheckStateService.setState(updatedState);
|
|
75
74
|
try {
|
|
76
75
|
const response = await axios.get(fullSpotcheckURL);
|
|
77
|
-
const themeInfo =
|
|
76
|
+
const themeInfo = response.data.config.generatedCSS;
|
|
78
77
|
const theme_payload = { type: 'THEME_UPDATE_SPOTCHECK', themeInfo };
|
|
79
78
|
state = spotcheckStateService.getState();
|
|
80
79
|
let webViewRef = chat ? state.chatWebViewRef : state.classicWebViewRef;
|
|
81
|
-
let isLoading = chat ? state.isChatLoading
|
|
80
|
+
let isLoading = chat ? state.isChatLoading : state.isClassicLoading;
|
|
82
81
|
const resetStateData = {
|
|
83
82
|
type: 'RESET_STATE',
|
|
84
83
|
state: Object.assign(Object.assign({}, (response.data || {})), { skip: true, spotCheckAppearance: Object.assign(Object.assign({}, (appearance || {})), { targetType: 'MOBILE' }), spotcheckUrl: screen, traceId, elementBuilderParams: Object.assign({}, (variables || {})) }),
|
|
@@ -109,8 +108,8 @@ export const setAppearance = async (responseJson, screen, domainName, traceId, v
|
|
|
109
108
|
else {
|
|
110
109
|
// todo: recheck this
|
|
111
110
|
const unsubscribe = spotcheckStateService.state$.subscribe((currentState) => {
|
|
112
|
-
const { isChatLoading, isClassicLoading, chatWebViewRef, classicWebViewRef,
|
|
113
|
-
if ((!isChatLoading && chat
|
|
111
|
+
const { isChatLoading, isClassicLoading, chatWebViewRef, classicWebViewRef, } = currentState;
|
|
112
|
+
if ((!isChatLoading && chat) || (!isClassicLoading && !chat)) {
|
|
114
113
|
unsubscribe.unsubscribe();
|
|
115
114
|
const activeWebViewRef = chat
|
|
116
115
|
? chatWebViewRef
|
|
@@ -133,8 +132,8 @@ export const setAppearance = async (responseJson, screen, domainName, traceId, v
|
|
|
133
132
|
? currentState.chatWebViewRef
|
|
134
133
|
: currentState.classicWebViewRef;
|
|
135
134
|
const updatedIsLoading = chat
|
|
136
|
-
? currentState.isChatLoading
|
|
137
|
-
: currentState.isClassicLoading
|
|
135
|
+
? currentState.isChatLoading
|
|
136
|
+
: currentState.isClassicLoading;
|
|
138
137
|
if (updatedWebViewRef) {
|
|
139
138
|
if (!updatedIsLoading) {
|
|
140
139
|
unsubscribeWebView.unsubscribe();
|
|
@@ -180,7 +179,10 @@ export const closeSpotCheck = async () => {
|
|
|
180
179
|
},
|
|
181
180
|
body: JSON.stringify(payload),
|
|
182
181
|
});
|
|
183
|
-
if (response.status
|
|
182
|
+
if (response.status == 200) {
|
|
183
|
+
getSpotCheckEventListener().emit('surveyDismissed');
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
184
186
|
console.log(`Error: ${response.status}`);
|
|
185
187
|
}
|
|
186
188
|
}
|
|
@@ -237,15 +239,11 @@ export const getSpotcheckComponentCssStyles = (state) => {
|
|
|
237
239
|
height: '100%',
|
|
238
240
|
};
|
|
239
241
|
}
|
|
240
|
-
let marginBottom = globalOS !== 'ios' ? 18 : 0;
|
|
241
242
|
if (state.isVisible && state.isMounted) {
|
|
242
243
|
let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));
|
|
243
244
|
if (state.spotChecksMode === 'miniCard') {
|
|
244
245
|
if (state.avatarEnabled) {
|
|
245
246
|
height = height - 56;
|
|
246
|
-
if (state.spotcheckPosition === 'bottom') {
|
|
247
|
-
marginBottom += 56;
|
|
248
|
-
}
|
|
249
247
|
}
|
|
250
248
|
if (state.isCloseButtonEnabled) {
|
|
251
249
|
height = height - 40;
|
|
@@ -290,12 +288,11 @@ export const getSpotcheckComponentCssStyles = (state) => {
|
|
|
290
288
|
}
|
|
291
289
|
}
|
|
292
290
|
return {
|
|
293
|
-
wrapperStyles: Object.assign({ position: 'fixed', width: '100%', height: '100%', top: '0', left: '0', backgroundColor: 'rgba(0, 0, 0, 0.3)', zIndex: '
|
|
294
|
-
styles: Object.assign({ display: 'none', flexDirection: 'column', paddingTop: extraPaddingForMiniCardCloseButtonIfTopPosition + 'px'
|
|
291
|
+
wrapperStyles: Object.assign({ position: 'fixed', width: '100%', height: '100%', top: '0', left: '0', backgroundColor: 'rgba(0, 0, 0, 0.3)', zIndex: '99999999', display: 'none', flexDirection: 'column' }, wrapperStyles),
|
|
292
|
+
styles: Object.assign({ display: 'none', flexDirection: 'column', paddingTop: extraPaddingForMiniCardCloseButtonIfTopPosition + 'px' }, styles)
|
|
295
293
|
};
|
|
296
294
|
};
|
|
297
295
|
export const closeSpotCheckAndHandleSurveyEnd = async () => {
|
|
298
|
-
await closeSpotCheck();
|
|
299
296
|
handleSurveyEnd();
|
|
300
297
|
};
|
|
301
298
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/angular-ui/lib/spotchecks/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { Device } from '@capacitor/device';\nimport { SpotcheckState } from './types';\nimport axios from 'axios';\nimport { SpotcheckStateService } from './SpotcheckStateService';\n\nlet globalSpotcheckStateService: SpotcheckStateService;\nlet globalOS: string | null = null;\n\nexport const getSpotcheckStateService = (): SpotcheckStateService => {\n if (!globalSpotcheckStateService) {\n globalSpotcheckStateService = new SpotcheckStateService();\n }\n return globalSpotcheckStateService;\n};\n\nexport function generateTraceId() {\n const uuidString = uuidv4();\n const timestamp = Date.now();\n return `${uuidString}-${timestamp}`;\n}\n\nexport const ischatSurvey = (type: String) => {\n return (\n type === 'Conversational' ||\n type === 'CESChat' ||\n type === 'NPSChat' ||\n type === 'CSATChat'\n );\n};\n\nexport const getOS = async () => {\n const info = await Device.getInfo();\n globalOS = info.operatingSystem;\n return globalOS;\n};\n\nexport const setAppearance = async (\n responseJson: any,\n screen: string,\n domainName: string,\n traceId: string,\n variables: Record<string, any>\n) => {\n try {\n const spotcheckStateService = getSpotcheckStateService();\n let state = spotcheckStateService.getState();\n\n if (responseJson) {\n const currentSpotcheck = state.filteredSpotChecks.find(\n (spotcheck) =>\n spotcheck['id'] === responseJson?.spotCheckId ||\n spotcheck['id'] === responseJson?.id\n );\n\n const appearance = responseJson?.appearance;\n let chat = false;\n\n let updatedState: Partial<SpotcheckState> = {};\n\n if (appearance) {\n const {\n position,\n closeButton,\n colors,\n cardProperties,\n mode,\n bannerImage,\n } = appearance;\n const { maxHeight } = cardProperties || {};\n\n updatedState = {\n spotcheckPosition:\n position === 'top_full' || position === 'center_top'\n ? 'top'\n : position === 'center_center'\n ? 'center'\n : 'bottom',\n isCloseButtonEnabled: closeButton ?? true,\n closeButtonStyle: colors?.overrides ?? {},\n maxHeight: maxHeight ? parseFloat(maxHeight) / 100 : 0,\n spotCheckType:\n ischatSurvey(currentSpotcheck?.['survey']?.surveyType) &&\n mode === 'fullScreen'\n ? 'chat'\n : 'classic',\n isFullScreenMode: mode === 'fullScreen',\n isBannerImageOn: bannerImage?.enabled ?? false,\n spotChecksMode: mode,\n avatarEnabled: appearance?.avatar?.enabled ?? false,\n avatarUrl: appearance?.avatar?.avatarUrl ?? '',\n };\n\n chat = updatedState.spotCheckType === 'chat';\n }\n\n const spotCheckId = responseJson?.spotCheckId ?? 0;\n const spotCheckContactId =\n responseJson?.spotCheckContactId ??\n responseJson?.spotCheckContact?.id ??\n 0;\n const triggerToken = responseJson?.triggerToken ?? '';\n\n updatedState = {\n ...updatedState,\n spotcheckID: spotCheckId,\n spotcheckContactID: spotCheckContactId,\n triggerToken,\n };\n\n const baseSpotcheckURL = `https://${domainName}/s/spotcheck/${triggerToken}/${\n chat ? 'config' : 'bootstrap'\n }?spotcheckContactId=${spotCheckContactId}&traceId=${traceId}&spotcheckUrl=${screen}`;\n\n let fullSpotcheckURL = baseSpotcheckURL;\n\n Object.entries(variables).forEach(([key, value]) => {\n fullSpotcheckURL += `&${key}=${value}`;\n });\n\n updatedState.spotcheckURL = fullSpotcheckURL;\n spotcheckStateService.setState(updatedState);\n\n try {\n const response = await axios.get(fullSpotcheckURL);\n const themeInfo = response.data?.config?.generatedCSS;\n const theme_payload = { type: 'THEME_UPDATE_SPOTCHECK', themeInfo };\n state = spotcheckStateService.getState();\n\n let webViewRef = chat ? state.chatWebViewRef : state.classicWebViewRef;\n let isLoading = chat ? state.isChatLoading || !state.isChatLoadEventReceived : state.isClassicLoading || !state.isClassicLoadEventReceived;\n\n const resetStateData = {\n type: 'RESET_STATE',\n state: {\n ...(response.data || {}),\n skip: true,\n spotCheckAppearance: {\n ...(appearance || {}),\n targetType: 'MOBILE',\n },\n spotcheckUrl: screen,\n traceId,\n elementBuilderParams: {\n ...(variables || {}),\n },\n },\n };\n\n const sendMessageToIframe = (iframe: HTMLIFrameElement, data: any) => {\n if (iframe && iframe.contentWindow) {\n try {\n iframe.contentWindow.postMessage(data, '*');\n } catch (error) {\n console.error('❌ Failed to send message to iframe:', error);\n }\n }\n };\n\n const communicateWithWebView = async (iframe: HTMLIFrameElement) => {\n await new Promise(resolve => setTimeout(() => {\n sendMessageToIframe(iframe, resetStateData);\n sendMessageToIframe(iframe, theme_payload);\n resolve(true);\n }, 2000));\n };\n\n if (webViewRef) {\n if (isLoading === false) {\n communicateWithWebView(webViewRef);\n start();\n return true;\n } else {\n // todo: recheck this\n const unsubscribe = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const {\n isChatLoading,\n isClassicLoading,\n chatWebViewRef,\n classicWebViewRef,\n isClassicLoadEventReceived,\n isChatLoadEventReceived,\n } = currentState;\n\n \n if ((!isChatLoading && chat && isChatLoadEventReceived) || (!isClassicLoading && !chat && isClassicLoadEventReceived)) {\n unsubscribe.unsubscribe();\n const activeWebViewRef = chat\n ? chatWebViewRef\n : classicWebViewRef;\n if (activeWebViewRef) {\n communicateWithWebView(activeWebViewRef);\n start();\n } else {\n console.warn(\n '⚠️ Active WebView ref is null after loading completed'\n );\n }\n }\n }\n );\n return true;\n }\n } else {\n const unsubscribeWebView = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const updatedWebViewRef = chat\n ? currentState.chatWebViewRef\n : currentState.classicWebViewRef;\n const updatedIsLoading = chat\n ? currentState.isChatLoading || !currentState.isChatLoadEventReceived\n : currentState.isClassicLoading || !currentState.isClassicLoadEventReceived;\n\n if (updatedWebViewRef) {\n if (!updatedIsLoading) {\n unsubscribeWebView.unsubscribe();\n communicateWithWebView(updatedWebViewRef);\n start();\n } else {\n console.log('⏳ WebView ref available but still loading...');\n }\n }\n }\n );\n return true;\n }\n } catch (error: any) {\n throw new Error(error.message);\n }\n }\n throw new Error('Something went wrong');\n } catch (error: any) {\n throw new Error(error.message);\n }\n};\n\nexport const start = () => {\n const state = getSpotcheckStateService().getState();\n setTimeout(() => {\n getSpotcheckStateService().setState({ isVisible: true });\n }, state.afterDelay * 1000);\n};\n\nexport const closeSpotCheck = async () => {\n try {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const payload = {\n traceId: state.traceId,\n triggerToken: state.triggerToken,\n };\n\n const response = await fetch(\n `https://${state.domainName}/api/internal/spotcheck/dismiss/${state.spotcheckContactID}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n }\n );\n\n if (response.status != 200) {\n console.log(`Error: ${response.status}`);\n }\n } catch (error) {\n console.log('Error parsing JSON:', error);\n }\n};\n\nexport const handleSurveyEnd = () => {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const webViewRef =\n state.spotCheckType === 'chat'\n ? state.chatWebViewRef\n : state.classicWebViewRef;\n\n webViewRef?.current?.injectJavaScript(`\n (function() {\n window.dispatchEvent(new MessageEvent('message', {\n data: ${JSON.stringify({ type: 'UNMOUNT_APP' })}\n }));\n })();\n `);\n\n const updatedState: Partial<SpotcheckState> = {\n isVisible: false,\n isCloseButtonEnabled: false,\n isFullScreenMode: false,\n spotcheckID: 0,\n currentQuestionHeight: 0,\n closeButtonStyle: {},\n spotcheckContactID: 0,\n spotcheckURL: '',\n spotcheckPosition: 'bottom',\n isMounted: false,\n spotCheckType: '',\n screenHeight: 0,\n keyBoardHeight: 0,\n textPosition: 0,\n spotChecksMode: '',\n avatarEnabled: false,\n avatarUrl: '',\n };\n\n stateService.setState(updatedState);\n};\n\nexport const getSpotcheckComponentCssStyles = (state: SpotcheckState) => { \n let styles = {}\n let wrapperStyles = {}\n let extraPaddingForMiniCardCloseButtonIfTopPosition = 0;\n if (state.isFullScreenMode && state.isVisible) {\n wrapperStyles = {\n display: 'flex',\n height: '100%',\n };\n styles = {\n display: 'flex',\n height: '100%',\n };\n }\n\n let marginBottom = globalOS !== 'ios' ? 18 : 0;\n \n if (state.isVisible && state.isMounted) {\n\n let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));\n if(state.spotChecksMode === 'miniCard') {\n if(state.avatarEnabled) {\n height = height - 56;\n if(state.spotcheckPosition === 'bottom') {\n marginBottom += 56;\n }\n }\n if(state.isCloseButtonEnabled) {\n height = height - 40;\n }\n }\n\n switch (state.spotcheckPosition) {\n case 'bottom': \n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-end',\n };\n break;\n \n case 'top':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-start',\n };\n if(state.spotChecksMode === 'miniCard' && state.isCloseButtonEnabled) {\n extraPaddingForMiniCardCloseButtonIfTopPosition = 30;\n }\n break;\n \n case 'center':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'center',\n };\n break;\n \n default:\n break;\n }\n }\n \n return {\n wrapperStyles: {\n position: 'fixed', \n width: '100%', \n height: '100%', \n top: '0', \n left: '0', \n backgroundColor: 'rgba(0, 0, 0, 0.3)', \n zIndex: '100001',\n display: 'none',\n flexDirection: 'column',\n ...wrapperStyles\n },\n styles: {\n display: 'none',\n flexDirection: 'column',\n paddingTop: extraPaddingForMiniCardCloseButtonIfTopPosition+'px',\n marginBottom: marginBottom+'px',\n ...styles,\n }\n };\n};\n\nexport const closeSpotCheckAndHandleSurveyEnd = async () => {\n await closeSpotCheck();\n handleSurveyEnd();\n};"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../src/angular-ui/lib/spotchecks/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { Device } from '@capacitor/device';\nimport { SpotcheckState } from './types';\nimport axios from 'axios';\nimport { SpotcheckStateService } from './SpotcheckStateService';\nimport { getSpotCheckEventListener } from './SpotCheckEventListener';\n\nlet globalSpotcheckStateService: SpotcheckStateService;\n\nexport const getSpotcheckStateService = (): SpotcheckStateService => {\n if (!globalSpotcheckStateService) {\n globalSpotcheckStateService = new SpotcheckStateService();\n }\n return globalSpotcheckStateService;\n};\n\nexport function generateTraceId() {\n const uuidString = uuidv4();\n const timestamp = Date.now();\n return `${uuidString}-${timestamp}`;\n}\n\nexport const ischatSurvey = (type: String) => {\n return (\n type === 'Conversational' ||\n type === 'CESChat' ||\n type === 'NPSChat' ||\n type === 'CSATChat'\n );\n};\n\nexport const getOS = async () => {\n const info = await Device.getInfo();\n return info.operatingSystem;\n};\n\nexport const setAppearance = async (\n responseJson: any,\n screen: string,\n domainName: string,\n traceId: string,\n variables: Record<string, any>\n) => {\n try {\n const spotcheckStateService = getSpotcheckStateService();\n let state = spotcheckStateService.getState();\n\n if (responseJson) {\n const currentSpotcheck = state.filteredSpotChecks.find(\n (spotcheck) =>\n spotcheck['id'] === responseJson?.spotCheckId ||\n spotcheck['id'] === responseJson?.id\n );\n\n const appearance = responseJson?.appearance;\n let chat = false;\n\n let updatedState: Partial<SpotcheckState> = {};\n\n if (appearance) {\n const {\n position,\n closeButton,\n colors,\n cardProperties,\n mode,\n bannerImage,\n } = appearance;\n const { maxHeight } = cardProperties || {};\n\n updatedState = {\n spotcheckPosition:\n position === 'top_full' || position === 'center_top'\n ? 'top'\n : position === 'center_center'\n ? 'center'\n : 'bottom',\n isCloseButtonEnabled: closeButton ?? true,\n closeButtonStyle: colors?.overrides ?? {},\n maxHeight: maxHeight ? parseFloat(maxHeight) / 100 : 0,\n spotCheckType:\n ischatSurvey(currentSpotcheck?.['survey']?.surveyType) &&\n mode === 'fullScreen'\n ? 'chat'\n : 'classic',\n isFullScreenMode: mode === 'fullScreen',\n isBannerImageOn: bannerImage?.enabled ?? false,\n spotChecksMode: mode,\n avatarEnabled: appearance?.avatar?.enabled ?? false,\n avatarUrl: appearance?.avatar?.avatarUrl ?? '',\n };\n\n chat = updatedState.spotCheckType === 'chat';\n }\n\n const spotCheckId = responseJson?.spotCheckId ?? 0;\n const spotCheckContactId =\n responseJson?.spotCheckContactId ??\n responseJson?.spotCheckContact?.id ??\n 0;\n const triggerToken = responseJson?.triggerToken ?? '';\n\n updatedState = {\n ...updatedState,\n spotcheckID: spotCheckId,\n spotcheckContactID: spotCheckContactId,\n triggerToken,\n };\n\n const baseSpotcheckURL = `https://${domainName}/s/spotcheck/${triggerToken}/${\n chat ? 'config' : 'bootstrap'\n }?spotcheckContactId=${spotCheckContactId}&traceId=${traceId}&spotcheckUrl=${screen}`;\n\n let fullSpotcheckURL = baseSpotcheckURL;\n\n Object.entries(variables).forEach(([key, value]) => {\n fullSpotcheckURL += `&${key}=${value}`;\n });\n\n updatedState.spotcheckURL = fullSpotcheckURL;\n spotcheckStateService.setState(updatedState);\n\n try {\n const response = await axios.get<any>(fullSpotcheckURL);\n const themeInfo = response.data.config.generatedCSS;\n const theme_payload = { type: 'THEME_UPDATE_SPOTCHECK', themeInfo };\n state = spotcheckStateService.getState();\n\n let webViewRef = chat ? state.chatWebViewRef : state.classicWebViewRef;\n let isLoading = chat ? state.isChatLoading : state.isClassicLoading;\n\n const resetStateData = {\n type: 'RESET_STATE',\n state: {\n ...(response.data || {}),\n skip: true,\n spotCheckAppearance: {\n ...(appearance || {}),\n targetType: 'MOBILE',\n },\n spotcheckUrl: screen,\n traceId,\n elementBuilderParams: {\n ...(variables || {}),\n },\n },\n };\n\n const sendMessageToIframe = (iframe: HTMLIFrameElement, data: any) => {\n if (iframe && iframe.contentWindow) {\n try {\n iframe.contentWindow.postMessage(data, '*');\n } catch (error) {\n console.error('❌ Failed to send message to iframe:', error);\n }\n }\n };\n\n const communicateWithWebView = async (iframe: HTMLIFrameElement) => {\n await new Promise(resolve => setTimeout(() => {\n sendMessageToIframe(iframe, resetStateData);\n sendMessageToIframe(iframe, theme_payload);\n resolve(true);\n }, 2000));\n };\n\n if (webViewRef) {\n if (isLoading === false) {\n communicateWithWebView(webViewRef);\n start();\n return true;\n } else {\n // todo: recheck this\n const unsubscribe = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const {\n isChatLoading,\n isClassicLoading,\n chatWebViewRef,\n classicWebViewRef,\n } = currentState;\n\n if ((!isChatLoading && chat) || (!isClassicLoading && !chat)) {\n unsubscribe.unsubscribe();\n const activeWebViewRef = chat\n ? chatWebViewRef\n : classicWebViewRef;\n if (activeWebViewRef) {\n communicateWithWebView(activeWebViewRef);\n start();\n } else {\n console.warn(\n '⚠️ Active WebView ref is null after loading completed'\n );\n }\n }\n }\n );\n return true;\n }\n } else {\n const unsubscribeWebView = spotcheckStateService.state$.subscribe(\n (currentState) => {\n const updatedWebViewRef = chat\n ? currentState.chatWebViewRef\n : currentState.classicWebViewRef;\n const updatedIsLoading = chat\n ? currentState.isChatLoading\n : currentState.isClassicLoading;\n\n if (updatedWebViewRef) {\n if (!updatedIsLoading) {\n unsubscribeWebView.unsubscribe();\n communicateWithWebView(updatedWebViewRef);\n start();\n } else {\n console.log('⏳ WebView ref available but still loading...');\n }\n }\n }\n );\n return true;\n }\n } catch (error: any) {\n throw new Error(error.message);\n }\n }\n throw new Error('Something went wrong');\n } catch (error: any) {\n throw new Error(error.message);\n }\n};\n\nexport const start = () => {\n const state = getSpotcheckStateService().getState();\n setTimeout(() => {\n getSpotcheckStateService().setState({ isVisible: true });\n }, state.afterDelay * 1000);\n};\n\nexport const closeSpotCheck = async () => {\n try {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const payload = {\n traceId: state.traceId,\n triggerToken: state.triggerToken,\n };\n\n const response = await fetch(\n `https://${state.domainName}/api/internal/spotcheck/dismiss/${state.spotcheckContactID}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n }\n );\n if(response.status == 200) {\n getSpotCheckEventListener().emit('surveyDismissed');\n }\n else{\n console.log(`Error: ${response.status}`);\n }\n } catch (error) {\n console.log('Error parsing JSON:', error);\n }\n};\n\nexport const handleSurveyEnd = () => {\n const stateService = getSpotcheckStateService();\n const state = stateService.getState();\n const webViewRef =\n state.spotCheckType === 'chat'\n ? state.chatWebViewRef\n : state.classicWebViewRef;\n\n webViewRef?.current?.injectJavaScript(`\n (function() {\n window.dispatchEvent(new MessageEvent('message', {\n data: ${JSON.stringify({ type: 'UNMOUNT_APP' })}\n }));\n })();\n `);\n\n const updatedState: Partial<SpotcheckState> = {\n isVisible: false,\n isCloseButtonEnabled: false,\n isFullScreenMode: false,\n spotcheckID: 0,\n currentQuestionHeight: 0,\n closeButtonStyle: {},\n spotcheckContactID: 0,\n spotcheckURL: '',\n spotcheckPosition: 'bottom',\n isMounted: false,\n spotCheckType: '',\n screenHeight: 0,\n keyBoardHeight: 0,\n textPosition: 0,\n spotChecksMode: '',\n avatarEnabled: false,\n avatarUrl: '',\n };\n\n stateService.setState(updatedState);\n};\n\nexport const getSpotcheckComponentCssStyles = (state: SpotcheckState) => { \n let styles = {}\n let wrapperStyles = {}\n let extraPaddingForMiniCardCloseButtonIfTopPosition = 0;\n if (state.isFullScreenMode && state.isVisible) {\n wrapperStyles = {\n display: 'flex',\n height: '100%',\n };\n styles = {\n display: 'flex',\n height: '100%',\n };\n }\n \n if (state.isVisible && state.isMounted) {\n\n let height = Math.min(state.currentQuestionHeight, (state.maxHeight * window.innerHeight));\n if(state.spotChecksMode === 'miniCard') {\n if(state.avatarEnabled) {\n height = height - 56;\n }\n if(state.isCloseButtonEnabled) {\n height = height - 40;\n }\n }\n\n switch (state.spotcheckPosition) {\n case 'bottom':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-end',\n };\n break;\n \n case 'top':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'flex-start',\n };\n if(state.spotChecksMode === 'miniCard' && state.isCloseButtonEnabled) {\n extraPaddingForMiniCardCloseButtonIfTopPosition = 30;\n }\n break;\n \n case 'center':\n styles = {\n display: 'flex',\n height: height+'px',\n };\n wrapperStyles = {\n display: 'flex',\n justifyContent: 'center',\n };\n break;\n \n default:\n break;\n }\n }\n \n return {\n wrapperStyles: {\n position: 'fixed', \n width: '100%', \n height: '100%', \n top: '0', \n left: '0', \n backgroundColor: 'rgba(0, 0, 0, 0.3)', \n zIndex: '99999999',\n display: 'none',\n flexDirection: 'column',\n ...wrapperStyles\n },\n styles: {\n display: 'none',\n flexDirection: 'column',\n paddingTop: extraPaddingForMiniCardCloseButtonIfTopPosition+'px',\n ...styles,\n }\n };\n};\n\nexport const closeSpotCheckAndHandleSurveyEnd = async () => {\n handleSurveyEnd();\n};"]}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { initializeSpotChecks, trackScreen, trackEvent } from './SpotCheck';
|
|
2
|
+
export { addSpotCheckListener, } from './SpotCheckEventListener';
|
|
2
3
|
export type { UserDetails, Variables, CustomProperties, TrackScreenProps, TrackEventProps, InitializeSpotChecksProps, } from './types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/angular-ui/lib/spotchecks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export { initializeSpotChecks, trackScreen, trackEvent } from './SpotCheck';\nexport type {\n UserDetails,\n Variables,\n CustomProperties,\n TrackScreenProps,\n TrackEventProps,\n InitializeSpotChecksProps,\n} from './types';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/angular-ui/lib/spotchecks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,oBAAoB,GACrB,MAAM,0BAA0B,CAAC","sourcesContent":["export { initializeSpotChecks, trackScreen, trackEvent } from './SpotCheck';\nexport {\n addSpotCheckListener,\n} from './SpotCheckEventListener';\nexport type {\n UserDetails,\n Variables,\n CustomProperties,\n TrackScreenProps,\n TrackEventProps,\n InitializeSpotChecksProps,\n} from './types';\n"]}
|
|
@@ -23,8 +23,6 @@ export interface SpotcheckState {
|
|
|
23
23
|
traceId: string;
|
|
24
24
|
isClassicLoading: boolean;
|
|
25
25
|
isChatLoading: boolean;
|
|
26
|
-
isClassicLoadEventReceived: boolean;
|
|
27
|
-
isChatLoadEventReceived: boolean;
|
|
28
26
|
classicUrl: string;
|
|
29
27
|
chatUrl: string;
|
|
30
28
|
classicWebViewRef: any | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/angular-ui/lib/spotchecks/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface SpotcheckState {\n isVisible: boolean;\n spotcheckPosition: string;\n spotcheckURL: string;\n spotcheckID: number;\n spotcheckContactID: number;\n afterDelay: number;\n maxHeight: number;\n currentQuestionHeight: number;\n isFullScreenMode: boolean;\n isBannerImageOn: boolean;\n triggerToken: string;\n closeButtonStyle: Record<string, string>;\n isCloseButtonEnabled: boolean;\n isSpotPassed: boolean;\n isChecksPassed: boolean;\n customEventsSpotChecks: Record<string, any>[];\n targetToken: string;\n domainName: string;\n userDetails: UserDetails;\n variables: Variables;\n customProperties: CustomProperties;\n traceId: string;\n isClassicLoading: boolean;\n isChatLoading: boolean;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/angular-ui/lib/spotchecks/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface SpotcheckState {\n isVisible: boolean;\n spotcheckPosition: string;\n spotcheckURL: string;\n spotcheckID: number;\n spotcheckContactID: number;\n afterDelay: number;\n maxHeight: number;\n currentQuestionHeight: number;\n isFullScreenMode: boolean;\n isBannerImageOn: boolean;\n triggerToken: string;\n closeButtonStyle: Record<string, string>;\n isCloseButtonEnabled: boolean;\n isSpotPassed: boolean;\n isChecksPassed: boolean;\n customEventsSpotChecks: Record<string, any>[];\n targetToken: string;\n domainName: string;\n userDetails: UserDetails;\n variables: Variables;\n customProperties: CustomProperties;\n traceId: string;\n isClassicLoading: boolean;\n isChatLoading: boolean;\n classicUrl: string;\n chatUrl: string;\n classicWebViewRef: any | null;\n chatWebViewRef: any | null;\n filteredSpotChecks: Record<string, any>[];\n spotCheckType: String;\n isMounted: boolean;\n textPosition: number;\n screenHeight: number;\n keyBoardHeight: number;\n spotChecksMode: string;\n avatarEnabled: boolean;\n avatarUrl: string;\n screenwiseUserDetails: Record<string, UserDetails | undefined>;\n}\n\nexport interface UserDetails {\n uuid?: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n mobile?: number;\n [key: string]: any;\n}\n\nexport interface Variables {\n sparrowLang?: string;\n [key: string]: any;\n}\n\nexport interface CustomProperties {\n [key: string]: any;\n}\n\nexport interface TrackScreenProps {\n screen: string;\n options?: {\n variables?: Variables;\n customProperties?: CustomProperties;\n userDetails?: UserDetails;\n };\n}\n\nexport interface TrackEventProps {\n screen: string;\n event: {\n [key: string]: {\n [key: string]: string;\n };\n };\n}\n\nexport interface InitializeSpotChecksProps {\n domainName: string;\n targetToken: string;\n userDetails?: UserDetails;\n variables?: Variables;\n customProperties?: CustomProperties;\n}\n"]}
|