TF-2859 Add language when reply calendar invitation

This commit is contained in:
DatDang
2024-05-17 14:44:36 +07:00
committed by Dat H. Pham
parent c2979429cf
commit 2e68e7df7d
10 changed files with 161 additions and 36 deletions
@@ -1,6 +1,9 @@
import 'dart:ui';
import 'package:core/presentation/extensions/uri_extension.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/capability/calendar_event_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
import 'package:jmap_dart_client/jmap/core/capability/empty_capability.dart';
@@ -63,4 +66,35 @@ extension SessionExtension on Session {
}
throw NotFoundPersonalAccountException();
}
({
bool isAvailable,
CalendarEventCapability? calendarEventCapability
}) validateCalendarEventCapability(AccountId accountId) {
final capability = getCapabilityProperties<CalendarEventCapability>(
accountId,
CapabilityIdentifier.jamesCalendarEvent);
return (isAvailable: capability != null, calendarEventCapability: capability);
}
String? getLanguageForCalendarEvent(
Locale locale,
AccountId accountId,
) {
final validation = validateCalendarEventCapability(accountId);
if (!validation.isAvailable) return null;
final supportedLanguages = validation.calendarEventCapability!.replySupportedLanguage;
if (supportedLanguages == null) return null;
final currentLanguage = locale.languageCode;
if (supportedLanguages.contains(currentLanguage)) {
return currentLanguage;
} else if (supportedLanguages.contains('en')) {
return 'en';
} else {
return supportedLanguages.firstOrNull;
}
}
}