feat!: Use new localisation setup from flutter 1.22
BREAKING CHANGE: This introduces that it might require up to 2 compiles for locals to work. Also only arb files shall be checked into git. Took 19 minutes
This commit is contained in:
parent
f6a4d2e5b5
commit
62cbc864f1
88 changed files with 489 additions and 12311 deletions
|
|
@ -1,5 +1,5 @@
|
|||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
|
||||
/// Provides extra functionality for formatting the time.
|
||||
extension DateTimeExtension on DateTime {
|
||||
|
|
|
|||
|
|
@ -1,19 +1,22 @@
|
|||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:bot_toast/bot_toast.dart';
|
||||
import 'package:famedlysdk/famedlysdk.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:fluffychat/components/matrix.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:fluffychat/utils/app_route.dart';
|
||||
import 'package:fluffychat/views/chat.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n_en.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:bot_toast/bot_toast.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:famedlysdk/famedlysdk.dart';
|
||||
import 'famedlysdk_store.dart';
|
||||
|
||||
import '../components/matrix.dart';
|
||||
import 'famedlysdk_store.dart';
|
||||
import 'matrix_locals.dart';
|
||||
|
||||
abstract class FirebaseController {
|
||||
static final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
|
||||
|
|
@ -161,8 +164,9 @@ abstract class FirebaseController {
|
|||
return null;
|
||||
}
|
||||
debugPrint('[Push] New message received');
|
||||
final i18n =
|
||||
context == null ? L10n(Platform.localeName) : L10n.of(context);
|
||||
// FIXME unable to init without context currently https://github.com/flutter/flutter/issues/67092
|
||||
// Locked on EN until issue resolved
|
||||
final i18n = context == null ? L10nEn() : L10n.of(context);
|
||||
|
||||
// Get the client
|
||||
Client client;
|
||||
|
|
@ -226,14 +230,14 @@ abstract class FirebaseController {
|
|||
|
||||
// Calculate the body
|
||||
final body = event.getLocalizedBody(
|
||||
i18n,
|
||||
MatrixLocals(i18n),
|
||||
withSenderNamePrefix: true,
|
||||
hideReply: true,
|
||||
);
|
||||
|
||||
// The person object for the android message style notification
|
||||
final person = Person(
|
||||
name: room.getLocalizedDisplayname(i18n),
|
||||
name: room.getLocalizedDisplayname(MatrixLocals(i18n)),
|
||||
icon: room.avatar == null
|
||||
? null
|
||||
: BitmapFilePathAndroidIcon(
|
||||
|
|
@ -267,7 +271,10 @@ abstract class FirebaseController {
|
|||
var platformChannelSpecifics = NotificationDetails(
|
||||
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
|
||||
await _flutterLocalNotificationsPlugin.show(
|
||||
0, room.getLocalizedDisplayname(i18n), body, platformChannelSpecifics,
|
||||
0,
|
||||
room.getLocalizedDisplayname(MatrixLocals(i18n)),
|
||||
body,
|
||||
platformChannelSpecifics,
|
||||
payload: roomId);
|
||||
|
||||
if (tempClient) {
|
||||
|
|
@ -294,7 +301,11 @@ abstract class FirebaseController {
|
|||
var initializationSettings = InitializationSettings(
|
||||
initializationSettingsAndroid, initializationSettingsIOS);
|
||||
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
|
||||
final l10n = L10n(Platform.localeName);
|
||||
|
||||
// FIXME unable to init without context currently https://github.com/flutter/flutter/issues/67092
|
||||
// Locked on en for now
|
||||
//final l10n = L10n(Platform.localeName);
|
||||
final l10n = L10nEn();
|
||||
|
||||
// Notification data and matrix data
|
||||
Map<dynamic, dynamic> data = message['data'] ?? message;
|
||||
|
|
|
|||
264
lib/utils/matrix_locals.dart
Normal file
264
lib/utils/matrix_locals.dart
Normal file
|
|
@ -0,0 +1,264 @@
|
|||
import 'package:famedlysdk/famedlysdk.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
|
||||
/// This is a temporary helper class until there is a proper solution to this with the new system
|
||||
class MatrixLocals extends MatrixLocalizations {
|
||||
final L10n l10n;
|
||||
|
||||
MatrixLocals(this.l10n);
|
||||
|
||||
@override
|
||||
String acceptedTheInvitation(String targetName) {
|
||||
return l10n.acceptedTheInvitation(targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String activatedEndToEndEncryption(String senderName) {
|
||||
return l10n.activatedEndToEndEncryption(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String answeredTheCall(String senderName) {
|
||||
return l10n.answeredTheCall(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get anyoneCanJoin => l10n.anyoneCanJoin;
|
||||
|
||||
@override
|
||||
String bannedUser(String senderName, String targetName) {
|
||||
return l10n.bannedUser(senderName, targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheChatAvatar(String senderName) {
|
||||
return l10n.changedTheChatAvatar(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheChatDescriptionTo(String senderName, String content) {
|
||||
return l10n.changedTheChatDescriptionTo(senderName, content);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheChatNameTo(String senderName, String content) {
|
||||
return l10n.changedTheChatNameTo(senderName, content);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheChatPermissions(String senderName) {
|
||||
return l10n.changedTheChatPermissions(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheDisplaynameTo(String targetName, String newDisplayname) {
|
||||
return l10n.changedTheDisplaynameTo(targetName, newDisplayname);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheGuestAccessRules(String senderName) {
|
||||
return l10n.changedTheGuestAccessRules(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheGuestAccessRulesTo(
|
||||
String senderName, String localizedString) {
|
||||
return l10n.changedTheGuestAccessRulesTo(senderName, localizedString);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheHistoryVisibility(String senderName) {
|
||||
return l10n.changedTheHistoryVisibility(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheHistoryVisibilityTo(
|
||||
String senderName, String localizedString) {
|
||||
return l10n.changedTheHistoryVisibilityTo(senderName, localizedString);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheJoinRules(String senderName) {
|
||||
return l10n.changedTheJoinRules(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheJoinRulesTo(String senderName, String localizedString) {
|
||||
return l10n.changedTheJoinRulesTo(senderName, localizedString);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheProfileAvatar(String targetName) {
|
||||
return l10n.changedTheProfileAvatar(targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheRoomAliases(String senderName) {
|
||||
return l10n.changedTheRoomAliases(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String changedTheRoomInvitationLink(String senderName) {
|
||||
return l10n.changedTheRoomInvitationLink(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get channelCorruptedDecryptError => l10n.channelCorruptedDecryptError;
|
||||
|
||||
@override
|
||||
String couldNotDecryptMessage(String errorText) {
|
||||
return l10n.couldNotDecryptMessage(errorText);
|
||||
}
|
||||
|
||||
@override
|
||||
String createdTheChat(String senderName) {
|
||||
return l10n.createdTheChat(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get emptyChat => l10n.emptyChat;
|
||||
|
||||
@override
|
||||
String get encryptionNotEnabled => l10n.encryptionNotEnabled;
|
||||
|
||||
@override
|
||||
String endedTheCall(String senderName) {
|
||||
return l10n.endedTheCall(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get fromJoining => l10n.fromJoining;
|
||||
|
||||
@override
|
||||
String get fromTheInvitation => l10n.fromTheInvitation;
|
||||
|
||||
@override
|
||||
String groupWith(String displayname) {
|
||||
return l10n.groupWith(displayname);
|
||||
}
|
||||
|
||||
@override
|
||||
String get guestsAreForbidden => l10n.guestsAreForbidden;
|
||||
|
||||
@override
|
||||
String get guestsCanJoin => l10n.guestsCanJoin;
|
||||
|
||||
@override
|
||||
String hasWithdrawnTheInvitationFor(String senderName, String targetName) {
|
||||
return l10n.hasWithdrawnTheInvitationFor(senderName, targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String invitedUser(String senderName, String targetName) {
|
||||
return l10n.invitedUser(senderName, targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get invitedUsersOnly => l10n.invitedUsersOnly;
|
||||
|
||||
@override
|
||||
String joinedTheChat(String targetName) {
|
||||
return l10n.joinedTheChat(targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String kicked(String senderName, String targetName) {
|
||||
return l10n.kicked(senderName, targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String kickedAndBanned(String senderName, String targetName) {
|
||||
return l10n.kickedAndBanned(senderName, targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get needPantalaimonWarning => l10n.needPantalaimonWarning;
|
||||
|
||||
@override
|
||||
String get noPermission => l10n.noPermission;
|
||||
|
||||
@override
|
||||
String redactedAnEvent(String senderName) {
|
||||
return l10n.redactedAnEvent(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String rejectedTheInvitation(String targetName) {
|
||||
return l10n.rejectedTheInvitation(targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String removedBy(String calcDisplayname) {
|
||||
return l10n.removedBy(calcDisplayname);
|
||||
}
|
||||
|
||||
@override
|
||||
String get roomHasBeenUpgraded => l10n.roomHasBeenUpgraded;
|
||||
|
||||
@override
|
||||
String sentAFile(String senderName) {
|
||||
return l10n.sentAFile(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAPicture(String senderName) {
|
||||
return l10n.sentAPicture(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String sentASticker(String senderName) {
|
||||
return l10n.sentASticker(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAVideo(String senderName) {
|
||||
return l10n.sentAVideo(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAnAudio(String senderName) {
|
||||
return l10n.sentAnAudio(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String sentCallInformations(String senderName) {
|
||||
return l10n.sentCallInformations(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String sharedTheLocation(String senderName) {
|
||||
return l10n.sharedTheLocation(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String startedACall(String senderName) {
|
||||
return l10n.startedACall(senderName);
|
||||
}
|
||||
|
||||
@override
|
||||
String unbannedUser(String senderName, String targetName) {
|
||||
return l10n.unbannedUser(senderName, targetName);
|
||||
}
|
||||
|
||||
@override
|
||||
String get unknownEncryptionAlgorithm => l10n.unknownEncryptionAlgorithm;
|
||||
|
||||
@override
|
||||
String unknownEvent(String typeKey) {
|
||||
return l10n.unknownEvent(typeKey);
|
||||
}
|
||||
|
||||
@override
|
||||
String userLeftTheChat(String targetName) {
|
||||
return l10n.userLeftTheChat(userLeftTheChat);
|
||||
}
|
||||
|
||||
@override
|
||||
String get visibleForAllParticipants => l10n.visibleForAllParticipants;
|
||||
|
||||
@override
|
||||
String get visibleForEveryone => l10n.visibleForEveryone;
|
||||
|
||||
@override
|
||||
String get you => l10n.you;
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import 'package:famedlysdk/famedlysdk.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
|
||||
import 'date_time_extension.dart';
|
||||
|
||||
extension PresenceExtension on Presence {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import 'package:famedlysdk/famedlysdk.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
|
||||
import 'date_time_extension.dart';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:bot_toast/bot_toast.dart';
|
||||
import 'package:fluffychat/components/dialogs/simple_dialogs.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:localstorage/localstorage.dart';
|
||||
|
||||
abstract class SentryController {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue