fluffychat merge

This commit is contained in:
ggurdin 2026-02-05 12:00:21 -05:00
commit da02f3ca1a
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
5 changed files with 54 additions and 34 deletions

View file

@ -2168,7 +2168,7 @@
"type": "String",
"placeholders": {}
},
"unknownEvent": "Nomalum shifrlash algoritmi",
"unknownEvent": "Nomalum hodisa '{type}'",
"@unknownEvent": {
"type": "String",
"placeholders": {
@ -2604,7 +2604,7 @@
"@shareKeysWithDescription": {},
"enterNewChat": "Yangi suhbatga kirish",
"@enterNewChat": {},
"removeFromSpaceDescription": "Chat maydondan olib tashlanadi, lekin hali ham chatlar royxatida chiqadi.",
"removeFromSpaceDescription": "Suhbat maydondan olib tashlanadi, lekin hali ham suhbatlarlar royxatida chiqadi.",
"@removeFromSpaceDescription": {},
"countChats": "{chats} suhbatlar",
"@countChats": {
@ -3467,5 +3467,12 @@
"yourGlobalUserIdIs": "Global foydalanuvchi ID raqamingiz: ",
"@yourGlobalUserIdIs": {},
"notificationRuleTombstone": "Qabrtosh",
"@notificationRuleTombstone": {}
"@notificationRuleTombstone": {},
"identity": "Shaxs",
"@identity": {
"type": "String",
"placeholders": {}
},
"emojis": "Emojilar",
"@emojis": {}
}

View file

@ -63,12 +63,11 @@ class ChatView extends StatelessWidget {
// onPressed: () => controller
// .enterThread(controller.selectedEvents.single.eventId),
// ),
// if (controller.canPinSelectedEvents)
// IconButton(
// icon: const Icon(Icons.push_pin_outlined),
// onPressed: controller.pinEvent,
// tooltip: L10n.of(context).pinMessage,
// ),
// IconButton(
// icon: const Icon(Icons.copy_outlined),
// tooltip: L10n.of(context).copyToClipboard,
// onPressed: controller.copyEventsAction,
// ),
// if (controller.canRedactSelectedEvents)
// IconButton(
// icon: const Icon(Icons.delete_outlined),
@ -90,18 +89,19 @@ class ChatView extends StatelessWidget {
// }
// },
// itemBuilder: (context) => [
// PopupMenuItem(
// onTap: controller.copyEventsAction,
// value: null,
// child: Row(
// mainAxisSize: MainAxisSize.min,
// children: [
// const Icon(Icons.copy_outlined),
// const SizedBox(width: 12),
// Text(L10n.of(context).copy),
// ],
// if (controller.canPinSelectedEvents)
// PopupMenuItem(
// onTap: controller.pinEvent,
// value: null,
// child: Row(
// mainAxisSize: MainAxisSize.min,
// children: [
// const Icon(Icons.push_pin_outlined),
// const SizedBox(width: 12),
// Text(L10n.of(context).pinMessage),
// ],
// ),
// ),
// ),
// if (controller.canSaveSelectedEvent)
// PopupMenuItem(
// onTap: () => controller.saveSelectedEvent(context),

View file

@ -5,6 +5,7 @@ import 'package:matrix/matrix.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/url_launcher.dart';
import 'package:fluffychat/widgets/layouts/max_width_body.dart';
import 'package:fluffychat/widgets/mxc_image.dart';
import 'package:fluffychat/widgets/mxc_image_viewer.dart';
@ -38,6 +39,9 @@ class EmotesSettingsView extends StatelessWidget {
if (packKeys != null && packKeys.isEmpty) {
packKeys.add('');
}
final attributionUrl = Uri.tryParse(
controller.packAttributionController.text,
);
return Scaffold(
appBar: AppBar(
@ -71,12 +75,12 @@ class EmotesSettingsView extends StatelessWidget {
break;
}
},
enabled: !controller.readonly,
itemBuilder: (context) => [
PopupMenuItem(
value: PopupMenuEmojiActions.import,
child: Text(L10n.of(context).importFromZipFile),
),
if (!controller.readonly)
PopupMenuItem(
value: PopupMenuEmojiActions.import,
child: Text(L10n.of(context).importFromZipFile),
),
if (imageKeys.isNotEmpty)
PopupMenuItem(
value: PopupMenuEmojiActions.export,
@ -175,10 +179,19 @@ class EmotesSettingsView extends StatelessWidget {
maxLength: 256,
controller: controller.packAttributionController,
readOnly: controller.readonly,
keyboardType: TextInputType.url,
onSubmitted: (_) => controller.submitAttributionAction(),
decoration: InputDecoration(
counter: const SizedBox.shrink(),
labelText: L10n.of(context).attribution,
suffixIcon: attributionUrl == null
? null
: IconButton(
icon: const Icon(Icons.link_outlined),
onPressed: () =>
UrlLauncher(context, attributionUrl.toString())
.launchUrl(),
),
),
),
),

View file

@ -566,10 +566,10 @@ packages:
dependency: "direct main"
description:
name: file_selector
sha256: "5f1d15a7f17115038f433d1b0ea57513cc9e29a9d5338d166cb0bef3fa90a7a0"
sha256: bd15e43e9268db636b53eeaca9f56324d1622af30e5c34d6e267649758c84d9a
url: "https://pub.dev"
source: hosted
version: "1.0.4"
version: "1.1.0"
file_selector_android:
dependency: transitive
description:
@ -590,26 +590,26 @@ packages:
dependency: transitive
description:
name: file_selector_linux
sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33"
sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0"
url: "https://pub.dev"
source: hosted
version: "0.9.3+2"
version: "0.9.4"
file_selector_macos:
dependency: transitive
description:
name: file_selector_macos
sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711"
sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
url: "https://pub.dev"
source: hosted
version: "0.9.4+3"
version: "0.9.5"
file_selector_platform_interface:
dependency: transitive
description:
name: file_selector_platform_interface
sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b
sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85"
url: "https://pub.dev"
source: hosted
version: "2.6.2"
version: "2.7.0"
file_selector_web:
dependency: transitive
description:

View file

@ -32,7 +32,7 @@ dependencies:
dynamic_color: ^1.8.1
emoji_picker_flutter: ^4.3.0
file_picker: ^10.3.6
file_selector: ^1.0.4
file_selector: ^1.1.0
flutter:
sdk: flutter
flutter_foreground_task: ^9.1.0