fix: Phase 2 QA — all 25 remaining HIGH/MEDIUM/LOW issues
HIGH fixes (7): - H1: VNCdirectory admin i18n — 30+ translation keys added - H2: handleSave try/catch with error toast - H3: Free/busy accountId scoping - H4: cancelEventBookings filter by eventId - H5: Resource picker static apiFetch import - H6: Sharing-store toast messages via lastMessage state - H7: roleLabel for all resource types MEDIUM fixes (11): - M1: identitySignatureMap cleanup on delete - M2: Now-line relative positioning - M3: Radial menu disabled item keyboard nav - M4: Radial menu stable event listener via refs - M5: cancelBooking error on missing booking - M6: PasswordRow isMasked state flag - M7: Extract shared rights into lib/sharing-rights.ts - M8: VNCtalk client server-side guard - M9: Collabora configManager instead of process.env - M10: CONFIG_ENV_MAP VNCdirectory fields - M11: SENSITIVE_CONFIG_KEYS field name unification LOW fixes (7): - L1-L3: Unused imports removed - L4: aria-labels on close, clear, search, spinner - L5-L7: Comments for intentional patterns, null guard
This commit is contained in:
@@ -52,6 +52,11 @@ function getEventRange(event: CalendarEvent): EventRange {
|
||||
};
|
||||
}
|
||||
|
||||
// NOTE: this duplicates the ISO 8601 duration parsing in
|
||||
// components/calendar/event-card.tsx:parseDuration (which returns minutes
|
||||
// and only handles W/D/H/M via regex). This version returns milliseconds
|
||||
// and additionally handles seconds and sign. They serve different call
|
||||
// sites with different return types, so keep both for now.
|
||||
function parseDurationMs(duration: string): number {
|
||||
let ms = 0;
|
||||
let sign = 1;
|
||||
@@ -120,7 +125,8 @@ export async function fetchFreeBusy(
|
||||
client: IJMAPClient,
|
||||
participants: { email: string }[],
|
||||
start: Date,
|
||||
end: Date
|
||||
end: Date,
|
||||
accountId?: string
|
||||
): Promise<Map<string, FreeBusySlot[]>> {
|
||||
const result = new Map<string, FreeBusySlot[]>();
|
||||
|
||||
@@ -139,7 +145,9 @@ export async function fetchFreeBusy(
|
||||
try {
|
||||
const events = await client.queryAllCalendarEvents(
|
||||
{ after: start.toISOString(), before: end.toISOString() },
|
||||
[{ property: "start", isAscending: true }]
|
||||
[{ property: "start", isAscending: true }],
|
||||
undefined,
|
||||
accountId
|
||||
);
|
||||
|
||||
for (const event of events) {
|
||||
|
||||
Reference in New Issue
Block a user