analytica-frontend-lib 1.1.31 → 1.1.32

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.
@@ -945,10 +945,12 @@ import {
945
945
  // src/components/Quiz/useQuizStore.ts
946
946
  import { create as create2 } from "zustand";
947
947
  import { devtools } from "zustand/middleware";
948
+ var MINUTE_INTERVAL_MS = 6e4;
948
949
  var useQuizStore = create2()(
949
950
  devtools(
950
951
  (set, get) => {
951
952
  let timerInterval = null;
953
+ let minuteCallbackInterval = null;
952
954
  const startTimer = () => {
953
955
  if (get().isFinished) {
954
956
  return;
@@ -967,6 +969,35 @@ var useQuizStore = create2()(
967
969
  timerInterval = null;
968
970
  }
969
971
  };
972
+ const setMinuteCallback = (callback) => {
973
+ set({ minuteCallback: callback });
974
+ };
975
+ const startMinuteCallback = () => {
976
+ const { minuteCallback, isFinished } = get();
977
+ if (isFinished || !minuteCallback) {
978
+ return;
979
+ }
980
+ if (minuteCallbackInterval) {
981
+ clearInterval(minuteCallbackInterval);
982
+ }
983
+ minuteCallbackInterval = setInterval(() => {
984
+ const {
985
+ minuteCallback: currentCallback,
986
+ isFinished: currentIsFinished
987
+ } = get();
988
+ if (currentIsFinished || !currentCallback) {
989
+ stopMinuteCallback();
990
+ return;
991
+ }
992
+ currentCallback();
993
+ }, MINUTE_INTERVAL_MS);
994
+ };
995
+ const stopMinuteCallback = () => {
996
+ if (minuteCallbackInterval) {
997
+ clearInterval(minuteCallbackInterval);
998
+ minuteCallbackInterval = null;
999
+ }
1000
+ };
970
1001
  return {
971
1002
  // Initial State
972
1003
  currentQuestionIndex: 0,
@@ -977,6 +1008,7 @@ var useQuizStore = create2()(
977
1008
  isFinished: false,
978
1009
  userId: "",
979
1010
  variant: "default",
1011
+ minuteCallback: null,
980
1012
  questionsResult: null,
981
1013
  currentQuestionResult: null,
982
1014
  // Setters
@@ -1211,13 +1243,16 @@ var useQuizStore = create2()(
1211
1243
  startQuiz: () => {
1212
1244
  set({ isStarted: true, timeElapsed: 0 });
1213
1245
  startTimer();
1246
+ startMinuteCallback();
1214
1247
  },
1215
1248
  finishQuiz: () => {
1216
1249
  set({ isFinished: true });
1217
1250
  stopTimer();
1251
+ stopMinuteCallback();
1218
1252
  },
1219
1253
  resetQuiz: () => {
1220
1254
  stopTimer();
1255
+ stopMinuteCallback();
1221
1256
  set({
1222
1257
  currentQuestionIndex: 0,
1223
1258
  selectedAnswers: {},
@@ -1227,6 +1262,7 @@ var useQuizStore = create2()(
1227
1262
  isFinished: false,
1228
1263
  userId: "",
1229
1264
  variant: "default",
1265
+ minuteCallback: null,
1230
1266
  questionsResult: null,
1231
1267
  currentQuestionResult: null
1232
1268
  });
@@ -1235,6 +1271,10 @@ var useQuizStore = create2()(
1235
1271
  updateTime: (time) => set({ timeElapsed: time }),
1236
1272
  startTimer,
1237
1273
  stopTimer,
1274
+ // Minute Callback
1275
+ setMinuteCallback,
1276
+ startMinuteCallback,
1277
+ stopMinuteCallback,
1238
1278
  // Getters
1239
1279
  getCurrentQuestion: () => {
1240
1280
  const { currentQuestionIndex, getActiveQuiz } = get();