new UX for emote settings
This commit is contained in:
parent
ce0d1c63d1
commit
4dd242bc7d
|
|
@ -3378,5 +3378,14 @@
|
||||||
"enterNewChat": "Enter new chat",
|
"enterNewChat": "Enter new chat",
|
||||||
"approve": "Approve",
|
"approve": "Approve",
|
||||||
"youHaveKnocked": "You have knocked",
|
"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"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -263,7 +263,9 @@ abstract class AppRoutes {
|
||||||
pageBuilder: (context, state) => defaultPageBuilder(
|
pageBuilder: (context, state) => defaultPageBuilder(
|
||||||
context,
|
context,
|
||||||
state,
|
state,
|
||||||
const EmotesSettings(),
|
EmotesSettings(
|
||||||
|
roomId: state.pathParameters['roomid'],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
@ -369,7 +371,8 @@ abstract class AppRoutes {
|
||||||
roomId: state.pathParameters['roomid']!,
|
roomId: state.pathParameters['roomid']!,
|
||||||
shareItems: shareItems,
|
shareItems: shareItems,
|
||||||
eventId: state.uri.queryParameters['event'],
|
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(
|
pageBuilder: (context, state) => defaultPageBuilder(
|
||||||
context,
|
context,
|
||||||
state,
|
state,
|
||||||
const EmotesSettings(),
|
EmotesSettings(
|
||||||
|
roomId: state.pathParameters['roomid'],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
redirect: loggedOutRedirect,
|
redirect: loggedOutRedirect,
|
||||||
),
|
),
|
||||||
|
|
@ -500,7 +505,9 @@ abstract class AppRoutes {
|
||||||
pageBuilder: (context, state) => defaultPageBuilder(
|
pageBuilder: (context, state) => defaultPageBuilder(
|
||||||
context,
|
context,
|
||||||
state,
|
state,
|
||||||
const EmotesSettings(),
|
EmotesSettings(
|
||||||
|
roomId: state.pathParameters['roomid'],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
redirect: loggedOutRedirect,
|
redirect: loggedOutRedirect,
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -5172,8 +5172,62 @@ abstract class L10n {
|
||||||
/// No description provided for @pleaseWaitUntilInvited.
|
/// No description provided for @pleaseWaitUntilInvited.
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// 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;
|
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<L10n> {
|
class _L10nDelegate extends LocalizationsDelegate<L10n> {
|
||||||
|
|
|
||||||
|
|
@ -2877,6 +2877,33 @@ class L10nAr extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nBe extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nBn extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nBo extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2923,6 +2923,33 @@ class L10nCa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2899,6 +2899,33 @@ class L10nCs extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2919,6 +2919,33 @@ class L10nDe extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2896,6 +2896,33 @@ class L10nEl extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nEn extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2902,6 +2902,33 @@ class L10nEo extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2924,6 +2924,33 @@ class L10nEs extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2918,6 +2918,33 @@ class L10nEt extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2907,6 +2907,33 @@ class L10nEu extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2898,6 +2898,33 @@ class L10nFa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2904,6 +2904,33 @@ class L10nFi extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2901,6 +2901,33 @@ class L10nFil extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2942,6 +2942,33 @@ class L10nFr extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2928,6 +2928,33 @@ class L10nGa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2908,6 +2908,33 @@ class L10nGl extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2890,6 +2890,33 @@ class L10nHe extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nHi extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2904,6 +2904,33 @@ class L10nHr extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2906,6 +2906,33 @@ class L10nHu extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nIa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2910,6 +2910,33 @@ class L10nId extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2894,6 +2894,33 @@ class L10nIe extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2926,6 +2926,33 @@ class L10nIt extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2864,6 +2864,33 @@ class L10nJa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2897,6 +2897,33 @@ class L10nKa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2833,6 +2833,33 @@ class L10nKo extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2901,6 +2901,33 @@ class L10nLt extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2913,6 +2913,33 @@ class L10nLv extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2898,6 +2898,33 @@ class L10nNb extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2902,6 +2902,33 @@ class L10nNl extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2912,6 +2912,33 @@ class L10nPl extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,8 +2895,35 @@ class L10nPt extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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`).
|
/// The translations for Portuguese, as used in Brazil (`pt_BR`).
|
||||||
|
|
|
||||||
|
|
@ -2912,6 +2912,33 @@ class L10nRo extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2902,4 +2902,32 @@ class L10nRu extends L10n {
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2896,6 +2896,33 @@ class L10nSk extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2899,6 +2899,33 @@ class L10nSl extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2891,6 +2891,33 @@ class L10nSr extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2905,6 +2905,33 @@ class L10nSv extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2927,6 +2927,33 @@ class L10nTa extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2895,6 +2895,33 @@ class L10nTe extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2897,6 +2897,33 @@ class L10nTh extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2904,6 +2904,33 @@ class L10nTr extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2909,6 +2909,33 @@ class L10nUk extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2894,6 +2894,33 @@ class L10nVi extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2792,8 +2792,35 @@ class L10nZh extends L10n {
|
||||||
String get youHaveKnocked => 'You have knocked';
|
String get youHaveKnocked => 'You have knocked';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get pleaseWaitUntilInvited =>
|
String get pleaseWaitUntilInvited => 'Please wait until someone invites you.';
|
||||||
'Please wait now, until someone from the room 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`).
|
/// The translations for Chinese, using the Han script (`zh_Hant`).
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ class MessageContent extends StatelessWidget {
|
||||||
case MessageTypes.Sticker:
|
case MessageTypes.Sticker:
|
||||||
if (event.redacted) continue textmessage;
|
if (event.redacted) continue textmessage;
|
||||||
final maxSize = event.messageType == MessageTypes.Sticker
|
final maxSize = event.messageType == MessageTypes.Sticker
|
||||||
? 128
|
? 128.0
|
||||||
: event.messageType == MessageTypes.Image
|
: event.messageType == MessageTypes.Image
|
||||||
? 512.0
|
? 512.0
|
||||||
: 256.0;
|
: 256.0;
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,9 @@ class StickerPickerDialogState extends State<StickerPickerDialog> {
|
||||||
GridView.builder(
|
GridView.builder(
|
||||||
itemCount: imageKeys.length,
|
itemCount: imageKeys.length,
|
||||||
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
|
gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
|
||||||
maxCrossAxisExtent: 128,
|
maxCrossAxisExtent: 84,
|
||||||
|
mainAxisSpacing: 8.0,
|
||||||
|
crossAxisSpacing: 8.0,
|
||||||
),
|
),
|
||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,15 @@ import 'dart:async';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.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:http/http.dart' hide Client;
|
||||||
import 'package:matrix/matrix.dart';
|
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/client_manager.dart';
|
||||||
import 'package:extera_next/utils/file_selector.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/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_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 'package:extera_next/widgets/future_loading_dialog.dart';
|
||||||
import '../../widgets/matrix.dart';
|
import '../../widgets/matrix.dart';
|
||||||
import 'import_archive_dialog.dart';
|
import 'import_archive_dialog.dart';
|
||||||
|
|
@ -22,24 +21,53 @@ import 'package:archive/archive.dart'
|
||||||
if (dart.library.io) 'package:archive/archive_io.dart';
|
if (dart.library.io) 'package:archive/archive_io.dart';
|
||||||
|
|
||||||
class EmotesSettings extends StatefulWidget {
|
class EmotesSettings extends StatefulWidget {
|
||||||
const EmotesSettings({super.key});
|
final String? roomId;
|
||||||
|
const EmotesSettings({required this.roomId, super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
EmotesSettingsController createState() => EmotesSettingsController();
|
EmotesSettingsController createState() => EmotesSettingsController();
|
||||||
}
|
}
|
||||||
|
|
||||||
class EmotesSettingsController extends State<EmotesSettings> {
|
class EmotesSettingsController extends State<EmotesSettings> {
|
||||||
String? get roomId => GoRouterState.of(context).pathParameters['roomid'];
|
late final Room? room;
|
||||||
|
|
||||||
Room? get room =>
|
String? stateKey;
|
||||||
roomId != null ? Matrix.of(context).client.getRoomById(roomId!) : null;
|
|
||||||
|
|
||||||
String? get stateKey => GoRouterState.of(context).pathParameters['state_key'];
|
List<String>? 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<String, Object?>('pack');
|
||||||
|
packDisplayNameController.text =
|
||||||
|
eventPack?.tryGet<String>('display_name') ?? '';
|
||||||
|
packAttributionController.text =
|
||||||
|
eventPack?.tryGet<String>('attribution') ?? '';
|
||||||
|
if (reset) resetAction();
|
||||||
|
}
|
||||||
|
|
||||||
bool showSave = false;
|
bool showSave = false;
|
||||||
TextEditingController newImageCodeController = TextEditingController();
|
|
||||||
ValueNotifier<ImagePackImageContent?> newImageController =
|
|
||||||
ValueNotifier<ImagePackImageContent?>(null);
|
|
||||||
|
|
||||||
ImagePackContent _getPack() {
|
ImagePackContent _getPack() {
|
||||||
final client = Matrix.of(context).client;
|
final client = Matrix.of(context).client;
|
||||||
|
|
@ -69,25 +97,25 @@ class EmotesSettingsController extends State<EmotesSettings> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final client = Matrix.of(context).client;
|
final client = Matrix.of(context).client;
|
||||||
if (room != null) {
|
final result = await showFutureLoadingDialog(
|
||||||
await showFutureLoadingDialog(
|
context: context,
|
||||||
context: context,
|
future: () => room != null
|
||||||
future: () => client.setRoomStateWithKey(
|
? client.setRoomStateWithKey(
|
||||||
room!.id,
|
room!.id,
|
||||||
'im.ponies.room_emotes',
|
'im.ponies.room_emotes',
|
||||||
stateKey ?? '',
|
stateKey ?? '',
|
||||||
pack!.toJson(),
|
pack!.toJson(),
|
||||||
),
|
)
|
||||||
);
|
: client.setAccountData(
|
||||||
} else {
|
client.userID!,
|
||||||
await showFutureLoadingDialog(
|
'im.ponies.user_emotes',
|
||||||
context: context,
|
pack!.toJson(),
|
||||||
future: () => client.setAccountData(
|
),
|
||||||
client.userID!,
|
);
|
||||||
'im.ponies.user_emotes',
|
if (!result.isError) {
|
||||||
pack!.toJson(),
|
setState(() {
|
||||||
),
|
showSave = false;
|
||||||
);
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -123,17 +151,56 @@ class EmotesSettingsController extends State<EmotesSettings> {
|
||||||
setState(() {});
|
setState(() {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final TextEditingController packDisplayNameController =
|
||||||
|
TextEditingController();
|
||||||
|
|
||||||
|
final TextEditingController packAttributionController =
|
||||||
|
TextEditingController();
|
||||||
|
|
||||||
void removeImageAction(String oldImageCode) => setState(() {
|
void removeImageAction(String oldImageCode) => setState(() {
|
||||||
pack!.images.remove(oldImageCode);
|
pack!.images.remove(oldImageCode);
|
||||||
showSave = true;
|
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(
|
void submitImageAction(
|
||||||
String oldImageCode,
|
String oldImageCode,
|
||||||
String imageCode,
|
|
||||||
ImagePackImageContent image,
|
ImagePackImageContent image,
|
||||||
TextEditingController controller,
|
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)) {
|
if (pack!.images.keys.any((k) => k == imageCode && k != oldImageCode)) {
|
||||||
controller.text = oldImageCode;
|
controller.text = oldImageCode;
|
||||||
showOkAlertDialog(
|
showOkAlertDialog(
|
||||||
|
|
@ -169,8 +236,60 @@ class EmotesSettingsController extends State<EmotesSettings> {
|
||||||
?.tryGetMap<String, Object?>(stateKey ?? '') !=
|
?.tryGetMap<String, Object?>(stateKey ?? '') !=
|
||||||
null;
|
null;
|
||||||
|
|
||||||
bool get readonly =>
|
bool get readonly => room == null
|
||||||
room == null ? false : !(room!.canSendEvent('im.ponies.room_emotes'));
|
? 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 {
|
void saveAction() async {
|
||||||
await save(context);
|
await save(context);
|
||||||
|
|
@ -179,95 +298,63 @@ class EmotesSettingsController extends State<EmotesSettings> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void addImageAction() async {
|
void createStickers() async {
|
||||||
if (newImageCodeController.text.isEmpty ||
|
final pickedFiles = await selectFiles(
|
||||||
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<ImagePackImageContent?> controller,
|
|
||||||
) async {
|
|
||||||
final result = await selectFiles(
|
|
||||||
context,
|
context,
|
||||||
type: FileSelectorType.images,
|
type: FileSelectorType.images,
|
||||||
|
allowMultiple: true,
|
||||||
);
|
);
|
||||||
final pickedFile = result.firstOrNull;
|
if (pickedFiles.isEmpty) return;
|
||||||
if (pickedFile == null) return;
|
if (!mounted) return;
|
||||||
var file = MatrixImageFile(
|
|
||||||
bytes: await pickedFile.readAsBytes(),
|
await showFutureLoadingDialog(
|
||||||
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(
|
|
||||||
context: context,
|
context: context,
|
||||||
future: () => Matrix.of(context).client.uploadContent(
|
futureWithProgress: (setProgress) async {
|
||||||
file.bytes,
|
for (final (i, pickedFile) in pickedFiles.indexed) {
|
||||||
filename: file.name,
|
setProgress(i / pickedFiles.length);
|
||||||
contentType: file.mimeType,
|
var file = MatrixImageFile(
|
||||||
),
|
bytes: await pickedFile.readAsBytes(),
|
||||||
);
|
name: pickedFile.name,
|
||||||
if (uploadResp.error == null) {
|
);
|
||||||
setState(() {
|
file = await file.generateThumbnail(
|
||||||
final info = <String, dynamic>{
|
nativeImplementations: ClientManager.nativeImplementations,
|
||||||
...file.info,
|
) ??
|
||||||
};
|
file;
|
||||||
// normalize width / height to 256, required for stickers
|
final uri = await Matrix.of(context).client.uploadContent(
|
||||||
if (info['w'] is int && info['h'] is int) {
|
file.bytes,
|
||||||
final ratio = info['w'] / info['h'];
|
filename: file.name,
|
||||||
if (info['w'] > info['h']) {
|
contentType: file.mimeType,
|
||||||
info['w'] = 256;
|
);
|
||||||
info['h'] = (256.0 / ratio).round();
|
|
||||||
} else {
|
setState(() {
|
||||||
info['h'] = 256;
|
final info = <String, dynamic>{
|
||||||
info['w'] = (ratio * 256.0).round();
|
...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(<String, dynamic>{
|
||||||
|
'url': uri.toString(),
|
||||||
|
'info': info,
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
controller.value = ImagePackImageContent.fromJson(<String, dynamic>{
|
},
|
||||||
'url': uploadResp.result.toString(),
|
);
|
||||||
'info': info,
|
|
||||||
});
|
setState(() {
|
||||||
});
|
showSave = true;
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
import 'package:extera_next/generated/l10n/l10n.dart';
|
|
||||||
import 'package:matrix/matrix.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/utils/platform_infos.dart';
|
||||||
import 'package:extera_next/widgets/layouts/max_width_body.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.dart';
|
||||||
|
import 'package:extera_next/widgets/mxc_image_viewer.dart';
|
||||||
import '../../widgets/matrix.dart';
|
import '../../widgets/matrix.dart';
|
||||||
import 'settings_emotes.dart';
|
import 'settings_emotes.dart';
|
||||||
|
|
||||||
|
|
@ -19,107 +20,186 @@ class EmotesSettingsView extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
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 theme = Theme.of(context);
|
||||||
|
|
||||||
final client = Matrix.of(context).client;
|
final client = Matrix.of(context).client;
|
||||||
final imageKeys = controller.pack!.images.keys.toList();
|
final imageKeys = controller.pack!.images.keys.toList();
|
||||||
|
final packKeys = controller.packKeys;
|
||||||
|
if (packKeys != null && packKeys.isEmpty) {
|
||||||
|
packKeys.add('');
|
||||||
|
}
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
leading: const Center(child: BackButton()),
|
automaticallyImplyLeading: !controller.showSave,
|
||||||
title: Text(L10n.of(context).customEmojisAndStickers),
|
title: controller.showSave
|
||||||
|
? TextButton(
|
||||||
|
onPressed: controller.resetAction,
|
||||||
|
child: Text(L10n.of(context).cancel),
|
||||||
|
)
|
||||||
|
: Text(L10n.of(context).customEmojisAndStickers),
|
||||||
actions: [
|
actions: [
|
||||||
PopupMenuButton<PopupMenuEmojiActions>(
|
if (controller.showSave)
|
||||||
onSelected: (value) {
|
ElevatedButton(
|
||||||
switch (value) {
|
onPressed: () => controller.save(context),
|
||||||
case PopupMenuEmojiActions.export:
|
style: ElevatedButton.styleFrom(
|
||||||
controller.exportAsZip();
|
backgroundColor: theme.colorScheme.primary,
|
||||||
break;
|
foregroundColor: theme.colorScheme.onPrimary,
|
||||||
case PopupMenuEmojiActions.import:
|
|
||||||
controller.importEmojiZip();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
enabled: !controller.readonly,
|
|
||||||
itemBuilder: (context) => [
|
|
||||||
PopupMenuItem(
|
|
||||||
value: PopupMenuEmojiActions.import,
|
|
||||||
child: Text(L10n.of(context).importFromZipFile),
|
|
||||||
),
|
),
|
||||||
PopupMenuItem(
|
child: Text(L10n.of(context).saveChanges),
|
||||||
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),
|
|
||||||
)
|
)
|
||||||
: null,
|
else
|
||||||
|
PopupMenuButton<PopupMenuEmojiActions>(
|
||||||
|
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<String, Object?>('pack');
|
||||||
|
final packName =
|
||||||
|
eventPack?.tryGet<String>('display_name') ??
|
||||||
|
eventPack?.tryGet<String>('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(
|
body: MaxWidthBody(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
if (!controller.readonly)
|
if (controller.room != null) ...[
|
||||||
Container(
|
const SizedBox(height: 16),
|
||||||
padding: const EdgeInsets.symmetric(
|
Padding(
|
||||||
vertical: 8.0,
|
padding: const EdgeInsets.symmetric(horizontal: 16.0),
|
||||||
),
|
child: TextField(
|
||||||
child: ListTile(
|
maxLength: 256,
|
||||||
leading: Container(
|
controller: controller.packDisplayNameController,
|
||||||
width: 180.0,
|
readOnly: controller.readonly,
|
||||||
height: 38,
|
onSubmitted: (_) => controller.submitDisplaynameAction(),
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
decoration: InputDecoration(
|
||||||
decoration: BoxDecoration(
|
counter: const SizedBox.shrink(),
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(10)),
|
hintText: controller.stateKey,
|
||||||
color: theme.secondaryHeaderColor,
|
labelText: L10n.of(context).stickerPackName,
|
||||||
),
|
|
||||||
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: 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(
|
SwitchListTile.adaptive(
|
||||||
title: Text(L10n.of(context).enableEmotesGlobally),
|
title: Text(L10n.of(context).enableEmotesGlobally),
|
||||||
value: controller.isGloballyActive(client),
|
value: controller.isGloballyActive(client),
|
||||||
onChanged: controller.setIsGloballyActive,
|
onChanged: controller.setIsGloballyActive,
|
||||||
),
|
),
|
||||||
if (!controller.readonly || controller.room != null)
|
|
||||||
const Divider(),
|
|
||||||
imageKeys.isEmpty
|
imageKeys.isEmpty
|
||||||
? Center(
|
? Center(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
|
|
@ -135,11 +215,8 @@ class EmotesSettingsView extends StatelessWidget {
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
separatorBuilder: (BuildContext context, int i) =>
|
separatorBuilder: (BuildContext context, int i) =>
|
||||||
const SizedBox.shrink(),
|
const SizedBox.shrink(),
|
||||||
itemCount: imageKeys.length + 1,
|
itemCount: imageKeys.length,
|
||||||
itemBuilder: (BuildContext context, int i) {
|
itemBuilder: (BuildContext context, int i) {
|
||||||
if (i >= imageKeys.length) {
|
|
||||||
return Container(height: 70);
|
|
||||||
}
|
|
||||||
final imageCode = imageKeys[i];
|
final imageCode = imageKeys[i];
|
||||||
final image = controller.pack!.images[imageCode]!;
|
final image = controller.pack!.images[imageCode]!;
|
||||||
final textEditingController = TextEditingController();
|
final textEditingController = TextEditingController();
|
||||||
|
|
@ -147,80 +224,110 @@ class EmotesSettingsView extends StatelessWidget {
|
||||||
final useShortCuts =
|
final useShortCuts =
|
||||||
(PlatformInfos.isWeb || PlatformInfos.isDesktop);
|
(PlatformInfos.isWeb || PlatformInfos.isDesktop);
|
||||||
return ListTile(
|
return ListTile(
|
||||||
leading: Container(
|
title: Row(
|
||||||
width: 180.0,
|
children: [
|
||||||
height: 38,
|
Expanded(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 8),
|
child: Shortcuts(
|
||||||
decoration: BoxDecoration(
|
shortcuts: !useShortCuts
|
||||||
borderRadius:
|
? {}
|
||||||
const BorderRadius.all(Radius.circular(10)),
|
: {
|
||||||
color: theme.secondaryHeaderColor,
|
LogicalKeySet(LogicalKeyboardKey.enter):
|
||||||
),
|
SubmitLineIntent(),
|
||||||
child: Shortcuts(
|
},
|
||||||
shortcuts: !useShortCuts
|
child: Actions(
|
||||||
? {}
|
actions: !useShortCuts
|
||||||
: {
|
? {}
|
||||||
LogicalKeySet(LogicalKeyboardKey.enter):
|
: {
|
||||||
SubmitLineIntent(),
|
SubmitLineIntent: CallbackAction(
|
||||||
},
|
onInvoke: (i) {
|
||||||
child: Actions(
|
controller.submitImageAction(
|
||||||
actions: !useShortCuts
|
imageCode,
|
||||||
? {}
|
image,
|
||||||
: {
|
textEditingController,
|
||||||
SubmitLineIntent: CallbackAction(
|
);
|
||||||
onInvoke: (i) {
|
return null;
|
||||||
controller.submitImageAction(
|
},
|
||||||
imageCode,
|
),
|
||||||
textEditingController.text,
|
|
||||||
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(
|
onSubmitted: (s) =>
|
||||||
readOnly: controller.readonly,
|
controller.submitImageAction(
|
||||||
controller: textEditingController,
|
imageCode,
|
||||||
autocorrect: false,
|
image,
|
||||||
minLines: 1,
|
textEditingController,
|
||||||
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,
|
|
||||||
),
|
|
||||||
onSubmitted: (s) =>
|
|
||||||
controller.submitImageAction(
|
|
||||||
imageCode,
|
|
||||||
s,
|
|
||||||
image,
|
|
||||||
textEditingController,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
if (!controller.readonly)
|
||||||
|
PopupMenuButton<ImagePackUsage>(
|
||||||
|
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
|
trailing: controller.readonly
|
||||||
? null
|
? null
|
||||||
: InkWell(
|
: IconButton(
|
||||||
onTap: () =>
|
tooltip: L10n.of(context).delete,
|
||||||
|
onPressed: () =>
|
||||||
controller.removeImageAction(imageCode),
|
controller.removeImageAction(imageCode),
|
||||||
child: const Icon(
|
icon: const Icon(Icons.delete_outlined),
|
||||||
Icons.delete_outlined,
|
|
||||||
color: Colors.red,
|
|
||||||
size: 32.0,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
@ -239,43 +346,26 @@ class _EmoteImage extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
const size = 38.0;
|
const size = 44.0;
|
||||||
return SizedBox.square(
|
final key = 'sticker_preview_$mxc';
|
||||||
dimension: size,
|
return InkWell(
|
||||||
|
borderRadius: BorderRadius.circular(4),
|
||||||
|
onTap: () => showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (_) => MxcImageViewer(mxc),
|
||||||
|
),
|
||||||
child: MxcImage(
|
child: MxcImage(
|
||||||
|
key: ValueKey(key),
|
||||||
|
cacheKey: key,
|
||||||
uri: mxc,
|
uri: mxc,
|
||||||
fit: BoxFit.contain,
|
fit: BoxFit.contain,
|
||||||
width: size,
|
width: size,
|
||||||
height: size,
|
height: size,
|
||||||
isThumbnail: false,
|
isThumbnail: true,
|
||||||
|
animated: true,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ImagePicker extends StatefulWidget {
|
|
||||||
final ValueNotifier<ImagePackImageContent?> controller;
|
|
||||||
|
|
||||||
final void Function(ValueNotifier<ImagePackImageContent?>) 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 {}
|
||||||
|
|
@ -3,8 +3,8 @@ import 'dart:async';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:async/async.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/utils/localized_exception_extension.dart';
|
||||||
import 'package:extera_next/widgets/adaptive_dialogs/adaptive_dialog_action.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.
|
/// null.
|
||||||
Future<Result<T>> showFutureLoadingDialog<T>({
|
Future<Result<T>> showFutureLoadingDialog<T>({
|
||||||
required BuildContext context,
|
required BuildContext context,
|
||||||
required Future<T> Function() future,
|
Future<T> Function()? future,
|
||||||
|
Future<T> Function(void Function(double?) setProgress)? futureWithProgress,
|
||||||
String? title,
|
String? title,
|
||||||
String? backLabel,
|
String? backLabel,
|
||||||
bool barrierDismissible = false,
|
bool barrierDismissible = false,
|
||||||
|
|
@ -22,7 +23,10 @@ Future<Result<T>> showFutureLoadingDialog<T>({
|
||||||
ExceptionContext? exceptionContext,
|
ExceptionContext? exceptionContext,
|
||||||
bool ignoreError = false,
|
bool ignoreError = false,
|
||||||
}) async {
|
}) async {
|
||||||
final futureExec = future();
|
assert(future != null || futureWithProgress != null);
|
||||||
|
final onProgressStream = StreamController<double?>();
|
||||||
|
final futureExec =
|
||||||
|
futureWithProgress?.call(onProgressStream.add) ?? future!();
|
||||||
final resultFuture = ResultFuture(futureExec);
|
final resultFuture = ResultFuture(futureExec);
|
||||||
|
|
||||||
if (delay) {
|
if (delay) {
|
||||||
|
|
@ -46,6 +50,7 @@ Future<Result<T>> showFutureLoadingDialog<T>({
|
||||||
title: title,
|
title: title,
|
||||||
backLabel: backLabel,
|
backLabel: backLabel,
|
||||||
exceptionContext: exceptionContext,
|
exceptionContext: exceptionContext,
|
||||||
|
onProgressStream: onProgressStream.stream,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
return result ??
|
return result ??
|
||||||
|
|
@ -60,6 +65,7 @@ class LoadingDialog<T> extends StatefulWidget {
|
||||||
final String? backLabel;
|
final String? backLabel;
|
||||||
final Future<T> future;
|
final Future<T> future;
|
||||||
final ExceptionContext? exceptionContext;
|
final ExceptionContext? exceptionContext;
|
||||||
|
final Stream<double?> onProgressStream;
|
||||||
|
|
||||||
const LoadingDialog({
|
const LoadingDialog({
|
||||||
super.key,
|
super.key,
|
||||||
|
|
@ -67,6 +73,7 @@ class LoadingDialog<T> extends StatefulWidget {
|
||||||
this.title,
|
this.title,
|
||||||
this.backLabel,
|
this.backLabel,
|
||||||
this.exceptionContext,
|
this.exceptionContext,
|
||||||
|
required this.onProgressStream,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -110,7 +117,13 @@ class LoadingDialogState<T> extends State<LoadingDialog> {
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
if (exception == null) ...[
|
if (exception == null) ...[
|
||||||
const CircularProgressIndicator.adaptive(),
|
StreamBuilder(
|
||||||
|
stream: widget.onProgressStream,
|
||||||
|
builder: (context, snapshot) =>
|
||||||
|
CircularProgressIndicator.adaptive(
|
||||||
|
value: snapshot.data,
|
||||||
|
),
|
||||||
|
),
|
||||||
const SizedBox(width: 20),
|
const SizedBox(width: 20),
|
||||||
],
|
],
|
||||||
Expanded(
|
Expanded(
|
||||||
|
|
|
||||||
|
|
@ -98,9 +98,9 @@ include(flutter/generated_plugins.cmake)
|
||||||
# By default, "installing" just makes a relocatable bundle in the build
|
# By default, "installing" just makes a relocatable bundle in the build
|
||||||
# directory.
|
# directory.
|
||||||
set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
|
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)
|
set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
|
||||||
endif()
|
#endif()
|
||||||
|
|
||||||
# Start with a clean build bundle directory every time.
|
# Start with a clean build bundle directory every time.
|
||||||
install(CODE "
|
install(CODE "
|
||||||
|
|
|
||||||
16
pubspec.lock
16
pubspec.lock
|
|
@ -1227,10 +1227,10 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
|
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.16.0"
|
version: "1.17.0"
|
||||||
mgrs_dart:
|
mgrs_dart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -2016,26 +2016,26 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test
|
name: test
|
||||||
sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb"
|
sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.26.2"
|
version: "1.26.3"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
|
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.6"
|
version: "0.7.7"
|
||||||
test_core:
|
test_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_core
|
name: test_core
|
||||||
sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a"
|
sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.11"
|
version: "0.6.12"
|
||||||
timezone:
|
timezone:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue