/* Metro module 15647; source: modules/parent_tools/RestrictedHoursManager.tsx; dependencies: [6, 7, 15, 17, 18, 10907, 1878, 5116, 1244, 2224, 1898, 10909, 694, 5188, 15642, 4860, 2] */ function _fun119810(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#119810, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:6, offset: 0x0251a42a, size: 381 bytes, params: 8, frame: 20 const env0_0 = require; const closure = function() { return FamilyCenterStore.isCurrentUserInRestrictedHours(); }; const handleScheduleUpdate = function() { checkAndUpdateModal(); scheduleUpcomingWarning(); }; const handleScreenDowntimeReminderChanged = function() { scheduleUpcomingWarning(); }; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_3 = importDefault(6) /* metro dependency 6 */; const env0_4 = importDefault(7) /* metro dependency 7 */; const env0_5 = importDefault(15) /* metro dependency 15 */; const env0_6 = importDefault(17) /* metro dependency 17 */; const env0_7 = importDefault(18) /* metro dependency 18 */; const notificationSettingsStore = importDefault(10907) /* metro dependency 10907: NotificationSettingsStore */; const userStore = importDefault(1878) /* metro dependency 1878: UserStore */; const familyCenterStore = importDefault(5116) /* metro dependency 5116: FamilyCenterStore */; let value = importDefault(4860) /* metro dependency 4860: AutomaticLifecycleManager */; value = _fun119823(value); value = new value(); (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/parent_tools/RestrictedHoursManager.tsx'); exports.default = value; exports.getCurrentRestrictedHoursState = closure; } function _isNativeReflectConstruct_119811() { // fn#119811, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:178, offset: 0x0251a5a7, size: 98 bytes, params: 1, frame: 18 var Boolean; var prototype; var valueOf; var call; var Reflect; var construct; var closure; var value; var error; try { Boolean = global.Boolean; prototype = Boolean.prototype; valueOf = prototype.valueOf; call = valueOf.call; Reflect = global.Reflect; construct = Reflect.construct; Boolean = global.Boolean; closure = function() { }; value = Reflect.apply(construct, Reflect, [Boolean, [], closure]); value = Reflect.apply(call, valueOf, [value]); var result = !value; } catch (error) { } return (_isNativeReflectConstruct_119811_isNativeReflectConstruct = function() { return !!result; })(); } function dispatchWarningIfNeeded(a0) { // fn#119815, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:485, offset: 0x0251a61c, size: 331 bytes, params: 2, frame: 25 var value3; var JS_DAY_TO_DAY_OF_WEEK; var date; var property; var moduleValue; let rule = a0.rule; const ruleId = rule.ruleId; let startAtMs = a0.startAtMs; if ('' + ruleId + ':' + startAtMs !== env0_14) { rule = a0.rule; startAtMs = a0.startAtMs; value3 = (require(1244) /* metro dependency 1244: indexNative */).intl.string((importDefault(2224) /* metro dependency 2224: FamilyCenterMessages */)['0JlDg0']); JS_DAY_TO_DAY_OF_WEEK = (require(1898) /* metro dependency 1898: FamilyCenterModels */).JS_DAY_TO_DAY_OF_WEEK; date = new global.Date(startAtMs); property = JS_DAY_TO_DAY_OF_WEEK[date.getDay()]; moduleValue = require(10909) /* metro dependency 10909: FamilyCenterRestrictedHoursUtils */; (importDefault(694) /* metro dependency 694: Dispatcher */).dispatch({type: 'RESTRICTED_HOURS_WARNING', title: value3, subtitle: ('' + moduleValue.formatDays([property]) + ' ' + (require(10909) /* metro dependency 10909: FamilyCenterRestrictedHoursUtils */).getScheduleRuleDateRange(rule)).trim()}); } } function scheduleUpcomingWarning() { // fn#119816, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:877, offset: 0x0251a767, size: 435 bytes, params: 1, frame: 21 var restrictedSchedule; var r6; var r5; var currentUser; var nextStartInfo; var minutesUntil; var value8; var value10; const value2 = null; if (value2 != env0_13) { global.clearTimeout(env0_13); } let Date = global.Date; let date = new Date(); const value5 = undefined; const familyCenterV3ExperimentModule = require(5188) /* metro dependency 5188: FamilyCenterV3Experiment */; const getIsFamilyCenterV3Enabled = familyCenterV3ExperimentModule.getIsFamilyCenterV3Enabled; let object2 = {location: 'RestrictedHoursManager'}; if (Reflect.apply(getIsFamilyCenterV3Enabled, familyCenterV3ExperimentModule, [object2])) { if (NotificationSettingsStore.screenDowntimeReminder) { currentUser = UserStore.getCurrentUser(); restrictedSchedule = value2 == currentUser ? value5 : currentUser.restrictedSchedule; if (value2 == restrictedSchedule) { r5 = value2; } else { nextStartInfo = restrictedSchedule.getNextStartInfo(date); if (value2 == nextStartInfo) { r6 = value2; } else { object2 = {}; minutesUntil = nextStartInfo.minutesUntil; object2.minutesUntil = minutesUntil; Date = global.Date; value8 = Object.create(Date.prototype, {constructor: {value: Date}}); date = new Date(date); value10 = (date instanceof Object ? date : value8).setSeconds(0, 0); minutesUntil = nextStartInfo.minutesUntil; object2.startAtMs = value10 + 60 * minutesUntil * 1000; object2.rule = nextStartInfo.rule; r6 = object2; } r5 = r6; } } else { r5 = value2; } } else { r5 = value2; } if (value2 != r5) { if (r5.minutesUntil <= 16) { dispatchWarningIfNeeded(r5); env0_13 = global.setTimeout(function() { env1_13 = null; scheduleUpcomingWarning(); }, 60000); } else { env0_13 = global.setTimeout(_fun119818, global.Math.max(0, 60 * (r5.minutesUntil - 16) * 1000)); } } return value5; } function checkAndUpdateModal() { // fn#119819, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:1603, offset: 0x0251a92f, size: 135 bytes, params: 1, frame: 14 var defaultImport; var binding; var moduleValue; const currentRestrictedHoursState = getCurrentRestrictedHoursState(); if (currentRestrictedHoursState !== env0_11) { env0_11 = currentRestrictedHoursState; defaultImport = importDefault(694) /* metro dependency 694: Dispatcher */; defaultImport.dispatch({type: 'RESTRICTED_HOURS_STATE_CHANGE', isInRestrictedHours: env0_11}); binding = env0_11; moduleValue = require(15642) /* metro dependency 15642: RestrictedHoursActionCreatorsNative */; if (binding) { moduleValue.openRestrictedHoursModal(); } else { moduleValue.closeRestrictedHoursModal(); } scheduleUpcomingWarning(); } } function handleLogout_119820() { // fn#119820, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:1867, offset: 0x0251a9b6, size: 92 bytes, params: 1, frame: 14 (importDefault(694) /* metro dependency 694: Dispatcher */).dispatch({'type': 'RESTRICTED_HOURS_STATE_CHANGE', 'isInRestrictedHours': false}); if (env0_13 != null) { global.clearTimeout(env0_13); } } function _fun119823(a0) { // fn#119823, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:2181, offset: 0x0251aa29, size: 97 bytes, params: 2, frame: 16 const closure = RestrictedHoursManager; env0_7(closure, a0); return env0_4(closure, [{key: '_initialize', value: value_119825}, {key: '_terminate', value: value_119826}]); } function RestrictedHoursManager(a0) { // fn#119824, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:2193, offset: 0x0251aa8a, size: 230 bytes, params: 2, frame: 20 var r0; var Reflect; let value = copyRestArgs(0, undefined); let binding = env1_3; binding(this, RestrictedHoursManager); const items = []; arraySpread(items, value, 0, items); value = env1_6(RestrictedHoursManager); binding = env1_5; if (_isNativeReflectConstruct_119811()) { Reflect = global.Reflect; value = Reflect.construct(value, items, env1_6(this).constructor); r0 = value; } else { value = value.apply(this, items); r0 = value; } value = binding(this, r0); const Map = global.Map; const map = new Map(); const set = map.set; const handleScheduleUpdateBinding = handleScheduleUpdate; value.stores = Reflect.apply(set, map, [UserStore, handleScheduleUpdateBinding]).set(FamilyCenterStore, handleScheduleUpdateBinding); value.actions = {POST_CONNECTION_OPEN: handleScheduleUpdateBinding, CURRENT_USER_UPDATE: handleScheduleUpdateBinding, NOTIFICATIONS_SET_SCREEN_DOWNTIME_REMINDER: handleScreenDowntimeReminderChanged, LOGOUT: handleLogout_119820}; return value; } function value_119825() { // fn#119825, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:2802, offset: 0x0251ab70, size: 143 bytes, params: 1, frame: 15 env1_11 = getCurrentRestrictedHoursState(); const defaultImport = importDefault(694) /* metro dependency 694: Dispatcher */; defaultImport.dispatch({type: 'RESTRICTED_HOURS_STATE_CHANGE', isInRestrictedHours: env1_11}); if (env1_11) { (require(15642) /* metro dependency 15642: RestrictedHoursActionCreatorsNative */).openRestrictedHoursModal(); } env1_12 = global.setInterval(checkAndUpdateModal, 60000); scheduleUpcomingWarning(); } function value_119826() { // fn#119826, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15855:3058, offset: 0x0251abff, size: 111 bytes, params: 1, frame: 13 if (env1_12 != null) { global.clearInterval(env1_12); } if (env1_13 != null) { global.clearTimeout(env1_13); } (require(15642) /* metro dependency 15642: RestrictedHoursActionCreatorsNative */).closeRestrictedHoursModal(); }