@kiosinc/commons-rn 0.7.0 → 0.8.0

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.
@@ -31,35 +31,44 @@ const getTodayStatus = (periods, utcOffset) => {
31
31
  statusFlag: null
32
32
  };
33
33
  }
34
+
35
+ // "Local" time for the business using utcOffset in minutes (e.g., PT = -420)
34
36
  const now = new Date();
35
- const localTime = new Date(now.getTime() + (utcOffset ?? 0) * 60000);
36
- const today = localTime.getUTCDay(); // 0-6 (Sunday-Saturday)
37
+ const localTime = new Date(now.getTime() + (utcOffset ?? 0) * 60_000);
38
+ const today = localTime.getUTCDay(); // 0-6, Sunday=0
37
39
 
38
- // Sort periods by open time
39
- const sortedPeriods = [...periods].sort((a, b) => Number(a.open.day) - Number(b.open.day));
40
- let nextOpeningPeriod = null;
41
- for (const period of sortedPeriods) {
42
- const openDay = Number(period.open.day);
43
- const closeDay = Number(period.close.day);
44
- const openTime = period.open.time;
45
- const closeTime = period.close.time;
40
+ // Ensure a stable order
41
+ const sorted = [...periods].sort((a, b) => Number(a.open.day) - Number(b.open.day));
42
+ let nextOpenDate = null;
43
+ let nextOpenTimeStr = null;
44
+ for (const p of sorted) {
45
+ const openDay = Number(p.open.day);
46
+ const closeDay = Number(p.close.day);
47
+ const openTime = p.open.time; // "HHmm"
48
+ const closeTime = p.close.time; // "HHmm"
46
49
 
47
- // Create Date objects for open and close
50
+ // Build open & close dates relative to localTime's week
48
51
  const openDate = new Date(localTime);
49
- const closeDate = new Date(localTime);
50
-
51
- // Set open time
52
52
  openDate.setUTCDate(localTime.getUTCDate() + (openDay - today + 7) % 7);
53
53
  openDate.setUTCHours(Number(openTime.slice(0, 2)));
54
54
  openDate.setUTCMinutes(Number(openTime.slice(2, 4)));
55
-
56
- // Set close time
55
+ openDate.setUTCSeconds(0, 0);
56
+ const closeDate = new Date(localTime);
57
57
  closeDate.setUTCDate(localTime.getUTCDate() + (closeDay - today + 7) % 7);
58
58
  closeDate.setUTCHours(Number(closeTime.slice(0, 2)));
59
59
  closeDate.setUTCMinutes(Number(closeTime.slice(2, 4)));
60
- const isOpenNow = localTime >= openDate && localTime < closeDate;
60
+ closeDate.setUTCSeconds(0, 0);
61
+
62
+ // Handle overnight windows (close after midnight/next day)
63
+ let normalizedClose = closeDate;
64
+ if (normalizedClose <= openDate) {
65
+ normalizedClose = new Date(closeDate.getTime() + 24 * 60 * 60 * 1000);
66
+ }
67
+
68
+ // Is open now?
69
+ const isOpenNow = localTime >= openDate && localTime < normalizedClose;
61
70
  if (isOpenNow) {
62
- const minutesToClose = Math.floor((closeDate.getTime() - localTime.getTime()) / 60000);
71
+ const minutesToClose = Math.floor((normalizedClose.getTime() - localTime.getTime()) / 60_000);
63
72
  const isClosingSoon = minutesToClose < 60;
64
73
  return {
65
74
  main: isClosingSoon ? (0, _i18next.t)('restaurant.closesSoon') : (0, _i18next.t)('restaurant.openNow'),
@@ -68,7 +77,9 @@ const getTodayStatus = (periods, utcOffset) => {
68
77
  statusFlag: isClosingSoon ? 'closingSoon' : null
69
78
  };
70
79
  }
71
- const minutesToOpen = Math.floor((openDate.getTime() - localTime.getTime()) / 60000);
80
+
81
+ // Opening soon (within 60 minutes)
82
+ const minutesToOpen = Math.floor((openDate.getTime() - localTime.getTime()) / 60_000);
72
83
  if (minutesToOpen > 0 && minutesToOpen <= 60) {
73
84
  return {
74
85
  main: (0, _i18next.t)('restaurant.openingSoon'),
@@ -78,14 +89,43 @@ const getTodayStatus = (periods, utcOffset) => {
78
89
  };
79
90
  }
80
91
 
81
- // Track next opening period if no match yet
82
- if (!nextOpeningPeriod || openDate < new Date(localTime.getTime() + (Number(nextOpeningPeriod.open.day) - today + 7) % 7 * 86400000)) {
83
- nextOpeningPeriod = period;
92
+ // Track the next future opening strictly after now
93
+ if (openDate > localTime) {
94
+ if (!nextOpenDate || openDate < nextOpenDate) {
95
+ nextOpenDate = openDate;
96
+ nextOpenTimeStr = openTime;
97
+ }
98
+ }
99
+ }
100
+
101
+ // If we didn’t find a future opening in the current week window,
102
+ // the next opening is the earliest weekly opening + 7 days.
103
+ if (!nextOpenDate) {
104
+ let earliestOpenDate = null;
105
+ let earliestOpenTimeStr = null;
106
+ for (const p of sorted) {
107
+ const openDay = Number(p.open.day);
108
+ const openTime = p.open.time;
109
+ const openDate = new Date(localTime);
110
+ openDate.setUTCDate(localTime.getUTCDate() + (openDay - today + 7) % 7);
111
+ openDate.setUTCHours(Number(openTime.slice(0, 2)));
112
+ openDate.setUTCMinutes(Number(openTime.slice(2, 4)));
113
+ openDate.setUTCSeconds(0, 0);
114
+
115
+ // If it's not in the future relative to localTime, push to next week
116
+ const rolled = openDate <= localTime ? new Date(openDate.getTime() + 7 * 24 * 60 * 60 * 1000) : openDate;
117
+ if (!earliestOpenDate || rolled < earliestOpenDate) {
118
+ earliestOpenDate = rolled;
119
+ earliestOpenTimeStr = openTime;
120
+ }
84
121
  }
122
+ nextOpenDate = earliestOpenDate;
123
+ nextOpenTimeStr = earliestOpenTimeStr;
85
124
  }
125
+ const weekdayFromDate = d => getWeekDayString(d.getUTCDay());
86
126
  return {
87
127
  main: (0, _i18next.t)('restaurant.closedNow'),
88
- additional: nextOpeningPeriod ? `${(0, _i18next.t)('restaurant.opensAt')} ${getWeekDayString(nextOpeningPeriod.open.day)} ${formatPeriodTime(nextOpeningPeriod.open.time)}` : undefined,
128
+ additional: nextOpenDate && nextOpenTimeStr ? `${(0, _i18next.t)('restaurant.opensAt')} ${weekdayFromDate(nextOpenDate)} ${formatPeriodTime(nextOpenTimeStr)}` : undefined,
89
129
  isOpen: false,
90
130
  statusFlag: null
91
131
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_i18next","require","getWeekDayString","day","days","t","exports","formatPeriodTime","time","hours","parseInt","substring","minutes","period","formattedHours","toString","padStart","getTodayStatus","periods","utcOffset","length","main","isOpen","statusFlag","now","Date","localTime","getTime","today","getUTCDay","sortedPeriods","sort","a","b","Number","open","nextOpeningPeriod","openDay","closeDay","close","openTime","closeTime","openDate","closeDate","setUTCDate","getUTCDate","setUTCHours","slice","setUTCMinutes","isOpenNow","minutesToClose","Math","floor","isClosingSoon","additional","minutesToOpen","undefined","WEEK_DAYS","formatBusinessHours","map","dayNum","dayMap","forEach"],"sourceRoot":"../../../src","sources":["helpers/businessHours.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_i18next","require","getWeekDayString","day","days","t","exports","formatPeriodTime","time","hours","parseInt","substring","minutes","period","formattedHours","toString","padStart","getTodayStatus","periods","utcOffset","length","main","isOpen","statusFlag","now","Date","localTime","getTime","today","getUTCDay","sorted","sort","a","b","Number","open","nextOpenDate","nextOpenTimeStr","p","openDay","closeDay","close","openTime","closeTime","openDate","setUTCDate","getUTCDate","setUTCHours","slice","setUTCMinutes","setUTCSeconds","closeDate","normalizedClose","isOpenNow","minutesToClose","Math","floor","isClosingSoon","additional","minutesToOpen","earliestOpenDate","earliestOpenTimeStr","rolled","weekdayFromDate","d","undefined","WEEK_DAYS","formatBusinessHours","map","dayNum","dayMap","forEach"],"sourceRoot":"../../../src","sources":["helpers/businessHours.ts"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAIC,GAAW,IAAa;EACvD,MAAMC,IAAI,GAAG,CACX,IAAAC,UAAC,EAAC,mBAAmB,CAAC,EACtB,IAAAA,UAAC,EAAC,mBAAmB,CAAC,EACtB,IAAAA,UAAC,EAAC,oBAAoB,CAAC,EACvB,IAAAA,UAAC,EAAC,sBAAsB,CAAC,EACzB,IAAAA,UAAC,EAAC,qBAAqB,CAAC,EACxB,IAAAA,UAAC,EAAC,mBAAmB,CAAC,EACtB,IAAAA,UAAC,EAAC,qBAAqB,CAAC,CACzB;EACD,OAAOD,IAAI,CAACD,GAAG,CAAC,IAAI,EAAE;AACxB,CAAC;AAACG,OAAA,CAAAJ,gBAAA,GAAAA,gBAAA;AAEK,MAAMK,gBAAgB,GAAIC,IAAY,IAAa;EACxD,IAAI,CAACA,IAAI,EAAE;IACT,OAAO,EAAE;EACX;EAEA,MAAMC,KAAK,GAAGC,QAAQ,CAACF,IAAI,CAACG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;EAChD,MAAMC,OAAO,GAAGF,QAAQ,CAACF,IAAI,CAACG,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;;EAE/C;EACA,MAAME,MAAM,GAAGJ,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;EACxC,MAAMK,cAAc,GAAGL,KAAK,GAAG,EAAE,IAAI,EAAE;EACvC,OAAQ,GAAEK,cAAe,IAAGF,OAAO,CAACG,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAE,GAAEH,MAAO,EAAC;AAC5E,CAAC;AAACP,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AASK,MAAMU,cAAc,GAAGA,CAC5BC,OAAwB,EACxBC,SAAkB,KACF;EAChB,IAAI,CAACD,OAAO,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;IACpC,OAAO;MACLC,IAAI,EAAE,IAAAhB,UAAC,EAAC,wBAAwB,CAAC;MACjCiB,MAAM,EAAE,KAAK;MACbC,UAAU,EAAE;IACd,CAAC;EACH;;EAEA;EACA,MAAMC,GAAG,GAAG,IAAIC,IAAI,CAAC,CAAC;EACtB,MAAMC,SAAS,GAAG,IAAID,IAAI,CAACD,GAAG,CAACG,OAAO,CAAC,CAAC,GAAG,CAACR,SAAS,IAAI,CAAC,IAAI,MAAM,CAAC;EAErE,MAAMS,KAAK,GAAGF,SAAS,CAACG,SAAS,CAAC,CAAC,CAAC,CAAC;;EAErC;EACA,MAAMC,MAAM,GAAG,CAAC,GAAGZ,OAAO,CAAC,CAACa,IAAI,CAC9B,CAACC,CAAC,EAAEC,CAAC,KAAKC,MAAM,CAACF,CAAC,CAACG,IAAI,CAAChC,GAAG,CAAC,GAAG+B,MAAM,CAACD,CAAC,CAACE,IAAI,CAAChC,GAAG,CAClD,CAAC;EAED,IAAIiC,YAAyB,GAAG,IAAI;EACpC,IAAIC,eAA8B,GAAG,IAAI;EAEzC,KAAK,MAAMC,CAAC,IAAIR,MAAM,EAAE;IACtB,MAAMS,OAAO,GAAGL,MAAM,CAACI,CAAC,CAACH,IAAI,CAAChC,GAAG,CAAC;IAClC,MAAMqC,QAAQ,GAAGN,MAAM,CAACI,CAAC,CAACG,KAAK,CAACtC,GAAG,CAAC;IACpC,MAAMuC,QAAQ,GAAGJ,CAAC,CAACH,IAAI,CAAC3B,IAAI,CAAC,CAAC;IAC9B,MAAMmC,SAAS,GAAGL,CAAC,CAACG,KAAK,CAACjC,IAAI,CAAC,CAAC;;IAEhC;IACA,MAAMoC,QAAQ,GAAG,IAAInB,IAAI,CAACC,SAAS,CAAC;IACpCkB,QAAQ,CAACC,UAAU,CAACnB,SAAS,CAACoB,UAAU,CAAC,CAAC,GAAI,CAACP,OAAO,GAAGX,KAAK,GAAG,CAAC,IAAI,CAAE,CAAC;IACzEgB,QAAQ,CAACG,WAAW,CAACb,MAAM,CAACQ,QAAQ,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClDJ,QAAQ,CAACK,aAAa,CAACf,MAAM,CAACQ,QAAQ,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpDJ,QAAQ,CAACM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5B,MAAMC,SAAS,GAAG,IAAI1B,IAAI,CAACC,SAAS,CAAC;IACrCyB,SAAS,CAACN,UAAU,CAACnB,SAAS,CAACoB,UAAU,CAAC,CAAC,GAAI,CAACN,QAAQ,GAAGZ,KAAK,GAAG,CAAC,IAAI,CAAE,CAAC;IAC3EuB,SAAS,CAACJ,WAAW,CAACb,MAAM,CAACS,SAAS,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpDG,SAAS,CAACF,aAAa,CAACf,MAAM,CAACS,SAAS,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtDG,SAAS,CAACD,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;IAE7B;IACA,IAAIE,eAAe,GAAGD,SAAS;IAC/B,IAAIC,eAAe,IAAIR,QAAQ,EAAE;MAC/BQ,eAAe,GAAG,IAAI3B,IAAI,CAAC0B,SAAS,CAACxB,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvE;;IAEA;IACA,MAAM0B,SAAS,GAAG3B,SAAS,IAAIkB,QAAQ,IAAIlB,SAAS,GAAG0B,eAAe;IACtE,IAAIC,SAAS,EAAE;MACb,MAAMC,cAAc,GAAGC,IAAI,CAACC,KAAK,CAC/B,CAACJ,eAAe,CAACzB,OAAO,CAAC,CAAC,GAAGD,SAAS,CAACC,OAAO,CAAC,CAAC,IAAI,MACtD,CAAC;MACD,MAAM8B,aAAa,GAAGH,cAAc,GAAG,EAAE;MAEzC,OAAO;QACLjC,IAAI,EAAEoC,aAAa,GACf,IAAApD,UAAC,EAAC,uBAAuB,CAAC,GAC1B,IAAAA,UAAC,EAAC,oBAAoB,CAAC;QAC3BqD,UAAU,EAAG,GAAE,IAAArD,UAAC,EAAC,qBAAqB,CAAE,IAAGE,gBAAgB,CACzDoC,SACF,CAAE,EAAC;QACHrB,MAAM,EAAE,IAAI;QACZC,UAAU,EAAEkC,aAAa,GAAG,aAAa,GAAG;MAC9C,CAAC;IACH;;IAEA;IACA,MAAME,aAAa,GAAGJ,IAAI,CAACC,KAAK,CAC9B,CAACZ,QAAQ,CAACjB,OAAO,CAAC,CAAC,GAAGD,SAAS,CAACC,OAAO,CAAC,CAAC,IAAI,MAC/C,CAAC;IACD,IAAIgC,aAAa,GAAG,CAAC,IAAIA,aAAa,IAAI,EAAE,EAAE;MAC5C,OAAO;QACLtC,IAAI,EAAE,IAAAhB,UAAC,EAAC,wBAAwB,CAAC;QACjCqD,UAAU,EAAG,GAAE,IAAArD,UAAC,EAAC,oBAAoB,CAAE,IAAGE,gBAAgB,CAACmC,QAAQ,CAAE,EAAC;QACtEpB,MAAM,EAAE,KAAK;QACbC,UAAU,EAAE;MACd,CAAC;IACH;;IAEA;IACA,IAAIqB,QAAQ,GAAGlB,SAAS,EAAE;MACxB,IAAI,CAACU,YAAY,IAAIQ,QAAQ,GAAGR,YAAY,EAAE;QAC5CA,YAAY,GAAGQ,QAAQ;QACvBP,eAAe,GAAGK,QAAQ;MAC5B;IACF;EACF;;EAEA;EACA;EACA,IAAI,CAACN,YAAY,EAAE;IACjB,IAAIwB,gBAA6B,GAAG,IAAI;IACxC,IAAIC,mBAAkC,GAAG,IAAI;IAC7C,KAAK,MAAMvB,CAAC,IAAIR,MAAM,EAAE;MACtB,MAAMS,OAAO,GAAGL,MAAM,CAACI,CAAC,CAACH,IAAI,CAAChC,GAAG,CAAC;MAClC,MAAMuC,QAAQ,GAAGJ,CAAC,CAACH,IAAI,CAAC3B,IAAI;MAE5B,MAAMoC,QAAQ,GAAG,IAAInB,IAAI,CAACC,SAAS,CAAC;MACpCkB,QAAQ,CAACC,UAAU,CAACnB,SAAS,CAACoB,UAAU,CAAC,CAAC,GAAI,CAACP,OAAO,GAAGX,KAAK,GAAG,CAAC,IAAI,CAAE,CAAC;MACzEgB,QAAQ,CAACG,WAAW,CAACb,MAAM,CAACQ,QAAQ,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MAClDJ,QAAQ,CAACK,aAAa,CAACf,MAAM,CAACQ,QAAQ,CAACM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MACpDJ,QAAQ,CAACM,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;MAE5B;MACA,MAAMY,MAAM,GACVlB,QAAQ,IAAIlB,SAAS,GACjB,IAAID,IAAI,CAACmB,QAAQ,CAACjB,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GACtDiB,QAAQ;MAEd,IAAI,CAACgB,gBAAgB,IAAIE,MAAM,GAAGF,gBAAgB,EAAE;QAClDA,gBAAgB,GAAGE,MAAM;QACzBD,mBAAmB,GAAGnB,QAAQ;MAChC;IACF;IACAN,YAAY,GAAGwB,gBAAgB;IAC/BvB,eAAe,GAAGwB,mBAAmB;EACvC;EAEA,MAAME,eAAe,GAAIC,CAAO,IAAK9D,gBAAgB,CAAC8D,CAAC,CAACnC,SAAS,CAAC,CAAC,CAAC;EAEpE,OAAO;IACLR,IAAI,EAAE,IAAAhB,UAAC,EAAC,sBAAsB,CAAC;IAC/BqD,UAAU,EACRtB,YAAY,IAAIC,eAAe,GAC1B,GAAE,IAAAhC,UAAC,EAAC,oBAAoB,CAAE,IAAG0D,eAAe,CAC3C3B,YACF,CAAE,IAAG7B,gBAAgB,CAAC8B,eAAe,CAAE,EAAC,GACxC4B,SAAS;IACf3C,MAAM,EAAE,KAAK;IACbC,UAAU,EAAE;EACd,CAAC;AACH,CAAC;AAACjB,OAAA,CAAAW,cAAA,GAAAA,cAAA;AAOF,MAAMiD,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAElC,MAAMC,mBAAmB,GAC9BjD,OAAwB,IACC;EACzB,IAAI,CAACA,OAAO,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;IACpC,OAAO8C,SAAS,CAACE,GAAG,CAAEC,MAAM,KAAM;MAChClE,GAAG,EAAED,gBAAgB,CAACmE,MAAM,CAAC;MAC7B7D,IAAI,EAAE;IACR,CAAC,CAAC,CAAC;EACL;;EAEA;EACA,MAAM8D,MAA8B,GAAG,CAAC,CAAC;EACzCpD,OAAO,CAACqD,OAAO,CAAC,CAAC;IAAEpC,IAAI;IAAEM;EAAM,CAAC,KAAK;IACnC,MAAMC,QAAQ,GAAGnC,gBAAgB,CAAC4B,IAAI,CAAC3B,IAAI,CAAC;IAC5C,MAAMmC,SAAS,GAAGpC,gBAAgB,CAACkC,KAAK,CAACjC,IAAI,CAAC;IAC9C8D,MAAM,CAACnC,IAAI,CAAChC,GAAG,CAAC,GAAI,GAAEuC,QAAS,MAAKC,SAAU,EAAC;EACjD,CAAC,CAAC;;EAEF;EACA,OAAOuB,SAAS,CAACE,GAAG,CAAEC,MAAM,KAAM;IAChClE,GAAG,EAAED,gBAAgB,CAACmE,MAAM,CAAC;IAC7B7D,IAAI,EAAE8D,MAAM,CAACD,MAAM,CAAC,IAAI;EAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAAC/D,OAAA,CAAA6D,mBAAA,GAAAA,mBAAA"}
@@ -10,6 +10,13 @@ var _reactNative = require("react-native");
10
10
  var _reactNativeConfig = _interopRequireDefault(require("react-native-config"));
11
11
  var _components = require("../components");
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const logApiCall = ({
14
+ url
15
+ }) => {
16
+ if (__DEV__) {
17
+ console.log('🚗API:', url);
18
+ }
19
+ };
13
20
  const useAuthenticateRequests = getToken => {
14
21
  (0, _react.useEffect)(() => {
15
22
  const requestInterceptor = _axios.default.interceptors.request.use(async config => {
@@ -21,6 +28,11 @@ const useAuthenticateRequests = getToken => {
21
28
  }
22
29
  config.headers.Authorization = `Bearer ${token}`;
23
30
  }
31
+ logApiCall({
32
+ method: config.method?.toUpperCase() || 'GET',
33
+ url: config?.baseURL + (config?.url ?? ''),
34
+ data: config.data
35
+ });
24
36
  return config;
25
37
  });
26
38
  _axios.default.defaults.baseURL = _reactNativeConfig.default.BASE_URL;
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_react","_reactNative","_reactNativeConfig","_components","obj","__esModule","default","useAuthenticateRequests","getToken","useEffect","requestInterceptor","axios","interceptors","request","use","config","token","headers","Authorization","defaults","baseURL","Config","BASE_URL","Platform","OS","DEBUG","replace","common","accept","responseInterceptor","response","error","data","message","Alert","show","title","Promise","reject","eject","exports"],"sourceRoot":"../../../src","sources":["hooks/useAuthenticateRequests.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAAsC,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE/B,MAAMG,uBAAuB,GAClCC,QAAsC,IACnC;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,kBAAkB,GAAGC,cAAK,CAACC,YAAY,CAACC,OAAO,CAACC,GAAG,CACvD,MAAOC,MAAM,IAAK;MAChB,MAAMC,KAAK,GAAG,MAAMR,QAAQ,CAAC,CAAC;MAC9B,IAAIQ,KAAK,EAAE;QACT,IAAI,CAACD,MAAM,CAACE,OAAO,EAAE;UACnB;UACAF,MAAM,CAACE,OAAO,GAAG,CAAC,CAAC;QACrB;QACAF,MAAM,CAACE,OAAO,CAACC,aAAa,GAAI,UAASF,KAAM,EAAC;MAClD;MACA,OAAOD,MAAM;IACf,CACF,CAAC;IACDJ,cAAK,CAACQ,QAAQ,CAACC,OAAO,GAAGC,0BAAM,CAACC,QAAQ;;IAExC;IACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIH,0BAAM,CAACI,KAAK,KAAK,IAAI,EAAE;MACtDd,cAAK,CAACQ,QAAQ,CAACC,OAAO,GAAGT,cAAK,CAACQ,QAAQ,CAACC,OAAO,EAAEM,OAAO,CACtD,WAAW,EACX,UACF,CAAC;IACH;IACAf,cAAK,CAACQ,QAAQ,CAACF,OAAO,CAACU,MAAM,GAAG;MAC9BC,MAAM,EAAE;IACV,CAAC;IAED,MAAMC,mBAAmB,GAAGlB,cAAK,CAACC,YAAY,CAACkB,QAAQ,CAAChB,GAAG,CACxDgB,QAAQ,IAAK;MACZ,OAAOA,QAAQ;IACjB,CAAC,EACAC,KAAK,IAAK;MACT,IAAIA,KAAK,CAACD,QAAQ,CAACE,IAAI,CAACC,OAAO,EAAE;QAC/BC,iBAAK,CAACC,IAAI,CAAC;UACTC,KAAK,EAAEL,KAAK,CAACD,QAAQ,CAACE,IAAI,CAACC;QAC7B,CAAC,CAAC;MACJ,CAAC,MAAM;QACLC,iBAAK,CAACC,IAAI,CAAC;UACTC,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,OAAOC,OAAO,CAACC,MAAM,CAACP,KAAK,CAAC;IAC9B,CACF,CAAC;IAED,OAAO,MAAM;MACXpB,cAAK,CAACC,YAAY,CAACC,OAAO,CAAC0B,KAAK,CAAC7B,kBAAkB,CAAC;MACpDC,cAAK,CAACC,YAAY,CAACkB,QAAQ,CAACS,KAAK,CAACV,mBAAmB,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACrB,QAAQ,CAAC,CAAC;AAChB,CAAC;AAACgC,OAAA,CAAAjC,uBAAA,GAAAA,uBAAA"}
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_react","_reactNative","_reactNativeConfig","_components","obj","__esModule","default","logApiCall","url","__DEV__","console","log","useAuthenticateRequests","getToken","useEffect","requestInterceptor","axios","interceptors","request","use","config","token","headers","Authorization","method","toUpperCase","baseURL","data","defaults","Config","BASE_URL","Platform","OS","DEBUG","replace","common","accept","responseInterceptor","response","error","message","Alert","show","title","Promise","reject","eject","exports"],"sourceRoot":"../../../src","sources":["hooks/useAuthenticateRequests.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAAsC,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEtC,MAAMG,UAAU,GAAGA,CAAC;EAClBC;AAOF,CAAC,KAAK;EACJ,IAAIC,OAAO,EAAE;IACXC,OAAO,CAACC,GAAG,CAAC,QAAQ,EAAEH,GAAG,CAAC;EAC5B;AACF,CAAC;AAEM,MAAMI,uBAAuB,GAClCC,QAAsC,IACnC;EACH,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,kBAAkB,GAAGC,cAAK,CAACC,YAAY,CAACC,OAAO,CAACC,GAAG,CACvD,MAAOC,MAAM,IAAK;MAChB,MAAMC,KAAK,GAAG,MAAMR,QAAQ,CAAC,CAAC;MAC9B,IAAIQ,KAAK,EAAE;QACT,IAAI,CAACD,MAAM,CAACE,OAAO,EAAE;UACnB;UACAF,MAAM,CAACE,OAAO,GAAG,CAAC,CAAC;QACrB;QACAF,MAAM,CAACE,OAAO,CAACC,aAAa,GAAI,UAASF,KAAM,EAAC;MAClD;MAEAd,UAAU,CAAC;QACTiB,MAAM,EAAEJ,MAAM,CAACI,MAAM,EAAEC,WAAW,CAAC,CAAC,IAAI,KAAK;QAC7CjB,GAAG,EAAEY,MAAM,EAAEM,OAAO,IAAIN,MAAM,EAAEZ,GAAG,IAAI,EAAE,CAAC;QAC1CmB,IAAI,EAAEP,MAAM,CAACO;MACf,CAAC,CAAC;MACF,OAAOP,MAAM;IACf,CACF,CAAC;IACDJ,cAAK,CAACY,QAAQ,CAACF,OAAO,GAAGG,0BAAM,CAACC,QAAQ;;IAExC;IACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIH,0BAAM,CAACI,KAAK,KAAK,IAAI,EAAE;MACtDjB,cAAK,CAACY,QAAQ,CAACF,OAAO,GAAGV,cAAK,CAACY,QAAQ,CAACF,OAAO,EAAEQ,OAAO,CACtD,WAAW,EACX,UACF,CAAC;IACH;IACAlB,cAAK,CAACY,QAAQ,CAACN,OAAO,CAACa,MAAM,GAAG;MAC9BC,MAAM,EAAE;IACV,CAAC;IAED,MAAMC,mBAAmB,GAAGrB,cAAK,CAACC,YAAY,CAACqB,QAAQ,CAACnB,GAAG,CACxDmB,QAAQ,IAAK;MACZ,OAAOA,QAAQ;IACjB,CAAC,EACAC,KAAK,IAAK;MACT,IAAIA,KAAK,CAACD,QAAQ,CAACX,IAAI,CAACa,OAAO,EAAE;QAC/BC,iBAAK,CAACC,IAAI,CAAC;UACTC,KAAK,EAAEJ,KAAK,CAACD,QAAQ,CAACX,IAAI,CAACa;QAC7B,CAAC,CAAC;MACJ,CAAC,MAAM;QACLC,iBAAK,CAACC,IAAI,CAAC;UACTC,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,OAAOC,OAAO,CAACC,MAAM,CAACN,KAAK,CAAC;IAC9B,CACF,CAAC;IAED,OAAO,MAAM;MACXvB,cAAK,CAACC,YAAY,CAACC,OAAO,CAAC4B,KAAK,CAAC/B,kBAAkB,CAAC;MACpDC,cAAK,CAACC,YAAY,CAACqB,QAAQ,CAACQ,KAAK,CAACT,mBAAmB,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACxB,QAAQ,CAAC,CAAC;AAChB,CAAC;AAACkC,OAAA,CAAAnC,uBAAA,GAAAA,uBAAA"}
@@ -74,7 +74,7 @@
74
74
  "payByCard": "Pay by card",
75
75
  "confirmCardDelete": "Confirm Delete Card",
76
76
  "cardDeleteDesc": "Are you sure you want to delete card ending in {{card}}?",
77
- "total": "Subtotal",
77
+ "total": "Total",
78
78
  "createBusiness": "Create Business",
79
79
  "selectBusiness": "Select Business",
80
80
  "searchBusiness": "Search Business",
@@ -23,35 +23,44 @@ export const getTodayStatus = (periods, utcOffset) => {
23
23
  statusFlag: null
24
24
  };
25
25
  }
26
+
27
+ // "Local" time for the business using utcOffset in minutes (e.g., PT = -420)
26
28
  const now = new Date();
27
- const localTime = new Date(now.getTime() + (utcOffset ?? 0) * 60000);
28
- const today = localTime.getUTCDay(); // 0-6 (Sunday-Saturday)
29
+ const localTime = new Date(now.getTime() + (utcOffset ?? 0) * 60_000);
30
+ const today = localTime.getUTCDay(); // 0-6, Sunday=0
29
31
 
30
- // Sort periods by open time
31
- const sortedPeriods = [...periods].sort((a, b) => Number(a.open.day) - Number(b.open.day));
32
- let nextOpeningPeriod = null;
33
- for (const period of sortedPeriods) {
34
- const openDay = Number(period.open.day);
35
- const closeDay = Number(period.close.day);
36
- const openTime = period.open.time;
37
- const closeTime = period.close.time;
32
+ // Ensure a stable order
33
+ const sorted = [...periods].sort((a, b) => Number(a.open.day) - Number(b.open.day));
34
+ let nextOpenDate = null;
35
+ let nextOpenTimeStr = null;
36
+ for (const p of sorted) {
37
+ const openDay = Number(p.open.day);
38
+ const closeDay = Number(p.close.day);
39
+ const openTime = p.open.time; // "HHmm"
40
+ const closeTime = p.close.time; // "HHmm"
38
41
 
39
- // Create Date objects for open and close
42
+ // Build open & close dates relative to localTime's week
40
43
  const openDate = new Date(localTime);
41
- const closeDate = new Date(localTime);
42
-
43
- // Set open time
44
44
  openDate.setUTCDate(localTime.getUTCDate() + (openDay - today + 7) % 7);
45
45
  openDate.setUTCHours(Number(openTime.slice(0, 2)));
46
46
  openDate.setUTCMinutes(Number(openTime.slice(2, 4)));
47
-
48
- // Set close time
47
+ openDate.setUTCSeconds(0, 0);
48
+ const closeDate = new Date(localTime);
49
49
  closeDate.setUTCDate(localTime.getUTCDate() + (closeDay - today + 7) % 7);
50
50
  closeDate.setUTCHours(Number(closeTime.slice(0, 2)));
51
51
  closeDate.setUTCMinutes(Number(closeTime.slice(2, 4)));
52
- const isOpenNow = localTime >= openDate && localTime < closeDate;
52
+ closeDate.setUTCSeconds(0, 0);
53
+
54
+ // Handle overnight windows (close after midnight/next day)
55
+ let normalizedClose = closeDate;
56
+ if (normalizedClose <= openDate) {
57
+ normalizedClose = new Date(closeDate.getTime() + 24 * 60 * 60 * 1000);
58
+ }
59
+
60
+ // Is open now?
61
+ const isOpenNow = localTime >= openDate && localTime < normalizedClose;
53
62
  if (isOpenNow) {
54
- const minutesToClose = Math.floor((closeDate.getTime() - localTime.getTime()) / 60000);
63
+ const minutesToClose = Math.floor((normalizedClose.getTime() - localTime.getTime()) / 60_000);
55
64
  const isClosingSoon = minutesToClose < 60;
56
65
  return {
57
66
  main: isClosingSoon ? t('restaurant.closesSoon') : t('restaurant.openNow'),
@@ -60,7 +69,9 @@ export const getTodayStatus = (periods, utcOffset) => {
60
69
  statusFlag: isClosingSoon ? 'closingSoon' : null
61
70
  };
62
71
  }
63
- const minutesToOpen = Math.floor((openDate.getTime() - localTime.getTime()) / 60000);
72
+
73
+ // Opening soon (within 60 minutes)
74
+ const minutesToOpen = Math.floor((openDate.getTime() - localTime.getTime()) / 60_000);
64
75
  if (minutesToOpen > 0 && minutesToOpen <= 60) {
65
76
  return {
66
77
  main: t('restaurant.openingSoon'),
@@ -70,14 +81,43 @@ export const getTodayStatus = (periods, utcOffset) => {
70
81
  };
71
82
  }
72
83
 
73
- // Track next opening period if no match yet
74
- if (!nextOpeningPeriod || openDate < new Date(localTime.getTime() + (Number(nextOpeningPeriod.open.day) - today + 7) % 7 * 86400000)) {
75
- nextOpeningPeriod = period;
84
+ // Track the next future opening strictly after now
85
+ if (openDate > localTime) {
86
+ if (!nextOpenDate || openDate < nextOpenDate) {
87
+ nextOpenDate = openDate;
88
+ nextOpenTimeStr = openTime;
89
+ }
90
+ }
91
+ }
92
+
93
+ // If we didn’t find a future opening in the current week window,
94
+ // the next opening is the earliest weekly opening + 7 days.
95
+ if (!nextOpenDate) {
96
+ let earliestOpenDate = null;
97
+ let earliestOpenTimeStr = null;
98
+ for (const p of sorted) {
99
+ const openDay = Number(p.open.day);
100
+ const openTime = p.open.time;
101
+ const openDate = new Date(localTime);
102
+ openDate.setUTCDate(localTime.getUTCDate() + (openDay - today + 7) % 7);
103
+ openDate.setUTCHours(Number(openTime.slice(0, 2)));
104
+ openDate.setUTCMinutes(Number(openTime.slice(2, 4)));
105
+ openDate.setUTCSeconds(0, 0);
106
+
107
+ // If it's not in the future relative to localTime, push to next week
108
+ const rolled = openDate <= localTime ? new Date(openDate.getTime() + 7 * 24 * 60 * 60 * 1000) : openDate;
109
+ if (!earliestOpenDate || rolled < earliestOpenDate) {
110
+ earliestOpenDate = rolled;
111
+ earliestOpenTimeStr = openTime;
112
+ }
76
113
  }
114
+ nextOpenDate = earliestOpenDate;
115
+ nextOpenTimeStr = earliestOpenTimeStr;
77
116
  }
117
+ const weekdayFromDate = d => getWeekDayString(d.getUTCDay());
78
118
  return {
79
119
  main: t('restaurant.closedNow'),
80
- additional: nextOpeningPeriod ? `${t('restaurant.opensAt')} ${getWeekDayString(nextOpeningPeriod.open.day)} ${formatPeriodTime(nextOpeningPeriod.open.time)}` : undefined,
120
+ additional: nextOpenDate && nextOpenTimeStr ? `${t('restaurant.opensAt')} ${weekdayFromDate(nextOpenDate)} ${formatPeriodTime(nextOpenTimeStr)}` : undefined,
81
121
  isOpen: false,
82
122
  statusFlag: null
83
123
  };
@@ -1 +1 @@
1
- {"version":3,"names":["t","getWeekDayString","day","days","formatPeriodTime","time","hours","parseInt","substring","minutes","period","formattedHours","toString","padStart","getTodayStatus","periods","utcOffset","length","main","isOpen","statusFlag","now","Date","localTime","getTime","today","getUTCDay","sortedPeriods","sort","a","b","Number","open","nextOpeningPeriod","openDay","closeDay","close","openTime","closeTime","openDate","closeDate","setUTCDate","getUTCDate","setUTCHours","slice","setUTCMinutes","isOpenNow","minutesToClose","Math","floor","isClosingSoon","additional","minutesToOpen","undefined","WEEK_DAYS","formatBusinessHours","map","dayNum","dayMap","forEach"],"sourceRoot":"../../../src","sources":["helpers/businessHours.ts"],"mappings":"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"}
1
+ {"version":3,"names":["t","getWeekDayString","day","days","formatPeriodTime","time","hours","parseInt","substring","minutes","period","formattedHours","toString","padStart","getTodayStatus","periods","utcOffset","length","main","isOpen","statusFlag","now","Date","localTime","getTime","today","getUTCDay","sorted","sort","a","b","Number","open","nextOpenDate","nextOpenTimeStr","p","openDay","closeDay","close","openTime","closeTime","openDate","setUTCDate","getUTCDate","setUTCHours","slice","setUTCMinutes","setUTCSeconds","closeDate","normalizedClose","isOpenNow","minutesToClose","Math","floor","isClosingSoon","additional","minutesToOpen","earliestOpenDate","earliestOpenTimeStr","rolled","weekdayFromDate","d","undefined","WEEK_DAYS","formatBusinessHours","map","dayNum","dayMap","forEach"],"sourceRoot":"../../../src","sources":["helpers/businessHours.ts"],"mappings":"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"}
@@ -3,6 +3,13 @@ import { useEffect } from 'react';
3
3
  import { Platform } from 'react-native';
4
4
  import Config from 'react-native-config';
5
5
  import { Alert } from '../components';
6
+ const logApiCall = ({
7
+ url
8
+ }) => {
9
+ if (__DEV__) {
10
+ console.log('🚗API:', url);
11
+ }
12
+ };
6
13
  export const useAuthenticateRequests = getToken => {
7
14
  useEffect(() => {
8
15
  const requestInterceptor = axios.interceptors.request.use(async config => {
@@ -14,6 +21,11 @@ export const useAuthenticateRequests = getToken => {
14
21
  }
15
22
  config.headers.Authorization = `Bearer ${token}`;
16
23
  }
24
+ logApiCall({
25
+ method: config.method?.toUpperCase() || 'GET',
26
+ url: config?.baseURL + (config?.url ?? ''),
27
+ data: config.data
28
+ });
17
29
  return config;
18
30
  });
19
31
  axios.defaults.baseURL = Config.BASE_URL;
@@ -1 +1 @@
1
- {"version":3,"names":["axios","useEffect","Platform","Config","Alert","useAuthenticateRequests","getToken","requestInterceptor","interceptors","request","use","config","token","headers","Authorization","defaults","baseURL","BASE_URL","OS","DEBUG","replace","common","accept","responseInterceptor","response","error","data","message","show","title","Promise","reject","eject"],"sourceRoot":"../../../src","sources":["hooks/useAuthenticateRequests.ts"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,QAAQ,QAAQ,cAAc;AACvC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,SAASC,KAAK,QAAQ,eAAe;AAErC,OAAO,MAAMC,uBAAuB,GAClCC,QAAsC,IACnC;EACHL,SAAS,CAAC,MAAM;IACd,MAAMM,kBAAkB,GAAGP,KAAK,CAACQ,YAAY,CAACC,OAAO,CAACC,GAAG,CACvD,MAAOC,MAAM,IAAK;MAChB,MAAMC,KAAK,GAAG,MAAMN,QAAQ,CAAC,CAAC;MAC9B,IAAIM,KAAK,EAAE;QACT,IAAI,CAACD,MAAM,CAACE,OAAO,EAAE;UACnB;UACAF,MAAM,CAACE,OAAO,GAAG,CAAC,CAAC;QACrB;QACAF,MAAM,CAACE,OAAO,CAACC,aAAa,GAAI,UAASF,KAAM,EAAC;MAClD;MACA,OAAOD,MAAM;IACf,CACF,CAAC;IACDX,KAAK,CAACe,QAAQ,CAACC,OAAO,GAAGb,MAAM,CAACc,QAAQ;;IAExC;IACA,IAAIf,QAAQ,CAACgB,EAAE,KAAK,SAAS,IAAIf,MAAM,CAACgB,KAAK,KAAK,IAAI,EAAE;MACtDnB,KAAK,CAACe,QAAQ,CAACC,OAAO,GAAGhB,KAAK,CAACe,QAAQ,CAACC,OAAO,EAAEI,OAAO,CACtD,WAAW,EACX,UACF,CAAC;IACH;IACApB,KAAK,CAACe,QAAQ,CAACF,OAAO,CAACQ,MAAM,GAAG;MAC9BC,MAAM,EAAE;IACV,CAAC;IAED,MAAMC,mBAAmB,GAAGvB,KAAK,CAACQ,YAAY,CAACgB,QAAQ,CAACd,GAAG,CACxDc,QAAQ,IAAK;MACZ,OAAOA,QAAQ;IACjB,CAAC,EACAC,KAAK,IAAK;MACT,IAAIA,KAAK,CAACD,QAAQ,CAACE,IAAI,CAACC,OAAO,EAAE;QAC/BvB,KAAK,CAACwB,IAAI,CAAC;UACTC,KAAK,EAAEJ,KAAK,CAACD,QAAQ,CAACE,IAAI,CAACC;QAC7B,CAAC,CAAC;MACJ,CAAC,MAAM;QACLvB,KAAK,CAACwB,IAAI,CAAC;UACTC,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,OAAOC,OAAO,CAACC,MAAM,CAACN,KAAK,CAAC;IAC9B,CACF,CAAC;IAED,OAAO,MAAM;MACXzB,KAAK,CAACQ,YAAY,CAACC,OAAO,CAACuB,KAAK,CAACzB,kBAAkB,CAAC;MACpDP,KAAK,CAACQ,YAAY,CAACgB,QAAQ,CAACQ,KAAK,CAACT,mBAAmB,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACjB,QAAQ,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"names":["axios","useEffect","Platform","Config","Alert","logApiCall","url","__DEV__","console","log","useAuthenticateRequests","getToken","requestInterceptor","interceptors","request","use","config","token","headers","Authorization","method","toUpperCase","baseURL","data","defaults","BASE_URL","OS","DEBUG","replace","common","accept","responseInterceptor","response","error","message","show","title","Promise","reject","eject"],"sourceRoot":"../../../src","sources":["hooks/useAuthenticateRequests.ts"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,QAAQ,QAAQ,cAAc;AACvC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,SAASC,KAAK,QAAQ,eAAe;AAErC,MAAMC,UAAU,GAAGA,CAAC;EAClBC;AAOF,CAAC,KAAK;EACJ,IAAIC,OAAO,EAAE;IACXC,OAAO,CAACC,GAAG,CAAC,QAAQ,EAAEH,GAAG,CAAC;EAC5B;AACF,CAAC;AAED,OAAO,MAAMI,uBAAuB,GAClCC,QAAsC,IACnC;EACHV,SAAS,CAAC,MAAM;IACd,MAAMW,kBAAkB,GAAGZ,KAAK,CAACa,YAAY,CAACC,OAAO,CAACC,GAAG,CACvD,MAAOC,MAAM,IAAK;MAChB,MAAMC,KAAK,GAAG,MAAMN,QAAQ,CAAC,CAAC;MAC9B,IAAIM,KAAK,EAAE;QACT,IAAI,CAACD,MAAM,CAACE,OAAO,EAAE;UACnB;UACAF,MAAM,CAACE,OAAO,GAAG,CAAC,CAAC;QACrB;QACAF,MAAM,CAACE,OAAO,CAACC,aAAa,GAAI,UAASF,KAAM,EAAC;MAClD;MAEAZ,UAAU,CAAC;QACTe,MAAM,EAAEJ,MAAM,CAACI,MAAM,EAAEC,WAAW,CAAC,CAAC,IAAI,KAAK;QAC7Cf,GAAG,EAAEU,MAAM,EAAEM,OAAO,IAAIN,MAAM,EAAEV,GAAG,IAAI,EAAE,CAAC;QAC1CiB,IAAI,EAAEP,MAAM,CAACO;MACf,CAAC,CAAC;MACF,OAAOP,MAAM;IACf,CACF,CAAC;IACDhB,KAAK,CAACwB,QAAQ,CAACF,OAAO,GAAGnB,MAAM,CAACsB,QAAQ;;IAExC;IACA,IAAIvB,QAAQ,CAACwB,EAAE,KAAK,SAAS,IAAIvB,MAAM,CAACwB,KAAK,KAAK,IAAI,EAAE;MACtD3B,KAAK,CAACwB,QAAQ,CAACF,OAAO,GAAGtB,KAAK,CAACwB,QAAQ,CAACF,OAAO,EAAEM,OAAO,CACtD,WAAW,EACX,UACF,CAAC;IACH;IACA5B,KAAK,CAACwB,QAAQ,CAACN,OAAO,CAACW,MAAM,GAAG;MAC9BC,MAAM,EAAE;IACV,CAAC;IAED,MAAMC,mBAAmB,GAAG/B,KAAK,CAACa,YAAY,CAACmB,QAAQ,CAACjB,GAAG,CACxDiB,QAAQ,IAAK;MACZ,OAAOA,QAAQ;IACjB,CAAC,EACAC,KAAK,IAAK;MACT,IAAIA,KAAK,CAACD,QAAQ,CAACT,IAAI,CAACW,OAAO,EAAE;QAC/B9B,KAAK,CAAC+B,IAAI,CAAC;UACTC,KAAK,EAAEH,KAAK,CAACD,QAAQ,CAACT,IAAI,CAACW;QAC7B,CAAC,CAAC;MACJ,CAAC,MAAM;QACL9B,KAAK,CAAC+B,IAAI,CAAC;UACTC,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MACA,OAAOC,OAAO,CAACC,MAAM,CAACL,KAAK,CAAC;IAC9B,CACF,CAAC;IAED,OAAO,MAAM;MACXjC,KAAK,CAACa,YAAY,CAACC,OAAO,CAACyB,KAAK,CAAC3B,kBAAkB,CAAC;MACpDZ,KAAK,CAACa,YAAY,CAACmB,QAAQ,CAACO,KAAK,CAACR,mBAAmB,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACpB,QAAQ,CAAC,CAAC;AAChB,CAAC"}
@@ -74,7 +74,7 @@
74
74
  "payByCard": "Pay by card",
75
75
  "confirmCardDelete": "Confirm Delete Card",
76
76
  "cardDeleteDesc": "Are you sure you want to delete card ending in {{card}}?",
77
- "total": "Subtotal",
77
+ "total": "Total",
78
78
  "createBusiness": "Create Business",
79
79
  "selectBusiness": "Select Business",
80
80
  "searchBusiness": "Search Business",
@@ -1 +1 @@
1
- {"version":3,"file":"businessHours.d.ts","sourceRoot":"","sources":["../../../../src/helpers/businessHours.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,MAW9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,MAY/C,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,GAAG,IAAI,cACZ,MAAM,KACjB,WAkGF,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,eAAO,MAAM,mBAAmB,YACrB,MAAM,EAAE,GAAG,IAAI,KACvB,kBAAkB,EAqBpB,CAAC"}
1
+ {"version":3,"file":"businessHours.d.ts","sourceRoot":"","sources":["../../../../src/helpers/businessHours.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,MAW9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,MAY/C,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,GAAG,IAAI,cACZ,MAAM,KACjB,WAqIF,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,eAAO,MAAM,mBAAmB,YACrB,MAAM,EAAE,GAAG,IAAI,KACvB,kBAAkB,EAqBpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthenticateRequests.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAuthenticateRequests.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,uBAAuB,aACxB,MAAM,QAAQ,MAAM,GAAG,IAAI,CAAC,SAoDvC,CAAC"}
1
+ {"version":3,"file":"useAuthenticateRequests.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAuthenticateRequests.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,uBAAuB,aACxB,MAAM,QAAQ,MAAM,GAAG,IAAI,CAAC,SA0DvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiosinc/commons-rn",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Common Code",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -47,45 +47,51 @@ export const getTodayStatus = (
47
47
  };
48
48
  }
49
49
 
50
+ // "Local" time for the business using utcOffset in minutes (e.g., PT = -420)
50
51
  const now = new Date();
51
- const localTime = new Date(now.getTime() + (utcOffset ?? 0) * 60000);
52
+ const localTime = new Date(now.getTime() + (utcOffset ?? 0) * 60_000);
52
53
 
53
- const today = localTime.getUTCDay(); // 0-6 (Sunday-Saturday)
54
+ const today = localTime.getUTCDay(); // 0-6, Sunday=0
54
55
 
55
- // Sort periods by open time
56
- const sortedPeriods = [...periods].sort(
56
+ // Ensure a stable order
57
+ const sorted = [...periods].sort(
57
58
  (a, b) => Number(a.open.day) - Number(b.open.day)
58
59
  );
59
60
 
60
- let nextOpeningPeriod: Period | null = null;
61
+ let nextOpenDate: Date | null = null;
62
+ let nextOpenTimeStr: string | null = null;
61
63
 
62
- for (const period of sortedPeriods) {
63
- const openDay = Number(period.open.day);
64
- const closeDay = Number(period.close.day);
65
- const openTime = period.open.time;
66
- const closeTime = period.close.time;
64
+ for (const p of sorted) {
65
+ const openDay = Number(p.open.day);
66
+ const closeDay = Number(p.close.day);
67
+ const openTime = p.open.time; // "HHmm"
68
+ const closeTime = p.close.time; // "HHmm"
67
69
 
68
- // Create Date objects for open and close
70
+ // Build open & close dates relative to localTime's week
69
71
  const openDate = new Date(localTime);
70
- const closeDate = new Date(localTime);
71
-
72
- // Set open time
73
72
  openDate.setUTCDate(localTime.getUTCDate() + ((openDay - today + 7) % 7));
74
73
  openDate.setUTCHours(Number(openTime.slice(0, 2)));
75
74
  openDate.setUTCMinutes(Number(openTime.slice(2, 4)));
75
+ openDate.setUTCSeconds(0, 0);
76
76
 
77
- // Set close time
77
+ const closeDate = new Date(localTime);
78
78
  closeDate.setUTCDate(localTime.getUTCDate() + ((closeDay - today + 7) % 7));
79
79
  closeDate.setUTCHours(Number(closeTime.slice(0, 2)));
80
80
  closeDate.setUTCMinutes(Number(closeTime.slice(2, 4)));
81
+ closeDate.setUTCSeconds(0, 0);
81
82
 
82
- const isOpenNow = localTime >= openDate && localTime < closeDate;
83
+ // Handle overnight windows (close after midnight/next day)
84
+ let normalizedClose = closeDate;
85
+ if (normalizedClose <= openDate) {
86
+ normalizedClose = new Date(closeDate.getTime() + 24 * 60 * 60 * 1000);
87
+ }
83
88
 
89
+ // Is open now?
90
+ const isOpenNow = localTime >= openDate && localTime < normalizedClose;
84
91
  if (isOpenNow) {
85
92
  const minutesToClose = Math.floor(
86
- (closeDate.getTime() - localTime.getTime()) / 60000
93
+ (normalizedClose.getTime() - localTime.getTime()) / 60_000
87
94
  );
88
-
89
95
  const isClosingSoon = minutesToClose < 60;
90
96
 
91
97
  return {
@@ -100,10 +106,10 @@ export const getTodayStatus = (
100
106
  };
101
107
  }
102
108
 
109
+ // Opening soon (within 60 minutes)
103
110
  const minutesToOpen = Math.floor(
104
- (openDate.getTime() - localTime.getTime()) / 60000
111
+ (openDate.getTime() - localTime.getTime()) / 60_000
105
112
  );
106
-
107
113
  if (minutesToOpen > 0 && minutesToOpen <= 60) {
108
114
  return {
109
115
  main: t('restaurant.openingSoon'),
@@ -113,26 +119,55 @@ export const getTodayStatus = (
113
119
  };
114
120
  }
115
121
 
116
- // Track next opening period if no match yet
117
- if (
118
- !nextOpeningPeriod ||
119
- openDate <
120
- new Date(
121
- localTime.getTime() +
122
- ((Number(nextOpeningPeriod.open.day) - today + 7) % 7) * 86400000
123
- )
124
- ) {
125
- nextOpeningPeriod = period;
122
+ // Track the next future opening strictly after now
123
+ if (openDate > localTime) {
124
+ if (!nextOpenDate || openDate < nextOpenDate) {
125
+ nextOpenDate = openDate;
126
+ nextOpenTimeStr = openTime;
127
+ }
126
128
  }
127
129
  }
128
130
 
131
+ // If we didn’t find a future opening in the current week window,
132
+ // the next opening is the earliest weekly opening + 7 days.
133
+ if (!nextOpenDate) {
134
+ let earliestOpenDate: Date | null = null;
135
+ let earliestOpenTimeStr: string | null = null;
136
+ for (const p of sorted) {
137
+ const openDay = Number(p.open.day);
138
+ const openTime = p.open.time;
139
+
140
+ const openDate = new Date(localTime);
141
+ openDate.setUTCDate(localTime.getUTCDate() + ((openDay - today + 7) % 7));
142
+ openDate.setUTCHours(Number(openTime.slice(0, 2)));
143
+ openDate.setUTCMinutes(Number(openTime.slice(2, 4)));
144
+ openDate.setUTCSeconds(0, 0);
145
+
146
+ // If it's not in the future relative to localTime, push to next week
147
+ const rolled =
148
+ openDate <= localTime
149
+ ? new Date(openDate.getTime() + 7 * 24 * 60 * 60 * 1000)
150
+ : openDate;
151
+
152
+ if (!earliestOpenDate || rolled < earliestOpenDate) {
153
+ earliestOpenDate = rolled;
154
+ earliestOpenTimeStr = openTime;
155
+ }
156
+ }
157
+ nextOpenDate = earliestOpenDate;
158
+ nextOpenTimeStr = earliestOpenTimeStr;
159
+ }
160
+
161
+ const weekdayFromDate = (d: Date) => getWeekDayString(d.getUTCDay());
162
+
129
163
  return {
130
164
  main: t('restaurant.closedNow'),
131
- additional: nextOpeningPeriod
132
- ? `${t('restaurant.opensAt')} ${getWeekDayString(
133
- nextOpeningPeriod.open.day
134
- )} ${formatPeriodTime(nextOpeningPeriod.open.time)}`
135
- : undefined,
165
+ additional:
166
+ nextOpenDate && nextOpenTimeStr
167
+ ? `${t('restaurant.opensAt')} ${weekdayFromDate(
168
+ nextOpenDate
169
+ )} ${formatPeriodTime(nextOpenTimeStr)}`
170
+ : undefined,
136
171
  isOpen: false,
137
172
  statusFlag: null,
138
173
  };
@@ -4,6 +4,20 @@ import { Platform } from 'react-native';
4
4
  import Config from 'react-native-config';
5
5
  import { Alert } from '../components';
6
6
 
7
+ const logApiCall = ({
8
+ url,
9
+ }: {
10
+ method: string;
11
+ url: string;
12
+ data?: any;
13
+ status?: number;
14
+ error?: string;
15
+ }) => {
16
+ if (__DEV__) {
17
+ console.log('🚗API:', url);
18
+ }
19
+ };
20
+
7
21
  export const useAuthenticateRequests = (
8
22
  getToken: () => Promise<string | null>
9
23
  ) => {
@@ -18,6 +32,12 @@ export const useAuthenticateRequests = (
18
32
  }
19
33
  config.headers.Authorization = `Bearer ${token}`;
20
34
  }
35
+
36
+ logApiCall({
37
+ method: config.method?.toUpperCase() || 'GET',
38
+ url: config?.baseURL + (config?.url ?? ''),
39
+ data: config.data,
40
+ });
21
41
  return config;
22
42
  }
23
43
  );
@@ -74,7 +74,7 @@
74
74
  "payByCard": "Pay by card",
75
75
  "confirmCardDelete": "Confirm Delete Card",
76
76
  "cardDeleteDesc": "Are you sure you want to delete card ending in {{card}}?",
77
- "total": "Subtotal",
77
+ "total": "Total",
78
78
  "createBusiness": "Create Business",
79
79
  "selectBusiness": "Select Business",
80
80
  "searchBusiness": "Search Business",