Files
discord-decomp/modules/parent_tools/FamilyCenterRestrictedHoursUtils.tsx
T
2026-11-01 12:12:55 +02:00

161 lines
4.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Metro module 10247 (f10248).
import { DayOfWeek } from "../../_bundle/Module1892";
import { intl } from "../../intl/index.native";
import FamilyCenter_messages from "./FamilyCenter.messages";
let c6836_3, c6836_4, c6836_5, c6836_6, formatDays, getScheduleRuleDateRange;
const setsEqual = function setsEqual(set, a1) {
if (set.size !== a1.size) {
return false;
}
for (const item of set) {
if (a1.has(item)) {
continue;
}
return false;
}
return true;
};
formatDays = function formatDays(days) {
const set = new Set(days);
let c17802_0 = set;
if (setsEqual(set, c6836_6)) {
return intl.string(FamilyCenter_messages.bPjqd1);
}
if (setsEqual(set, c6836_4)) {
return intl.string(FamilyCenter_messages["4dr9L9"]);
}
if (setsEqual(set, c6836_5)) {
return intl.string(FamilyCenter_messages["6lTTJ+"]);
}
let c17802_1 = new Intl.DateTimeFormat(intl.currentLocale, {
weekday: "short"
});
return c6836_3.map((item, index) => c17802_0.has(item) ? c17802_1.format(new Date(2025, 0, 5 + index)) : null).filter((item) => item !== null).join(", ");
};
getScheduleRuleDateRange = function getScheduleRuleDateRange(rule) {
const r4 = rule.startTime != null;
let r23 = "";
if (r4) {
const r24 = rule.endTime != null;
r23 = "";
if (r24) {
const startTime = rule.startTime;
const r39 = new Intl.DateTimeFormat(intl.currentLocale, {
hour: "numeric",
minute: "2-digit"
}).format(new Date(2025, 0, 1, startTime.hours, startTime.minutes));
const endTime = rule.endTime;
r23 = `${r39} – ${new Intl.DateTimeFormat(intl.currentLocale, {
hour: "numeric",
minute: "2-digit"
}).format(new Date(2025, 0, 1, endTime.hours, endTime.minutes))}`;
}
}
return r23;
};
c6836_3 = [DayOfWeek.SUNDAY, DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY];
c6836_4 = new Set(c6836_3.slice(1, 6));
c6836_5 = new Set([c6836_3[0], c6836_3[6]]);
c6836_6 = new Set(c6836_3);
export { c6836_3 as DAYS_ORDERED };
export function getShortDayLabels(a0) {
let c17803_0 = new Intl.DateTimeFormat(intl.currentLocale, {
weekday: a0
});
return c6836_3.map((item, index) => c17803_0.format(new Date(2025, 0, 5 + index)));
}
export function formatTime(a0) {
return new Intl.DateTimeFormat(intl.currentLocale, {
hour: "numeric",
minute: "2-digit"
}).format(new Date(2025, 0, 1, a0.hours, a0.minutes));
}
export { formatDays };
export function timeToMinutes(a0) {
return 60 * a0.hours + a0.minutes;
}
export function formatDuration(a0) {
const hours = a0 / 60;
return Number.isInteger(hours) ? intl.formatToPlainString(FamilyCenter_messages.hFDcmZ, {
hours
}) : intl.formatToPlainString(FamilyCenter_messages.wcrXLM, {
hours: Math.floor(hours)
});
}
export { getScheduleRuleDateRange };
export function formatRestrictedScheduleInAppSubtitle(a0) {
if (a0.startTime != null && a0.endTime != null) {
const days = formatDays(a0.days);
const startTime = a0.startTime;
const startTime3 = new Intl.DateTimeFormat(intl.currentLocale, {
hour: "numeric",
minute: "2-digit"
}).format(new Date(2025, 0, 1, startTime.hours, startTime.minutes));
const endTime = a0.endTime;
const endTime3 = new Intl.DateTimeFormat(intl.currentLocale, {
hour: "numeric",
minute: "2-digit"
}).format(new Date(2025, 0, 1, endTime.hours, endTime.minutes));
const startTime2 = a0.startTime;
const r66 = 60 * startTime2.hours + startTime2.minutes;
const endTime2 = a0.endTime;
return intl.formatToPlainString(r66 > 60 * endTime2.hours + endTime2.minutes ? FamilyCenter_messages.OxveI8 : FamilyCenter_messages["ERTn+E"], {
days,
startTime: startTime3,
endTime: endTime3
});
}
return null;
}
export function sortRulesByStartTime(a0) {
return a0.slice().sort((a, b) => {
let r7 = a.startTime?.hours;
if (r7 == null) {
r7 = 0;
}
const r1 = 60 * r7;
let r12 = a.startTime?.minutes;
if (r12 == null) {
r12 = 0;
}
const r14 = r1 + r12;
let r16 = b.startTime?.hours;
if (r16 == null) {
r16 = 0;
}
const r17 = 60 * r16;
let r5 = b.startTime?.minutes;
if (r5 == null) {
r5 = 0;
}
return r14 - (r17 + r5);
});
}
export function toTimeProto(a0) {
return {
hours: a0.hours,
minutes: a0.minutes,
seconds: 0,
nanos: 0
};
}
export function computeOverlappingInfo(c17804_0, c17804_1, c17804_2) {
const conflictingEntries = [];
let c17804_3 = conflictingEntries;
c6836_3.forEach((item, index) => {
let c26639_0 = item;
if (c17804_0.has(item)) {
const r11 = c17804_1.find((item) => item.days.includes(c26639_0));
if (r11 != null) {
c17804_3.push({
dayLabel: c17804_2[index],
timeRange: getScheduleRuleDateRange(r11)
});
}
}
});
return {
conflictingEntries
};
}