@myinterview/widget-react 1.1.23-development-b67ffe6 → 1.1.23-development-3a50d6c

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.
@@ -78,6 +78,7 @@ export interface InitialState {
78
78
  failedRecordingMessage: IVideoCorruptedMessagesKey;
79
79
  isResumed: boolean;
80
80
  videoDimensions: IVideoDimensions;
81
+ confirmUploadedFalseCount: number;
81
82
  }
82
83
  export interface IWidgetMachineProps {
83
84
  widgetMachine: State<InitialState, DoneInvokeEvent<any>, any, {
@@ -122,6 +123,7 @@ export declare const enum STATES {
122
123
  RE_INIT_RECORDER__NEXT_QUESTION = "reInitRecorderNextQuestion",
123
124
  UPLOADING = "uploading",
124
125
  CONFIRM = "confirm",
126
+ CONFIRM_WATING = "confirmWaiting",
125
127
  FINISHED = "finished",
126
128
  ERROR = "error"
127
129
  }
@@ -173,7 +175,8 @@ export declare const enum ACTIONS {
173
175
  INCREASE_FAILED_RECORDING_ATTEMPTS = "increaseFailedRecordingAttempts",
174
176
  RESET_FAILED_RECORDING_ATTEMPTS = "resetFailedRecordingAttempts",
175
177
  CLEAR_VIDEO_ERROR = "clearVideoError",
176
- UPDATE_VIDEO_DIMENSIONS = "updateVideoDimensions"
178
+ UPDATE_VIDEO_DIMENSIONS = "updateVideoDimensions",
179
+ UPDATE_UPLOADED_FALSE_COUNT = "updateUploadedFalseCount"
177
180
  }
178
181
  export declare const enum EVENTS {
179
182
  SPAWN_UPLOADER = "SPAWN_UPLOADER",
@@ -225,7 +228,8 @@ export declare const enum GUARDS {
225
228
  THERE_ARE_NO_VIDEO_QUESTIONS_TYPE = "thereAreNoVideoQuestionType",
226
229
  IS_RECORDER_READY = "isRecorderReady",
227
230
  IS_ASSESSMENT_QUESTION = "isAssessmentQuestion",
228
- IS_TIMES_UP = "isTimesUp"
231
+ IS_TIMES_UP = "isTimesUp",
232
+ SHOULD_TRY_TO_CONFIRM = "shouldTryToConfirm"
229
233
  }
230
234
  export declare const enum TAGS {
231
235
  SETUP = "setup",
@@ -234,6 +238,7 @@ export declare const enum TAGS {
234
238
  DISPLAY_OUTER_VIEW = "displayOuterView",
235
239
  DISPLAY_QUESTION = "displayQuestion",
236
240
  DISPLAY_QUESTIONS_LIST = "displayQuestionsList",
241
+ DISPLAY_UPLOAD = "displayUpload",
237
242
  LOADING = "loading"
238
243
  }
239
244
  export {};
@@ -43,7 +43,12 @@ export declare const enum EVENT_TYPES {
43
43
  MICROPHONE_CHANGED = "microphoneChanged",
44
44
  SOUND_RESTORED = "soundRestored",
45
45
  TIMES_UP = "timesUp",
46
- COMPLETED_INTERVIEW = "completedInterview"
46
+ COMPLETED_INTERVIEW = "completedInterview",
47
+ RECONNECTED = "reconnected",
48
+ CONFIRM_UPLOADED_FAILED = "confirmUploadedFailed",
49
+ FINISHED = "finished",
50
+ ON_FINISH_SUCCEED = "onFinishSucceed",
51
+ ON_FINISH_FAILED = "onFinishFailed"
47
52
  }
48
53
  export type IEventType = `${EVENT_TYPES}`;
49
54
  export interface ITrackEvent {
@@ -17,6 +17,7 @@ export declare const DEFAULT_VIDEO_DIMENSIONS: {
17
17
  width: number;
18
18
  height: number;
19
19
  };
20
+ export declare const MAX_CONFIRM_ATTEMPTS = 5;
20
21
  export declare const FONT_URL = "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap";
21
22
  export declare enum RETAKE_SPEED {
22
23
  FAST = 300,
package/dist/esm/index.js CHANGED
@@ -2,6 +2,31 @@ import * as React from 'react';
2
2
  import React__default, { createContext, forwardRef, useRef, useEffect, useState, useLayoutEffect, useImperativeHandle, useDebugValue, useContext, createElement, useCallback, useMemo } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
4
 
5
+ /*! *****************************************************************************
6
+ Copyright (c) Microsoft Corporation.
7
+
8
+ Permission to use, copy, modify, and/or distribute this software for any
9
+ purpose with or without fee is hereby granted.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ ***************************************************************************** */
19
+
20
+ function __awaiter(thisArg, _arguments, P, generator) {
21
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
22
+ return new (P || (P = Promise))(function (resolve, reject) {
23
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
24
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
25
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
26
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
27
+ });
28
+ }
29
+
5
30
  // eslint-disable-next-line @typescript-eslint/unbound-method
6
31
  const objectToString = Object.prototype.toString;
7
32
 
@@ -6027,9 +6052,9 @@ function _getEventFilterUrl(event) {
6027
6052
  }
6028
6053
 
6029
6054
  var Integrations = /*#__PURE__*/Object.freeze({
6030
- __proto__: null,
6031
- FunctionToString: FunctionToString,
6032
- InboundFilters: InboundFilters
6055
+ __proto__: null,
6056
+ FunctionToString: FunctionToString,
6057
+ InboundFilters: InboundFilters
6033
6058
  });
6034
6059
 
6035
6060
  const WINDOW$1 = GLOBAL_OBJ ;
@@ -8253,13 +8278,13 @@ function startSessionTracking() {
8253
8278
  }
8254
8279
 
8255
8280
  var index$1 = /*#__PURE__*/Object.freeze({
8256
- __proto__: null,
8257
- GlobalHandlers: GlobalHandlers,
8258
- TryCatch: TryCatch,
8259
- Breadcrumbs: Breadcrumbs,
8260
- LinkedErrors: LinkedErrors,
8261
- HttpContext: HttpContext,
8262
- Dedupe: Dedupe
8281
+ __proto__: null,
8282
+ GlobalHandlers: GlobalHandlers,
8283
+ TryCatch: TryCatch,
8284
+ Breadcrumbs: Breadcrumbs,
8285
+ LinkedErrors: LinkedErrors,
8286
+ HttpContext: HttpContext,
8287
+ Dedupe: Dedupe
8263
8288
  });
8264
8289
 
8265
8290
  // exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`
@@ -25560,6 +25585,7 @@ var STATES$5;
25560
25585
  STATES["RE_INIT_RECORDER__NEXT_QUESTION"] = "reInitRecorderNextQuestion";
25561
25586
  STATES["UPLOADING"] = "uploading";
25562
25587
  STATES["CONFIRM"] = "confirm";
25588
+ STATES["CONFIRM_WATING"] = "confirmWaiting";
25563
25589
  STATES["FINISHED"] = "finished";
25564
25590
  STATES["ERROR"] = "error";
25565
25591
  })(STATES$5 || (STATES$5 = {}));
@@ -25613,6 +25639,7 @@ var ACTIONS$6;
25613
25639
  ACTIONS["RESET_FAILED_RECORDING_ATTEMPTS"] = "resetFailedRecordingAttempts";
25614
25640
  ACTIONS["CLEAR_VIDEO_ERROR"] = "clearVideoError";
25615
25641
  ACTIONS["UPDATE_VIDEO_DIMENSIONS"] = "updateVideoDimensions";
25642
+ ACTIONS["UPDATE_UPLOADED_FALSE_COUNT"] = "updateUploadedFalseCount";
25616
25643
  })(ACTIONS$6 || (ACTIONS$6 = {}));
25617
25644
  var EVENTS$5;
25618
25645
  (function (EVENTS) {
@@ -25668,6 +25695,7 @@ var GUARDS$3;
25668
25695
  GUARDS["IS_RECORDER_READY"] = "isRecorderReady";
25669
25696
  GUARDS["IS_ASSESSMENT_QUESTION"] = "isAssessmentQuestion";
25670
25697
  GUARDS["IS_TIMES_UP"] = "isTimesUp";
25698
+ GUARDS["SHOULD_TRY_TO_CONFIRM"] = "shouldTryToConfirm";
25671
25699
  })(GUARDS$3 || (GUARDS$3 = {}));
25672
25700
  var TAGS;
25673
25701
  (function (TAGS) {
@@ -25677,6 +25705,7 @@ var TAGS;
25677
25705
  TAGS["DISPLAY_OUTER_VIEW"] = "displayOuterView";
25678
25706
  TAGS["DISPLAY_QUESTION"] = "displayQuestion";
25679
25707
  TAGS["DISPLAY_QUESTIONS_LIST"] = "displayQuestionsList";
25708
+ TAGS["DISPLAY_UPLOAD"] = "displayUpload";
25680
25709
  TAGS["LOADING"] = "loading";
25681
25710
  })(TAGS || (TAGS = {}));
25682
25711
 
@@ -30871,6 +30900,7 @@ const SECONDS_LEFT_HIGHLIGHT = 10;
30871
30900
  const DEFAULT_ASSESSMENT_MAX_CHARS = 300;
30872
30901
  const DEFAULT_ASSESSMENT_DURATION = 0;
30873
30902
  const DEFAULT_VIDEO_DIMENSIONS = { width: 1280, height: 720 }; // Transcoder default dimensions (720p)
30903
+ const MAX_CONFIRM_ATTEMPTS = 5;
30874
30904
  // Font
30875
30905
  const FONT_URL = 'https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap';
30876
30906
  var RETAKE_SPEED;
@@ -35031,8 +35061,8 @@ function memoizeOne(resultFn, isEqual) {
35031
35061
  }
35032
35062
 
35033
35063
  var memoizeOne_esm = /*#__PURE__*/Object.freeze({
35034
- __proto__: null,
35035
- 'default': memoizeOne
35064
+ __proto__: null,
35065
+ 'default': memoizeOne
35036
35066
  });
35037
35067
 
35038
35068
  var require$$2 = /*@__PURE__*/getAugmentedNamespace(memoizeOne_esm);
@@ -38992,6 +39022,11 @@ var EVENT_TYPES;
38992
39022
  EVENT_TYPES["SOUND_RESTORED"] = "soundRestored";
38993
39023
  EVENT_TYPES["TIMES_UP"] = "timesUp";
38994
39024
  EVENT_TYPES["COMPLETED_INTERVIEW"] = "completedInterview";
39025
+ EVENT_TYPES["RECONNECTED"] = "reconnected";
39026
+ EVENT_TYPES["CONFIRM_UPLOADED_FAILED"] = "confirmUploadedFailed";
39027
+ EVENT_TYPES["FINISHED"] = "finished";
39028
+ EVENT_TYPES["ON_FINISH_SUCCEED"] = "onFinishSucceed";
39029
+ EVENT_TYPES["ON_FINISH_FAILED"] = "onFinishFailed";
38995
39030
  })(EVENT_TYPES || (EVENT_TYPES = {}));
38996
39031
  let event_id;
38997
39032
  const updateEventId = (eventId) => { event_id = eventId; };
@@ -39541,31 +39576,6 @@ const Setup = ({ widgetMachine, sendToWidget, isPracticeDisabled, recordWithoutV
39541
39576
  React__default.createElement(C, { className: startButtonClassNames, color: "special", backgroundColor: "white", onClick: () => sendToWidget(EVENTS$5.QUESTION_MODE), disabled: !canStartInterview }, t(isResumed ? 'welcome.resumeInterview' : 'buttons.btn_start').toUpperCase()))));
39542
39577
  };
39543
39578
 
39544
- /*! *****************************************************************************
39545
- Copyright (c) Microsoft Corporation.
39546
-
39547
- Permission to use, copy, modify, and/or distribute this software for any
39548
- purpose with or without fee is hereby granted.
39549
-
39550
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
39551
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
39552
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
39553
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
39554
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
39555
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39556
- PERFORMANCE OF THIS SOFTWARE.
39557
- ***************************************************************************** */
39558
-
39559
- function __awaiter(thisArg, _arguments, P, generator) {
39560
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
39561
- return new (P || (P = Promise))(function (resolve, reject) {
39562
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39563
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
39564
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
39565
- step((generator = generator.apply(thisArg, _arguments || [])).next());
39566
- });
39567
- }
39568
-
39569
39579
  const uploadToS3 = (url, data, onProgress, timeout = 0) => s3AxiosInstance.put(url, data, {
39570
39580
  headers: { 'Content-Type': 'video/webm' }, onUploadProgress: onProgress, timeout,
39571
39581
  });
@@ -39636,8 +39646,8 @@ const OuterView = ({ widgetMachine, sendToWidget, recorderRef }) => {
39636
39646
  const isQuestionDisplayed = widgetMachine.hasTag(TAGS.DISPLAY_QUESTION) || (isVideoQuestionState && !currentQuestionObj.thinkingTime);
39637
39647
  const isPreviewState = widgetMachine.matches(STATES$5.PREVIEW);
39638
39648
  const isUploadingState = widgetMachine.matches(STATES$5.UPLOADING);
39639
- const isConfirmState = widgetMachine.matches(STATES$5.CONFIRM);
39640
39649
  const isQuestionsListDisplayed = widgetMachine.hasTag(TAGS.DISPLAY_QUESTIONS_LIST);
39650
+ const isUploadDisplayed = widgetMachine.hasTag(TAGS.DISPLAY_UPLOAD);
39641
39651
  const isRecording = recorderMachine.matches({ [STATES$6.RECORDING]: STATES$6.COLLECTING_BLOBS });
39642
39652
  const isCountDown = recorderMachine.matches({ [STATES$6.RECORDING]: STATES$6.COUNT_DOWN });
39643
39653
  const isPracticeMode = recordingType === TAKE_TYPES.PRACTICE;
@@ -39655,7 +39665,7 @@ const OuterView = ({ widgetMachine, sendToWidget, recorderRef }) => {
39655
39665
  isSetupState && React__default.createElement(Setup, { recordWithoutVideo: recordWithoutVideo, widgetMachine: widgetMachine, sendToWidget: sendToWidget, isPracticeDisabled: !!config.disablePractice }),
39656
39666
  isQuestionsListDisplayed && React__default.createElement(QuestionsList, { questions: questions, currentQuestion: currentQuestion, isPracticeMode: isPracticeMode, questionsStatus: questionsStatus }),
39657
39667
  isQuestionDisplayed && React__default.createElement(Question, { questionObj: currentQuestionObj }),
39658
- (isUploadingState || isConfirmState) && (React__default.createElement(Upload, { isConnected: isConnected, totalFileSize: totalFileSize, totalUploadedFilesSize: totalUploadedFilesSize, totalUploadSpeed: totalUploadSpeed }))));
39668
+ isUploadDisplayed && (React__default.createElement(Upload, { isConnected: isConnected, totalFileSize: totalFileSize, totalUploadedFilesSize: totalUploadedFilesSize, totalUploadSpeed: totalUploadSpeed }))));
39659
39669
  };
39660
39670
 
39661
39671
  var actions = {};
@@ -44752,7 +44762,7 @@ const accUploaderMachine = createMachine({
44752
44762
  actions: [ACTIONS$2.SENTRY],
44753
44763
  },
44754
44764
  {
44755
- actions: [ACTIONS$2.SET_UPLOADED, ACTIONS$2.SENTRY],
44765
+ actions: [ACTIONS$2.SENTRY],
44756
44766
  target: `#uploader.${STATES$2.UPLOADED}`, // In case the video already uploaded
44757
44767
  },
44758
44768
  ],
@@ -44769,7 +44779,6 @@ const accUploaderMachine = createMachine({
44769
44779
  id: 'uploadToS3',
44770
44780
  src: ({ signedUrl, file }) => (callback) => uploadToS3(signedUrl, file, callback),
44771
44781
  onDone: {
44772
- // actions: [ACTIONS.SET_UPLOADED],
44773
44782
  target: `#uploader.${STATES$2.UPLOADED}`,
44774
44783
  },
44775
44784
  onError: {
@@ -45125,10 +45134,14 @@ const accWidgetMachine = createMachine({
45125
45134
  failedRecordingMessage: VIDEO_CORRUPTED_STATES.NO_ERROR,
45126
45135
  isResumed: false,
45127
45136
  videoDimensions: DEFAULT_VIDEO_DIMENSIONS,
45137
+ confirmUploadedFalseCount: 0,
45128
45138
  },
45129
45139
  on: {
45130
45140
  [EVENTS$1.CONNECTION_CHANGED]: {
45131
- actions: [ACTIONS$6.SET_CONNECTION],
45141
+ actions: [
45142
+ ACTIONS$6.SET_CONNECTION,
45143
+ { type: ACTIONS$6.EMIT_TRACKING_EVENT, data: { eventType: EVENT_TYPES.RECONNECTED } },
45144
+ ],
45132
45145
  },
45133
45146
  [EVENTS$5.UPLOADER_PROGRESS]: {
45134
45147
  actions: [ACTIONS$6.UPDATE_TOTAL_UPLOADED_FILES_SIZE],
@@ -45655,7 +45668,7 @@ const accWidgetMachine = createMachine({
45655
45668
  },
45656
45669
  },
45657
45670
  [STATES$5.UPLOADING]: {
45658
- tags: [TAGS.DISPLAY_OUTER_VIEW],
45671
+ tags: [TAGS.DISPLAY_OUTER_VIEW, TAGS.DISPLAY_UPLOAD],
45659
45672
  entry: [
45660
45673
  { type: ACTIONS$6.SESSION_EVENT, data: { event: 'widget_completed', type: 'date' } },
45661
45674
  { type: ACTIONS$6.CONSOLE_DEBUG, data: { message: DEBUG.UPLOADING_STATE } },
@@ -45669,30 +45682,57 @@ const accWidgetMachine = createMachine({
45669
45682
  },
45670
45683
  },
45671
45684
  },
45685
+ [STATES$5.CONFIRM_WATING]: {
45686
+ tags: [TAGS.DISPLAY_OUTER_VIEW, TAGS.DISPLAY_UPLOAD],
45687
+ always: {
45688
+ target: STATES$5.CONFIRM,
45689
+ cond: GUARDS$3.IS_CONNECTED,
45690
+ },
45691
+ },
45672
45692
  [STATES$5.CONFIRM]: {
45673
- tags: [TAGS.DISPLAY_OUTER_VIEW],
45693
+ tags: [TAGS.DISPLAY_OUTER_VIEW, TAGS.DISPLAY_UPLOAD],
45674
45694
  invoke: {
45675
45695
  id: 'getVideo',
45676
45696
  src: (context) => { var _a; return getVideo(((_a = context.widgetConfig.video) === null || _a === void 0 ? void 0 : _a.video_id) || ''); },
45677
- onDone: {
45678
- target: STATES$5.FINISHED,
45679
- cond: (_, event) => !!event.data.data.data.video.uploaded,
45680
- },
45697
+ onDone: [
45698
+ {
45699
+ target: STATES$5.FINISHED,
45700
+ cond: (_, event) => !!event.data.data.data.video.uploaded,
45701
+ },
45702
+ {
45703
+ actions: [
45704
+ ACTIONS$6.UPDATE_UPLOADED_FALSE_COUNT,
45705
+ { type: ACTIONS$6.SENTRY, data: { eventName: 'CONFIRM::UPLOADED_FALSE' } },
45706
+ ],
45707
+ target: STATES$5.CONFIRM_WATING,
45708
+ cond: GUARDS$3.SHOULD_TRY_TO_CONFIRM,
45709
+ },
45710
+ {
45711
+ actions: [
45712
+ { type: ACTIONS$6.SET_VIDEO_ERROR, data: { errorMessage: 'Error, Please contact support' } },
45713
+ { type: ACTIONS$6.EMIT_TRACKING_EVENT, data: { eventType: EVENT_TYPES.CONFIRM_UPLOADED_FAILED } },
45714
+ ],
45715
+ target: STATES$5.ERROR,
45716
+ },
45717
+ ],
45681
45718
  onError: [
45682
45719
  {
45683
- actions: [() => console.error('UPDATE_VIDEO_UPLADED_ERROR:'), console.error, ACTIONS$6.SENTRY],
45720
+ actions: [() => console.error('UPDATE_VIDEO_UPLADED_ERROR:'), console.error, { type: ACTIONS$6.SENTRY, data: { eventName: 'CONFIRM::ERROR__NOT_FOUND' } }],
45684
45721
  target: STATES$5.FINISHED,
45685
45722
  cond: (_, event) => event.data.response.status === STATUS_CODES.NOT_FOUND,
45686
45723
  },
45687
45724
  {
45688
- actions: [ACTIONS$6.SENTRY],
45689
- target: STATES$5.CONFIRM,
45725
+ actions: [() => console.error('UPDATE_VIDEO_UPLADED_ERROR:'), console.error, { type: ACTIONS$6.SENTRY, data: { eventName: 'CONFIRM::ERROR' } }],
45726
+ target: STATES$5.CONFIRM_WATING,
45690
45727
  },
45691
45728
  ],
45692
45729
  },
45693
45730
  },
45694
45731
  [STATES$5.FINISHED]: {
45695
- entry: [{ type: ACTIONS$6.CONSOLE_DEBUG, data: { message: DEBUG.INTERVIEW_SUBMITTED } }],
45732
+ entry: [
45733
+ { type: ACTIONS$6.CONSOLE_DEBUG, data: { message: DEBUG.INTERVIEW_SUBMITTED } },
45734
+ { type: ACTIONS$6.EMIT_TRACKING_EVENT, data: { eventType: EVENT_TYPES.FINISHED } },
45735
+ ],
45696
45736
  type: 'final',
45697
45737
  },
45698
45738
  [STATES$5.ERROR]: {
@@ -45888,9 +45928,12 @@ const accWidgetMachine = createMachine({
45888
45928
  widgetConfig: Object.assign(Object.assign({}, widgetConfig), { video: Object.assign(Object.assign({}, widgetConfig.video), { videos: (_b = (_a = widgetConfig.video) === null || _a === void 0 ? void 0 : _a.videos) === null || _b === void 0 ? void 0 : _b.map((video, idx) => ((idx !== questionNumber - 1) ? video : videoFile)) }) }),
45889
45929
  });
45890
45930
  }),
45891
- [ACTIONS$6.SET_VIDEO_ERROR]: assign$2((_, event) => ({
45892
- error: event.data.response.data || { errorMessage: event.data.message },
45893
- })),
45931
+ [ACTIONS$6.SET_VIDEO_ERROR]: assign$2((_, event, meta) => {
45932
+ var _a, _b, _c, _d;
45933
+ return ({
45934
+ error: ((_b = (_a = event.data) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.data) || { errorMessage: ((_c = event.data) === null || _c === void 0 ? void 0 : _c.message) || ((_d = meta.action.data) === null || _d === void 0 ? void 0 : _d.errorMessage) },
45935
+ });
45936
+ }),
45894
45937
  [ACTIONS$6.REVOKE_MEMORY]: send$2((_, event) => ({ type: EVENTS$4.REMOVE_TAKES, data: { questionToRemove: event.data.questionNumber } }), { to: ({ storageRef }) => storageRef }),
45895
45938
  [ACTIONS$6.UPDATE_VIDEO_OBJECT]: assign$2(({ widgetConfig, recordingType }) => {
45896
45939
  var _a, _b;
@@ -45924,6 +45967,9 @@ const accWidgetMachine = createMachine({
45924
45967
  height: event.data.height,
45925
45968
  },
45926
45969
  })),
45970
+ [ACTIONS$6.UPDATE_UPLOADED_FALSE_COUNT]: assign$2(({ confirmUploadedFalseCount }) => ({
45971
+ confirmUploadedFalseCount: confirmUploadedFalseCount + 1,
45972
+ })),
45927
45973
  },
45928
45974
  services: {
45929
45975
  [SERVICES$1.UPDATE_VIDEO_OBJECT_CALL]: ({ widgetConfig: { video }, recordingType, speedTestResult }, event, meta) => (callback, onReceive) => {
@@ -45967,6 +46013,7 @@ const accWidgetMachine = createMachine({
45967
46013
  [GUARDS$3.IS_RECORDER_READY]: ({ recorderRef }) => (recorderRef === null || recorderRef === void 0 ? void 0 : recorderRef.getSnapshot().value) === STATES$6.IDLE,
45968
46014
  [GUARDS$3.IS_ASSESSMENT_QUESTION]: ({ questions, currentQuestion }) => !!questions[currentQuestion - 1].answerType && questions[currentQuestion - 1].answerType !== ANSWER_TYPES.VIDEO,
45969
46015
  [GUARDS$3.IS_TIMES_UP]: (_, event) => !!event.data.isTimesUp,
46016
+ [GUARDS$3.SHOULD_TRY_TO_CONFIRM]: ({ confirmUploadedFalseCount }) => confirmUploadedFalseCount <= MAX_CONFIRM_ATTEMPTS,
45970
46017
  },
45971
46018
  });
45972
46019
 
@@ -48489,10 +48536,25 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
48489
48536
  useEffect(() => {
48490
48537
  setShouldShowWaterMark(!!(company === null || company === void 0 ? void 0 : company.shouldShowWaterMark));
48491
48538
  }, [company === null || company === void 0 ? void 0 : company.shouldShowWaterMark]);
48539
+ const _onFinish = () => __awaiter(void 0, void 0, void 0, function* () { var _a, _b; return (_b = (_a = widgetConfig.config).onFinish) === null || _b === void 0 ? void 0 : _b.call(_a, { redirectUrl: candidate.redirectUrl, video_id: (video === null || video === void 0 ? void 0 : video.video_id) || '' }); });
48492
48540
  useEffect(() => {
48493
- var _a, _b;
48494
48541
  if (machine.done) {
48495
- (_b = (_a = widgetConfig.config).onFinish) === null || _b === void 0 ? void 0 : _b.call(_a, { redirectUrl: candidate.redirectUrl, video_id: (video === null || video === void 0 ? void 0 : video.video_id) || '' });
48542
+ if (widgetConfig.config.onFinish) {
48543
+ _onFinish().then(() => {
48544
+ emitTrackEvent({ eventType: EVENT_TYPES.ON_FINISH_SUCCEED });
48545
+ }).catch((err) => {
48546
+ var _a;
48547
+ let errorMessage = '';
48548
+ try {
48549
+ errorMessage = (err === null || err === void 0 ? void 0 : err.message) || (err === null || err === void 0 ? void 0 : err.msg) || ((_a = err === null || err === void 0 ? void 0 : err.data) === null || _a === void 0 ? void 0 : _a.message);
48550
+ }
48551
+ catch (_b) {
48552
+ //
48553
+ }
48554
+ emitTrackEvent({ eventType: EVENT_TYPES.ON_FINISH_FAILED, extraData: { errorMessage } });
48555
+ throw err;
48556
+ });
48557
+ }
48496
48558
  }
48497
48559
  }, [machine.done]);
48498
48560
  useEffect(() => {
@@ -48508,11 +48570,16 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
48508
48570
  });
48509
48571
  }
48510
48572
  }, [candidate, job === null || job === void 0 ? void 0 : job.language]);
48573
+ const setBackgroundOpacity = () => {
48574
+ var _a;
48575
+ (_a = myinterviewRef === null || myinterviewRef === void 0 ? void 0 : myinterviewRef.current) === null || _a === void 0 ? void 0 : _a.style.setProperty('--myinterview-background-opacity', isLoading || isErrorState ? '0' : '1');
48576
+ };
48511
48577
  useEffect(() => {
48512
48578
  var _a, _b;
48513
48579
  if (isErrorState && (error === null || error === void 0 ? void 0 : error.statusCode) === 400) {
48514
48580
  (_b = (_a = widgetConfig.config).onError) === null || _b === void 0 ? void 0 : _b.call(_a, { messageType: 'applied' });
48515
48581
  }
48582
+ setBackgroundOpacity();
48516
48583
  }, [isErrorState]);
48517
48584
  const isResumed = useMemo(() => { var _a, _b; return !!((_b = (_a = widgetConfig.video) === null || _a === void 0 ? void 0 : _a.videos) === null || _b === void 0 ? void 0 : _b.some((v) => v.uploaded)); }, [widgetConfig.video]);
48518
48585
  const handleScroll = (e) => {
@@ -48522,8 +48589,7 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
48522
48589
  (_b = viewsRef === null || viewsRef === void 0 ? void 0 : viewsRef.current) === null || _b === void 0 ? void 0 : _b.style.setProperty('--myinterview-widget-practice-opacity', scrollTop > 10 ? '0' : '1');
48523
48590
  };
48524
48591
  useEffect(() => {
48525
- var _a;
48526
- (_a = myinterviewRef === null || myinterviewRef === void 0 ? void 0 : myinterviewRef.current) === null || _a === void 0 ? void 0 : _a.style.setProperty('--myinterview-background-opacity', isLoading || isErrorState ? '0' : '1');
48592
+ setBackgroundOpacity();
48527
48593
  }, [isLoading]);
48528
48594
  const onRetry = () => {
48529
48595
  send(EVENTS$5.RETRY);
@@ -48721,15 +48787,15 @@ const Widget = ({ candidate, job, video, config, disabled = false, buttonText =
48721
48787
  revertBodyStyling();
48722
48788
  setIsWidgetOpen(false);
48723
48789
  };
48724
- const onInterviewCompleted = (data) => {
48790
+ const onInterviewCompleted = (data) => __awaiter(void 0, void 0, void 0, function* () {
48725
48791
  var _a;
48726
- (_a = config.onFinish) === null || _a === void 0 ? void 0 : _a.call(config, data);
48727
48792
  onCloseWidget();
48728
- };
48793
+ yield ((_a = config.onFinish) === null || _a === void 0 ? void 0 : _a.call(config, data));
48794
+ });
48729
48795
  const onError = (data) => {
48730
48796
  var _a;
48731
- (_a = config.onError) === null || _a === void 0 ? void 0 : _a.call(config, data);
48732
48797
  onCloseWidget();
48798
+ (_a = config.onError) === null || _a === void 0 ? void 0 : _a.call(config, data);
48733
48799
  };
48734
48800
  const openWidget = () => {
48735
48801
  var _a;