diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 759b224..a1c89cd 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -3378,5 +3378,14 @@ "enterNewChat": "Enter new chat", "approve": "Approve", "youHaveKnocked": "You have knocked", - "pleaseWaitUntilInvited": "Please wait now, until someone from the room invites you." + "pleaseWaitUntilInvited": "Please wait until someone invites you.", + "backToMainChat": "Back to main chat", + "saveChanges": "Save changes", + "createSticker": "Create sticker or emoji", + "newStickerPack": "New sticker pack", + "stickerPackNameAlreadyExists": "A sticker pack with that name already exists", + "stickerPackName": "Sticker pack name", + "attribution": "Attribution", + "useAsSticker": "Sticker", + "useAsEmoji": "Emoji" } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index fa32d04..d21b089 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -263,7 +263,9 @@ abstract class AppRoutes { pageBuilder: (context, state) => defaultPageBuilder( context, state, - const EmotesSettings(), + EmotesSettings( + roomId: state.pathParameters['roomid'], + ), ), ), ], @@ -369,7 +371,8 @@ abstract class AppRoutes { roomId: state.pathParameters['roomid']!, shareItems: shareItems, eventId: state.uri.queryParameters['event'], - showThreadRoots: state.uri.queryParameters['threads'] == 'true', + showThreadRoots: + state.uri.queryParameters['threads'] == 'true', ), ); }, @@ -491,7 +494,9 @@ abstract class AppRoutes { pageBuilder: (context, state) => defaultPageBuilder( context, state, - const EmotesSettings(), + EmotesSettings( + roomId: state.pathParameters['roomid'], + ), ), redirect: loggedOutRedirect, ), @@ -500,7 +505,9 @@ abstract class AppRoutes { pageBuilder: (context, state) => defaultPageBuilder( context, state, - const EmotesSettings(), + EmotesSettings( + roomId: state.pathParameters['roomid'], + ), ), redirect: loggedOutRedirect, ), diff --git a/lib/generated/l10n/l10n.dart b/lib/generated/l10n/l10n.dart index 2b7d798..64784dd 100644 --- a/lib/generated/l10n/l10n.dart +++ b/lib/generated/l10n/l10n.dart @@ -5172,8 +5172,62 @@ abstract class L10n { /// No description provided for @pleaseWaitUntilInvited. /// /// In en, this message translates to: - /// **'Please wait now, until someone from the room invites you.'** + /// **'Please wait until someone invites you.'** String get pleaseWaitUntilInvited; + + /// No description provided for @backToMainChat. + /// + /// In en, this message translates to: + /// **'Back to main chat'** + String get backToMainChat; + + /// No description provided for @saveChanges. + /// + /// In en, this message translates to: + /// **'Save changes'** + String get saveChanges; + + /// No description provided for @createSticker. + /// + /// In en, this message translates to: + /// **'Create sticker or emoji'** + String get createSticker; + + /// No description provided for @newStickerPack. + /// + /// In en, this message translates to: + /// **'New sticker pack'** + String get newStickerPack; + + /// No description provided for @stickerPackNameAlreadyExists. + /// + /// In en, this message translates to: + /// **'A sticker pack with that name already exists'** + String get stickerPackNameAlreadyExists; + + /// No description provided for @stickerPackName. + /// + /// In en, this message translates to: + /// **'Sticker pack name'** + String get stickerPackName; + + /// No description provided for @attribution. + /// + /// In en, this message translates to: + /// **'Attribution'** + String get attribution; + + /// No description provided for @useAsSticker. + /// + /// In en, this message translates to: + /// **'Sticker'** + String get useAsSticker; + + /// No description provided for @useAsEmoji. + /// + /// In en, this message translates to: + /// **'Emoji'** + String get useAsEmoji; } class _L10nDelegate extends LocalizationsDelegate { diff --git a/lib/generated/l10n/l10n_ar.dart b/lib/generated/l10n/l10n_ar.dart index e1d0730..e935d5e 100644 --- a/lib/generated/l10n/l10n_ar.dart +++ b/lib/generated/l10n/l10n_ar.dart @@ -2877,6 +2877,33 @@ class L10nAr extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_be.dart b/lib/generated/l10n/l10n_be.dart index ab9d829..9ec03e3 100644 --- a/lib/generated/l10n/l10n_be.dart +++ b/lib/generated/l10n/l10n_be.dart @@ -2895,6 +2895,33 @@ class L10nBe extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_bn.dart b/lib/generated/l10n/l10n_bn.dart index 9a24b92..ec0c46e 100644 --- a/lib/generated/l10n/l10n_bn.dart +++ b/lib/generated/l10n/l10n_bn.dart @@ -2895,6 +2895,33 @@ class L10nBn extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_bo.dart b/lib/generated/l10n/l10n_bo.dart index b82433d..179a627 100644 --- a/lib/generated/l10n/l10n_bo.dart +++ b/lib/generated/l10n/l10n_bo.dart @@ -2895,6 +2895,33 @@ class L10nBo extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ca.dart b/lib/generated/l10n/l10n_ca.dart index 3582f1f..33f16af 100644 --- a/lib/generated/l10n/l10n_ca.dart +++ b/lib/generated/l10n/l10n_ca.dart @@ -2923,6 +2923,33 @@ class L10nCa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_cs.dart b/lib/generated/l10n/l10n_cs.dart index 8e826c0..272643d 100644 --- a/lib/generated/l10n/l10n_cs.dart +++ b/lib/generated/l10n/l10n_cs.dart @@ -2899,6 +2899,33 @@ class L10nCs extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_de.dart b/lib/generated/l10n/l10n_de.dart index 9cac01f..b919aec 100644 --- a/lib/generated/l10n/l10n_de.dart +++ b/lib/generated/l10n/l10n_de.dart @@ -2919,6 +2919,33 @@ class L10nDe extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_el.dart b/lib/generated/l10n/l10n_el.dart index 20c7204..58351c3 100644 --- a/lib/generated/l10n/l10n_el.dart +++ b/lib/generated/l10n/l10n_el.dart @@ -2896,6 +2896,33 @@ class L10nEl extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_en.dart b/lib/generated/l10n/l10n_en.dart index d2d1335..689ffa1 100644 --- a/lib/generated/l10n/l10n_en.dart +++ b/lib/generated/l10n/l10n_en.dart @@ -2895,6 +2895,33 @@ class L10nEn extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_eo.dart b/lib/generated/l10n/l10n_eo.dart index b3f26d3..998c8ce 100644 --- a/lib/generated/l10n/l10n_eo.dart +++ b/lib/generated/l10n/l10n_eo.dart @@ -2902,6 +2902,33 @@ class L10nEo extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_es.dart b/lib/generated/l10n/l10n_es.dart index a45dc34..e0bc9ff 100644 --- a/lib/generated/l10n/l10n_es.dart +++ b/lib/generated/l10n/l10n_es.dart @@ -2924,6 +2924,33 @@ class L10nEs extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_et.dart b/lib/generated/l10n/l10n_et.dart index a1d1eaa..24d6105 100644 --- a/lib/generated/l10n/l10n_et.dart +++ b/lib/generated/l10n/l10n_et.dart @@ -2918,6 +2918,33 @@ class L10nEt extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_eu.dart b/lib/generated/l10n/l10n_eu.dart index 5695087..43015df 100644 --- a/lib/generated/l10n/l10n_eu.dart +++ b/lib/generated/l10n/l10n_eu.dart @@ -2907,6 +2907,33 @@ class L10nEu extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_fa.dart b/lib/generated/l10n/l10n_fa.dart index 9ab67e9..51a052a 100644 --- a/lib/generated/l10n/l10n_fa.dart +++ b/lib/generated/l10n/l10n_fa.dart @@ -2898,6 +2898,33 @@ class L10nFa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_fi.dart b/lib/generated/l10n/l10n_fi.dart index 49aaddc..14b3fe1 100644 --- a/lib/generated/l10n/l10n_fi.dart +++ b/lib/generated/l10n/l10n_fi.dart @@ -2904,6 +2904,33 @@ class L10nFi extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_fil.dart b/lib/generated/l10n/l10n_fil.dart index 8b2519a..733c71e 100644 --- a/lib/generated/l10n/l10n_fil.dart +++ b/lib/generated/l10n/l10n_fil.dart @@ -2901,6 +2901,33 @@ class L10nFil extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_fr.dart b/lib/generated/l10n/l10n_fr.dart index 390f730..d17925c 100644 --- a/lib/generated/l10n/l10n_fr.dart +++ b/lib/generated/l10n/l10n_fr.dart @@ -2942,6 +2942,33 @@ class L10nFr extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ga.dart b/lib/generated/l10n/l10n_ga.dart index 98784a0..83fc0a9 100644 --- a/lib/generated/l10n/l10n_ga.dart +++ b/lib/generated/l10n/l10n_ga.dart @@ -2928,6 +2928,33 @@ class L10nGa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_gl.dart b/lib/generated/l10n/l10n_gl.dart index 7e55b79..a551e9c 100644 --- a/lib/generated/l10n/l10n_gl.dart +++ b/lib/generated/l10n/l10n_gl.dart @@ -2908,6 +2908,33 @@ class L10nGl extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_he.dart b/lib/generated/l10n/l10n_he.dart index d2bd3d1..f47a813 100644 --- a/lib/generated/l10n/l10n_he.dart +++ b/lib/generated/l10n/l10n_he.dart @@ -2890,6 +2890,33 @@ class L10nHe extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_hi.dart b/lib/generated/l10n/l10n_hi.dart index e3244e3..871dd21 100644 --- a/lib/generated/l10n/l10n_hi.dart +++ b/lib/generated/l10n/l10n_hi.dart @@ -2895,6 +2895,33 @@ class L10nHi extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_hr.dart b/lib/generated/l10n/l10n_hr.dart index 034bee7..d7964ec 100644 --- a/lib/generated/l10n/l10n_hr.dart +++ b/lib/generated/l10n/l10n_hr.dart @@ -2904,6 +2904,33 @@ class L10nHr extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_hu.dart b/lib/generated/l10n/l10n_hu.dart index 6170f90..8b3bc26 100644 --- a/lib/generated/l10n/l10n_hu.dart +++ b/lib/generated/l10n/l10n_hu.dart @@ -2906,6 +2906,33 @@ class L10nHu extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ia.dart b/lib/generated/l10n/l10n_ia.dart index 7086b8d..cd8bb04 100644 --- a/lib/generated/l10n/l10n_ia.dart +++ b/lib/generated/l10n/l10n_ia.dart @@ -2895,6 +2895,33 @@ class L10nIa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_id.dart b/lib/generated/l10n/l10n_id.dart index 3560f3c..3c9854e 100644 --- a/lib/generated/l10n/l10n_id.dart +++ b/lib/generated/l10n/l10n_id.dart @@ -2910,6 +2910,33 @@ class L10nId extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ie.dart b/lib/generated/l10n/l10n_ie.dart index 0951091..7c11a2c 100644 --- a/lib/generated/l10n/l10n_ie.dart +++ b/lib/generated/l10n/l10n_ie.dart @@ -2894,6 +2894,33 @@ class L10nIe extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_it.dart b/lib/generated/l10n/l10n_it.dart index 64e13ae..231ad5e 100644 --- a/lib/generated/l10n/l10n_it.dart +++ b/lib/generated/l10n/l10n_it.dart @@ -2926,6 +2926,33 @@ class L10nIt extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ja.dart b/lib/generated/l10n/l10n_ja.dart index f43b116..7ecf3de 100644 --- a/lib/generated/l10n/l10n_ja.dart +++ b/lib/generated/l10n/l10n_ja.dart @@ -2864,6 +2864,33 @@ class L10nJa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ka.dart b/lib/generated/l10n/l10n_ka.dart index edadbbc..0995ee1 100644 --- a/lib/generated/l10n/l10n_ka.dart +++ b/lib/generated/l10n/l10n_ka.dart @@ -2897,6 +2897,33 @@ class L10nKa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ko.dart b/lib/generated/l10n/l10n_ko.dart index 07c6ee8..5ff9bfc 100644 --- a/lib/generated/l10n/l10n_ko.dart +++ b/lib/generated/l10n/l10n_ko.dart @@ -2833,6 +2833,33 @@ class L10nKo extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_lt.dart b/lib/generated/l10n/l10n_lt.dart index 5fb6cf1..c771809 100644 --- a/lib/generated/l10n/l10n_lt.dart +++ b/lib/generated/l10n/l10n_lt.dart @@ -2901,6 +2901,33 @@ class L10nLt extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_lv.dart b/lib/generated/l10n/l10n_lv.dart index db07201..89c496d 100644 --- a/lib/generated/l10n/l10n_lv.dart +++ b/lib/generated/l10n/l10n_lv.dart @@ -2913,6 +2913,33 @@ class L10nLv extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_nb.dart b/lib/generated/l10n/l10n_nb.dart index 85ae747..e4c8042 100644 --- a/lib/generated/l10n/l10n_nb.dart +++ b/lib/generated/l10n/l10n_nb.dart @@ -2898,6 +2898,33 @@ class L10nNb extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_nl.dart b/lib/generated/l10n/l10n_nl.dart index 36faaf8..dfa756f 100644 --- a/lib/generated/l10n/l10n_nl.dart +++ b/lib/generated/l10n/l10n_nl.dart @@ -2902,6 +2902,33 @@ class L10nNl extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_pl.dart b/lib/generated/l10n/l10n_pl.dart index 78154fe..5762b30 100644 --- a/lib/generated/l10n/l10n_pl.dart +++ b/lib/generated/l10n/l10n_pl.dart @@ -2912,6 +2912,33 @@ class L10nPl extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_pt.dart b/lib/generated/l10n/l10n_pt.dart index 42b3897..fccf100 100644 --- a/lib/generated/l10n/l10n_pt.dart +++ b/lib/generated/l10n/l10n_pt.dart @@ -2895,8 +2895,35 @@ class L10nPt extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } /// The translations for Portuguese, as used in Brazil (`pt_BR`). diff --git a/lib/generated/l10n/l10n_ro.dart b/lib/generated/l10n/l10n_ro.dart index eb2ffb1..2e8e700 100644 --- a/lib/generated/l10n/l10n_ro.dart +++ b/lib/generated/l10n/l10n_ro.dart @@ -2912,6 +2912,33 @@ class L10nRo extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ru.dart b/lib/generated/l10n/l10n_ru.dart index 4928dd0..976be5f 100644 --- a/lib/generated/l10n/l10n_ru.dart +++ b/lib/generated/l10n/l10n_ru.dart @@ -2902,4 +2902,32 @@ class L10nRu extends L10n { @override String get pleaseWaitUntilInvited => 'Пожалуйста, подождите когда администраторы примут Ваш запрос.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_sk.dart b/lib/generated/l10n/l10n_sk.dart index 1ee5918..232ce8e 100644 --- a/lib/generated/l10n/l10n_sk.dart +++ b/lib/generated/l10n/l10n_sk.dart @@ -2896,6 +2896,33 @@ class L10nSk extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_sl.dart b/lib/generated/l10n/l10n_sl.dart index ad30ed0..afb4162 100644 --- a/lib/generated/l10n/l10n_sl.dart +++ b/lib/generated/l10n/l10n_sl.dart @@ -2899,6 +2899,33 @@ class L10nSl extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_sr.dart b/lib/generated/l10n/l10n_sr.dart index c662fcc..6a35851 100644 --- a/lib/generated/l10n/l10n_sr.dart +++ b/lib/generated/l10n/l10n_sr.dart @@ -2891,6 +2891,33 @@ class L10nSr extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_sv.dart b/lib/generated/l10n/l10n_sv.dart index 74f06c5..c110f01 100644 --- a/lib/generated/l10n/l10n_sv.dart +++ b/lib/generated/l10n/l10n_sv.dart @@ -2905,6 +2905,33 @@ class L10nSv extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_ta.dart b/lib/generated/l10n/l10n_ta.dart index c7a0c94..b18cba0 100644 --- a/lib/generated/l10n/l10n_ta.dart +++ b/lib/generated/l10n/l10n_ta.dart @@ -2927,6 +2927,33 @@ class L10nTa extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_te.dart b/lib/generated/l10n/l10n_te.dart index f1b10e8..5da4878 100644 --- a/lib/generated/l10n/l10n_te.dart +++ b/lib/generated/l10n/l10n_te.dart @@ -2895,6 +2895,33 @@ class L10nTe extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_th.dart b/lib/generated/l10n/l10n_th.dart index 16c7d5e..d59d3c2 100644 --- a/lib/generated/l10n/l10n_th.dart +++ b/lib/generated/l10n/l10n_th.dart @@ -2897,6 +2897,33 @@ class L10nTh extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_tr.dart b/lib/generated/l10n/l10n_tr.dart index efb4d33..009ffbd 100644 --- a/lib/generated/l10n/l10n_tr.dart +++ b/lib/generated/l10n/l10n_tr.dart @@ -2904,6 +2904,33 @@ class L10nTr extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_uk.dart b/lib/generated/l10n/l10n_uk.dart index 05b2c58..95d6ff6 100644 --- a/lib/generated/l10n/l10n_uk.dart +++ b/lib/generated/l10n/l10n_uk.dart @@ -2909,6 +2909,33 @@ class L10nUk extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_vi.dart b/lib/generated/l10n/l10n_vi.dart index 0749232..8b8aee0 100644 --- a/lib/generated/l10n/l10n_vi.dart +++ b/lib/generated/l10n/l10n_vi.dart @@ -2894,6 +2894,33 @@ class L10nVi extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } diff --git a/lib/generated/l10n/l10n_zh.dart b/lib/generated/l10n/l10n_zh.dart index bbc5d60..98f1b5c 100644 --- a/lib/generated/l10n/l10n_zh.dart +++ b/lib/generated/l10n/l10n_zh.dart @@ -2792,8 +2792,35 @@ class L10nZh extends L10n { String get youHaveKnocked => 'You have knocked'; @override - String get pleaseWaitUntilInvited => - 'Please wait now, until someone from the room invites you.'; + String get pleaseWaitUntilInvited => 'Please wait until someone invites you.'; + + @override + String get backToMainChat => 'Back to main chat'; + + @override + String get saveChanges => 'Save changes'; + + @override + String get createSticker => 'Create sticker or emoji'; + + @override + String get newStickerPack => 'New sticker pack'; + + @override + String get stickerPackNameAlreadyExists => + 'A sticker pack with that name already exists'; + + @override + String get stickerPackName => 'Sticker pack name'; + + @override + String get attribution => 'Attribution'; + + @override + String get useAsSticker => 'Sticker'; + + @override + String get useAsEmoji => 'Emoji'; } /// The translations for Chinese, using the Han script (`zh_Hant`). diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index b322bea..09921ef 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -127,7 +127,7 @@ class MessageContent extends StatelessWidget { case MessageTypes.Sticker: if (event.redacted) continue textmessage; final maxSize = event.messageType == MessageTypes.Sticker - ? 128 + ? 128.0 : event.messageType == MessageTypes.Image ? 512.0 : 256.0; diff --git a/lib/pages/chat/sticker_picker_dialog.dart b/lib/pages/chat/sticker_picker_dialog.dart index 497a8d8..f5655ca 100644 --- a/lib/pages/chat/sticker_picker_dialog.dart +++ b/lib/pages/chat/sticker_picker_dialog.dart @@ -67,7 +67,9 @@ class StickerPickerDialogState extends State { GridView.builder( itemCount: imageKeys.length, gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - maxCrossAxisExtent: 128, + maxCrossAxisExtent: 84, + mainAxisSpacing: 8.0, + crossAxisSpacing: 8.0, ), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), @@ -163,4 +165,4 @@ class StickerPickerDialogState extends State { ), ); } -} \ No newline at end of file +} diff --git a/lib/pages/settings_emotes/settings_emotes.dart b/lib/pages/settings_emotes/settings_emotes.dart index 3462acf..fb7dc70 100644 --- a/lib/pages/settings_emotes/settings_emotes.dart +++ b/lib/pages/settings_emotes/settings_emotes.dart @@ -3,16 +3,15 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:collection/collection.dart'; -import 'package:extera_next/generated/l10n/l10n.dart'; -import 'package:go_router/go_router.dart'; import 'package:http/http.dart' hide Client; import 'package:matrix/matrix.dart'; +import 'package:extera_next/generated/l10n/l10n.dart'; import 'package:extera_next/utils/client_manager.dart'; import 'package:extera_next/utils/file_selector.dart'; import 'package:extera_next/utils/matrix_sdk_extensions/matrix_file_extension.dart'; import 'package:extera_next/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:extera_next/widgets/adaptive_dialogs/show_text_input_dialog.dart'; import 'package:extera_next/widgets/future_loading_dialog.dart'; import '../../widgets/matrix.dart'; import 'import_archive_dialog.dart'; @@ -22,24 +21,53 @@ import 'package:archive/archive.dart' if (dart.library.io) 'package:archive/archive_io.dart'; class EmotesSettings extends StatefulWidget { - const EmotesSettings({super.key}); + final String? roomId; + const EmotesSettings({required this.roomId, super.key}); @override EmotesSettingsController createState() => EmotesSettingsController(); } class EmotesSettingsController extends State { - String? get roomId => GoRouterState.of(context).pathParameters['roomid']; + late final Room? room; - Room? get room => - roomId != null ? Matrix.of(context).client.getRoomById(roomId!) : null; + String? stateKey; - String? get stateKey => GoRouterState.of(context).pathParameters['state_key']; + List? get packKeys { + final room = this.room; + if (room == null) return null; + final keys = room.states['im.ponies.room_emotes']?.keys.toList() ?? []; + keys.sort(); + return keys; + } + + @override + void initState() { + super.initState(); + room = widget.roomId != null + ? Matrix.of(context).client.getRoomById(widget.roomId!) + : null; + setStateKey(packKeys?.firstOrNull, reset: false); + } + + void setStateKey(String? key, {reset = true}) { + stateKey = key; + + final event = key == null + ? null + : room?.getState( + 'im.ponies.room_emotes', + key, + ); + final eventPack = event?.content.tryGetMap('pack'); + packDisplayNameController.text = + eventPack?.tryGet('display_name') ?? ''; + packAttributionController.text = + eventPack?.tryGet('attribution') ?? ''; + if (reset) resetAction(); + } bool showSave = false; - TextEditingController newImageCodeController = TextEditingController(); - ValueNotifier newImageController = - ValueNotifier(null); ImagePackContent _getPack() { final client = Matrix.of(context).client; @@ -69,25 +97,25 @@ class EmotesSettingsController extends State { return; } final client = Matrix.of(context).client; - if (room != null) { - await showFutureLoadingDialog( - context: context, - future: () => client.setRoomStateWithKey( - room!.id, - 'im.ponies.room_emotes', - stateKey ?? '', - pack!.toJson(), - ), - ); - } else { - await showFutureLoadingDialog( - context: context, - future: () => client.setAccountData( - client.userID!, - 'im.ponies.user_emotes', - pack!.toJson(), - ), - ); + final result = await showFutureLoadingDialog( + context: context, + future: () => room != null + ? client.setRoomStateWithKey( + room!.id, + 'im.ponies.room_emotes', + stateKey ?? '', + pack!.toJson(), + ) + : client.setAccountData( + client.userID!, + 'im.ponies.user_emotes', + pack!.toJson(), + ), + ); + if (!result.isError) { + setState(() { + showSave = false; + }); } } @@ -123,17 +151,56 @@ class EmotesSettingsController extends State { setState(() {}); } + final TextEditingController packDisplayNameController = + TextEditingController(); + + final TextEditingController packAttributionController = + TextEditingController(); + void removeImageAction(String oldImageCode) => setState(() { pack!.images.remove(oldImageCode); showSave = true; }); + void toggleUsage(String imageCode, ImagePackUsage usage) { + setState(() { + final usages = + pack!.images[imageCode]!.usage ??= List.from(ImagePackUsage.values); + if (!usages.remove(usage)) usages.add(usage); + showSave = true; + }); + } + + void submitDisplaynameAction() { + if (readonly) return; + packDisplayNameController.text = packDisplayNameController.text.trim(); + final input = packDisplayNameController.text; + + setState(() { + pack!.pack.displayName = input; + showSave = true; + }); + } + + void submitAttributionAction() { + if (readonly) return; + packAttributionController.text = packAttributionController.text.trim(); + final input = packAttributionController.text; + + setState(() { + pack!.pack.attribution = input; + showSave = true; + }); + } + void submitImageAction( String oldImageCode, - String imageCode, ImagePackImageContent image, TextEditingController controller, ) { + controller.text = controller.text.trim().replaceAll(' ', '-'); + final imageCode = controller.text; + if (imageCode == oldImageCode) return; if (pack!.images.keys.any((k) => k == imageCode && k != oldImageCode)) { controller.text = oldImageCode; showOkAlertDialog( @@ -169,8 +236,60 @@ class EmotesSettingsController extends State { ?.tryGetMap(stateKey ?? '') != null; - bool get readonly => - room == null ? false : !(room!.canSendEvent('im.ponies.room_emotes')); + bool get readonly => room == null + ? false + : room?.canChangeStateEvent('im.ponies.room_emotes') == false; + + void resetAction() { + setState(() { + _pack = _getPack(); + showSave = false; + }); + } + + void createImagePack() async { + final room = this.room; + if (room == null) throw Exception('Cannot create image pack without room'); + + final input = await showTextInputDialog( + context: context, + title: L10n.of(context).newStickerPack, + hintText: L10n.of(context).name, + okLabel: L10n.of(context).create, + ); + final name = input?.trim(); + if (name == null || name.isEmpty) return; + if (!mounted) return; + + final keyName = name.toLowerCase().replaceAll(' ', '_'); + + if (packKeys?.contains(name) ?? false) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(L10n.of(context).stickerPackNameAlreadyExists), + ), + ); + return; + } + + await showFutureLoadingDialog( + context: context, + future: () => room.client.setRoomStateWithKey( + room.id, + 'im.ponies.room_emotes', + keyName, + { + 'images': {}, + 'pack': {'display_name': name}, + }, + ), + ); + if (!mounted) return; + setState(() {}); + await room.client.oneShotSync(); + if (!mounted) return; + setState(() {}); + } void saveAction() async { await save(context); @@ -179,95 +298,63 @@ class EmotesSettingsController extends State { }); } - void addImageAction() async { - if (newImageCodeController.text.isEmpty || - newImageController.value == null) { - await showOkAlertDialog( - useRootNavigator: false, - context: context, - title: L10n.of(context).emoteWarnNeedToPick, - okLabel: L10n.of(context).ok, - ); - return; - } - final imageCode = newImageCodeController.text; - if (pack!.images.containsKey(imageCode)) { - await showOkAlertDialog( - useRootNavigator: false, - context: context, - title: L10n.of(context).emoteExists, - okLabel: L10n.of(context).ok, - ); - return; - } - if (!RegExp(r'^[-\w]+$').hasMatch(imageCode)) { - await showOkAlertDialog( - useRootNavigator: false, - context: context, - title: L10n.of(context).emoteInvalid, - okLabel: L10n.of(context).ok, - ); - return; - } - pack!.images[imageCode] = newImageController.value!; - await save(context); - setState(() { - newImageCodeController.text = ''; - newImageController.value = null; - showSave = false; - }); - } - - void imagePickerAction( - ValueNotifier controller, - ) async { - final result = await selectFiles( + void createStickers() async { + final pickedFiles = await selectFiles( context, type: FileSelectorType.images, + allowMultiple: true, ); - final pickedFile = result.firstOrNull; - if (pickedFile == null) return; - var file = MatrixImageFile( - bytes: await pickedFile.readAsBytes(), - name: pickedFile.name, - ); - try { - file = (await file.generateThumbnail( - nativeImplementations: ClientManager.nativeImplementations, - ))!; - } catch (e, s) { - Logs().w('Unable to create thumbnail', e, s); - } - final uploadResp = await showFutureLoadingDialog( + if (pickedFiles.isEmpty) return; + if (!mounted) return; + + await showFutureLoadingDialog( context: context, - future: () => Matrix.of(context).client.uploadContent( - file.bytes, - filename: file.name, - contentType: file.mimeType, - ), - ); - if (uploadResp.error == null) { - setState(() { - final info = { - ...file.info, - }; - // normalize width / height to 256, required for stickers - if (info['w'] is int && info['h'] is int) { - final ratio = info['w'] / info['h']; - if (info['w'] > info['h']) { - info['w'] = 256; - info['h'] = (256.0 / ratio).round(); - } else { - info['h'] = 256; - info['w'] = (ratio * 256.0).round(); - } + futureWithProgress: (setProgress) async { + for (final (i, pickedFile) in pickedFiles.indexed) { + setProgress(i / pickedFiles.length); + var file = MatrixImageFile( + bytes: await pickedFile.readAsBytes(), + name: pickedFile.name, + ); + file = await file.generateThumbnail( + nativeImplementations: ClientManager.nativeImplementations, + ) ?? + file; + final uri = await Matrix.of(context).client.uploadContent( + file.bytes, + filename: file.name, + contentType: file.mimeType, + ); + + setState(() { + final info = { + ...file.info, + }; + // normalize width / height to 256, required for stickers + if (info['w'] is int && info['h'] is int) { + final ratio = info['w'] / info['h']; + if (info['w'] > info['h']) { + info['w'] = 256; + info['h'] = (256.0 / ratio).round(); + } else { + info['h'] = 256; + info['w'] = (ratio * 256.0).round(); + } + } + final imageCode = pickedFile.name.split('.').first; + pack!.images[imageCode] = + ImagePackImageContent.fromJson({ + 'url': uri.toString(), + 'info': info, + }); + }); } - controller.value = ImagePackImageContent.fromJson({ - 'url': uploadResp.result.toString(), - 'info': info, - }); - }); - } + }, + ); + + setState(() { + showSave = true; + }); } @override @@ -335,4 +422,4 @@ class EmotesSettingsController extends State { }, ); } -} +} \ No newline at end of file diff --git a/lib/pages/settings_emotes/settings_emotes_view.dart b/lib/pages/settings_emotes/settings_emotes_view.dart index 3f50e75..47a6f8c 100644 --- a/lib/pages/settings_emotes/settings_emotes_view.dart +++ b/lib/pages/settings_emotes/settings_emotes_view.dart @@ -1,12 +1,13 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:extera_next/generated/l10n/l10n.dart'; import 'package:matrix/matrix.dart'; +import 'package:extera_next/generated/l10n/l10n.dart'; import 'package:extera_next/utils/platform_infos.dart'; import 'package:extera_next/widgets/layouts/max_width_body.dart'; import 'package:extera_next/widgets/mxc_image.dart'; +import 'package:extera_next/widgets/mxc_image_viewer.dart'; import '../../widgets/matrix.dart'; import 'settings_emotes.dart'; @@ -19,107 +20,186 @@ class EmotesSettingsView extends StatelessWidget { @override Widget build(BuildContext context) { + if (controller.widget.roomId != null && controller.room == null) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).oopsSomethingWentWrong), + ), + body: Center( + child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat), + ), + ); + } final theme = Theme.of(context); final client = Matrix.of(context).client; final imageKeys = controller.pack!.images.keys.toList(); + final packKeys = controller.packKeys; + if (packKeys != null && packKeys.isEmpty) { + packKeys.add(''); + } + return Scaffold( appBar: AppBar( - leading: const Center(child: BackButton()), - title: Text(L10n.of(context).customEmojisAndStickers), + automaticallyImplyLeading: !controller.showSave, + title: controller.showSave + ? TextButton( + onPressed: controller.resetAction, + child: Text(L10n.of(context).cancel), + ) + : Text(L10n.of(context).customEmojisAndStickers), actions: [ - PopupMenuButton( - onSelected: (value) { - switch (value) { - case PopupMenuEmojiActions.export: - controller.exportAsZip(); - break; - case PopupMenuEmojiActions.import: - controller.importEmojiZip(); - break; - } - }, - enabled: !controller.readonly, - itemBuilder: (context) => [ - PopupMenuItem( - value: PopupMenuEmojiActions.import, - child: Text(L10n.of(context).importFromZipFile), + if (controller.showSave) + ElevatedButton( + onPressed: () => controller.save(context), + style: ElevatedButton.styleFrom( + backgroundColor: theme.colorScheme.primary, + foregroundColor: theme.colorScheme.onPrimary, ), - PopupMenuItem( - value: PopupMenuEmojiActions.export, - child: Text(L10n.of(context).exportEmotePack), - ), - ], - ), - ], - ), - floatingActionButton: controller.showSave - ? FloatingActionButton( - onPressed: controller.saveAction, - child: const Icon(Icons.save_outlined, color: Colors.white), + child: Text(L10n.of(context).saveChanges), ) - : null, + else + PopupMenuButton( + useRootNavigator: true, + onSelected: (value) { + switch (value) { + case PopupMenuEmojiActions.export: + controller.exportAsZip(); + break; + case PopupMenuEmojiActions.import: + controller.importEmojiZip(); + break; + } + }, + enabled: !controller.readonly, + itemBuilder: (context) => [ + PopupMenuItem( + value: PopupMenuEmojiActions.import, + child: Text(L10n.of(context).importFromZipFile), + ), + if (imageKeys.isNotEmpty) + PopupMenuItem( + value: PopupMenuEmojiActions.export, + child: Text(L10n.of(context).exportEmotePack), + ), + ], + ), + ], + bottom: packKeys == null + ? null + : PreferredSize( + preferredSize: const Size.fromHeight(48), + child: Padding( + padding: const EdgeInsets.all(4.0), + child: SizedBox( + height: 40, + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: packKeys.length + 1, + itemBuilder: (context, i) { + if (i == 0) { + if (controller.readonly) { + return const SizedBox.shrink(); + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4.0, + ), + child: FilterChip( + label: const Icon( + Icons.add_outlined, + size: 20, + ), + onSelected: controller.showSave + ? null + : (_) => controller.createImagePack(), + ), + ); + } + i--; + final key = packKeys[i]; + final event = controller.room + ?.getState('im.ponies.room_emotes', packKeys[i]); + + final eventPack = + event?.content.tryGetMap('pack'); + final packName = + eventPack?.tryGet('display_name') ?? + eventPack?.tryGet('name') ?? + (key.isNotEmpty ? key : 'Default'); + + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4.0, + ), + child: FilterChip( + label: Text(packName), + selected: controller.stateKey == key || + (controller.stateKey == null && key.isEmpty), + onSelected: controller.showSave + ? null + : (_) => controller.setStateKey(key), + ), + ); + }, + ), + ), + ), + ), + ), body: MaxWidthBody( child: Column( mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - if (!controller.readonly) - Container( - padding: const EdgeInsets.symmetric( - vertical: 8.0, - ), - child: ListTile( - leading: Container( - width: 180.0, - height: 38, - padding: const EdgeInsets.symmetric(horizontal: 8), - decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(10)), - color: theme.secondaryHeaderColor, - ), - child: TextField( - controller: controller.newImageCodeController, - autocorrect: false, - minLines: 1, - maxLines: 1, - decoration: InputDecoration( - hintText: L10n.of(context).emoteShortcode, - prefixText: ': ', - suffixText: ':', - prefixStyle: TextStyle( - color: theme.colorScheme.secondary, - fontWeight: FontWeight.bold, - ), - suffixStyle: TextStyle( - color: theme.colorScheme.secondary, - fontWeight: FontWeight.bold, - ), - border: InputBorder.none, - ), - ), - ), - title: _ImagePicker( - controller: controller.newImageController, - onPressed: controller.imagePickerAction, - ), - trailing: InkWell( - onTap: controller.addImageAction, - child: const Icon( - Icons.add_outlined, - color: Colors.green, - size: 32.0, - ), + if (controller.room != null) ...[ + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: TextField( + maxLength: 256, + controller: controller.packDisplayNameController, + readOnly: controller.readonly, + onSubmitted: (_) => controller.submitDisplaynameAction(), + decoration: InputDecoration( + counter: const SizedBox.shrink(), + hintText: controller.stateKey, + labelText: L10n.of(context).stickerPackName, ), ), ), - if (controller.room != null) + const SizedBox(height: 8), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: TextField( + maxLength: 256, + controller: controller.packAttributionController, + readOnly: controller.readonly, + onSubmitted: (_) => controller.submitAttributionAction(), + decoration: InputDecoration( + counter: const SizedBox.shrink(), + labelText: L10n.of(context).attribution, + ), + ), + ), + ], + if (!controller.readonly) ...[ + Padding( + padding: const EdgeInsets.all(16.0), + child: ElevatedButton.icon( + onPressed: controller.createStickers, + icon: const Icon(Icons.upload_outlined), + label: Text(L10n.of(context).createSticker), + ), + ), + const Divider(), + ], + if (controller.room != null && imageKeys.isNotEmpty) SwitchListTile.adaptive( title: Text(L10n.of(context).enableEmotesGlobally), value: controller.isGloballyActive(client), onChanged: controller.setIsGloballyActive, ), - if (!controller.readonly || controller.room != null) - const Divider(), imageKeys.isEmpty ? Center( child: Padding( @@ -135,11 +215,8 @@ class EmotesSettingsView extends StatelessWidget { physics: const NeverScrollableScrollPhysics(), separatorBuilder: (BuildContext context, int i) => const SizedBox.shrink(), - itemCount: imageKeys.length + 1, + itemCount: imageKeys.length, itemBuilder: (BuildContext context, int i) { - if (i >= imageKeys.length) { - return Container(height: 70); - } final imageCode = imageKeys[i]; final image = controller.pack!.images[imageCode]!; final textEditingController = TextEditingController(); @@ -147,80 +224,110 @@ class EmotesSettingsView extends StatelessWidget { final useShortCuts = (PlatformInfos.isWeb || PlatformInfos.isDesktop); return ListTile( - leading: Container( - width: 180.0, - height: 38, - padding: const EdgeInsets.symmetric(horizontal: 8), - decoration: BoxDecoration( - borderRadius: - const BorderRadius.all(Radius.circular(10)), - color: theme.secondaryHeaderColor, - ), - child: Shortcuts( - shortcuts: !useShortCuts - ? {} - : { - LogicalKeySet(LogicalKeyboardKey.enter): - SubmitLineIntent(), - }, - child: Actions( - actions: !useShortCuts - ? {} - : { - SubmitLineIntent: CallbackAction( - onInvoke: (i) { - controller.submitImageAction( - imageCode, - textEditingController.text, - image, - textEditingController, - ); - return null; + title: Row( + children: [ + Expanded( + child: Shortcuts( + shortcuts: !useShortCuts + ? {} + : { + LogicalKeySet(LogicalKeyboardKey.enter): + SubmitLineIntent(), + }, + child: Actions( + actions: !useShortCuts + ? {} + : { + SubmitLineIntent: CallbackAction( + onInvoke: (i) { + controller.submitImageAction( + imageCode, + image, + textEditingController, + ); + return null; + }, + ), }, + child: TextField( + readOnly: controller.readonly, + controller: textEditingController, + autocorrect: false, + minLines: 1, + maxLines: 1, + maxLength: 128, + decoration: InputDecoration( + hintText: L10n.of(context).emoteShortcode, + prefixText: ': ', + suffixText: ':', + counter: const SizedBox.shrink(), + filled: false, + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors.transparent, + ), ), - }, - child: TextField( - readOnly: controller.readonly, - controller: textEditingController, - autocorrect: false, - minLines: 1, - maxLines: 1, - decoration: InputDecoration( - hintText: L10n.of(context).emoteShortcode, - prefixText: ': ', - suffixText: ':', - prefixStyle: TextStyle( - color: theme.colorScheme.secondary, - fontWeight: FontWeight.bold, + ), + onSubmitted: (s) => + controller.submitImageAction( + imageCode, + image, + textEditingController, + ), ), - suffixStyle: TextStyle( - color: theme.colorScheme.secondary, - fontWeight: FontWeight.bold, - ), - border: InputBorder.none, - ), - onSubmitted: (s) => - controller.submitImageAction( - imageCode, - s, - image, - textEditingController, ), ), ), - ), + if (!controller.readonly) + PopupMenuButton( + onSelected: (usage) => controller.toggleUsage( + imageCode, + usage, + ), + itemBuilder: (context) => [ + PopupMenuItem( + value: ImagePackUsage.sticker, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (image.usage?.contains( + ImagePackUsage.sticker, + ) ?? + true) + const Icon(Icons.check_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).useAsSticker), + ], + ), + ), + PopupMenuItem( + value: ImagePackUsage.emoticon, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (image.usage?.contains( + ImagePackUsage.emoticon, + ) ?? + true) + const Icon(Icons.check_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).useAsEmoji), + ], + ), + ), + ], + icon: const Icon(Icons.edit_outlined), + ), + ], ), - title: _EmoteImage(image.url), + leading: _EmoteImage(image.url), trailing: controller.readonly ? null - : InkWell( - onTap: () => + : IconButton( + tooltip: L10n.of(context).delete, + onPressed: () => controller.removeImageAction(imageCode), - child: const Icon( - Icons.delete_outlined, - color: Colors.red, - size: 32.0, - ), + icon: const Icon(Icons.delete_outlined), ), ); }, @@ -239,43 +346,26 @@ class _EmoteImage extends StatelessWidget { @override Widget build(BuildContext context) { - const size = 38.0; - return SizedBox.square( - dimension: size, + const size = 44.0; + final key = 'sticker_preview_$mxc'; + return InkWell( + borderRadius: BorderRadius.circular(4), + onTap: () => showDialog( + context: context, + builder: (_) => MxcImageViewer(mxc), + ), child: MxcImage( + key: ValueKey(key), + cacheKey: key, uri: mxc, fit: BoxFit.contain, width: size, height: size, - isThumbnail: false, + isThumbnail: true, + animated: true, ), ); } } -class _ImagePicker extends StatefulWidget { - final ValueNotifier controller; - - final void Function(ValueNotifier) onPressed; - - const _ImagePicker({required this.controller, required this.onPressed}); - - @override - _ImagePickerState createState() => _ImagePickerState(); -} - -class _ImagePickerState extends State<_ImagePicker> { - @override - Widget build(BuildContext context) { - if (widget.controller.value == null) { - return ElevatedButton( - onPressed: () => widget.onPressed(widget.controller), - child: Text(L10n.of(context).pickImage), - ); - } else { - return _EmoteImage(widget.controller.value!.url); - } - } -} - -class SubmitLineIntent extends Intent {} +class SubmitLineIntent extends Intent {} \ No newline at end of file diff --git a/lib/widgets/future_loading_dialog.dart b/lib/widgets/future_loading_dialog.dart index 3460c4a..04bb8f3 100644 --- a/lib/widgets/future_loading_dialog.dart +++ b/lib/widgets/future_loading_dialog.dart @@ -3,8 +3,8 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:async/async.dart'; -import 'package:extera_next/generated/l10n/l10n.dart'; +import 'package:extera_next/generated/l10n/l10n.dart'; import 'package:extera_next/utils/localized_exception_extension.dart'; import 'package:extera_next/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; @@ -14,7 +14,8 @@ import 'package:extera_next/widgets/adaptive_dialogs/adaptive_dialog_action.dart /// null. Future> showFutureLoadingDialog({ required BuildContext context, - required Future Function() future, + Future Function()? future, + Future Function(void Function(double?) setProgress)? futureWithProgress, String? title, String? backLabel, bool barrierDismissible = false, @@ -22,7 +23,10 @@ Future> showFutureLoadingDialog({ ExceptionContext? exceptionContext, bool ignoreError = false, }) async { - final futureExec = future(); + assert(future != null || futureWithProgress != null); + final onProgressStream = StreamController(); + final futureExec = + futureWithProgress?.call(onProgressStream.add) ?? future!(); final resultFuture = ResultFuture(futureExec); if (delay) { @@ -46,6 +50,7 @@ Future> showFutureLoadingDialog({ title: title, backLabel: backLabel, exceptionContext: exceptionContext, + onProgressStream: onProgressStream.stream, ), ); return result ?? @@ -60,6 +65,7 @@ class LoadingDialog extends StatefulWidget { final String? backLabel; final Future future; final ExceptionContext? exceptionContext; + final Stream onProgressStream; const LoadingDialog({ super.key, @@ -67,6 +73,7 @@ class LoadingDialog extends StatefulWidget { this.title, this.backLabel, this.exceptionContext, + required this.onProgressStream, }); @override @@ -110,7 +117,13 @@ class LoadingDialogState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ if (exception == null) ...[ - const CircularProgressIndicator.adaptive(), + StreamBuilder( + stream: widget.onProgressStream, + builder: (context, snapshot) => + CircularProgressIndicator.adaptive( + value: snapshot.data, + ), + ), const SizedBox(width: 20), ], Expanded( @@ -145,4 +158,4 @@ extension DeprecatedApiAccessExtension on Result { T? get result => asValue?.value; Object? get error => asError?.error; -} +} \ No newline at end of file diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index b1a7b59..81dc51b 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -98,9 +98,9 @@ include(flutter/generated_plugins.cmake) # By default, "installing" just makes a relocatable bundle in the build # directory. set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) +#if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() +#endif() # Start with a clean build bundle directory every time. install(CODE " diff --git a/pubspec.lock b/pubspec.lock index 9f172c7..bcbadc4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1227,10 +1227,10 @@ packages: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" mgrs_dart: dependency: transitive description: @@ -2016,26 +2016,26 @@ packages: dependency: transitive description: name: test - sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" url: "https://pub.dev" source: hosted - version: "1.26.2" + version: "1.26.3" test_api: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.6" + version: "0.7.7" test_core: dependency: transitive description: name: test_core - sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" url: "https://pub.dev" source: hosted - version: "0.6.11" + version: "0.6.12" timezone: dependency: transitive description: