♿ Block user action when attachments isn't ready
This commit is contained in:
@ -455,11 +455,12 @@ class _AttachmentEditorPopupState extends State<AttachmentEditorPopup> {
|
||||
const SizedBox(width: 10),
|
||||
Obx(() {
|
||||
if (_uploadController.isUploading.value) {
|
||||
return const SizedBox(
|
||||
return SizedBox(
|
||||
width: 18,
|
||||
height: 18,
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2.5,
|
||||
value: _uploadController.progressOfUpload.value,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -5,9 +5,11 @@ import 'package:solian/exts.dart';
|
||||
import 'package:solian/models/account.dart';
|
||||
import 'package:solian/models/channel.dart';
|
||||
import 'package:solian/models/event.dart';
|
||||
import 'package:solian/providers/attachment_uploader.dart';
|
||||
import 'package:solian/providers/auth.dart';
|
||||
import 'package:solian/widgets/attachments/attachment_editor.dart';
|
||||
import 'package:solian/widgets/chat/chat_event.dart';
|
||||
import 'package:badges/badges.dart' as badges;
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class ChatMessageInput extends StatefulWidget {
|
||||
@ -80,6 +82,14 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
|
||||
final prof = auth.userProfile.value!;
|
||||
if (auth.isAuthorized.isFalse) return;
|
||||
|
||||
final AttachmentUploaderController uploader = Get.find();
|
||||
if (uploader.queueOfUpload.any(
|
||||
((x) => x.usage == 'm.attachment' && x.isUploading),
|
||||
)) {
|
||||
context.showErrorDialog('attachmentUploadInProgress'.tr);
|
||||
return;
|
||||
}
|
||||
|
||||
Response resp;
|
||||
|
||||
final mentionedUserNames = _findMentionedUsers(_textController.text);
|
||||
@ -259,7 +269,18 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.attach_file),
|
||||
icon: badges.Badge(
|
||||
badgeContent: Text(
|
||||
_attachments.length.toString(),
|
||||
style: const TextStyle(color: Colors.white),
|
||||
),
|
||||
showBadge: _attachments.isNotEmpty,
|
||||
position: badges.BadgePosition.topEnd(
|
||||
top: -12,
|
||||
end: -8,
|
||||
),
|
||||
child: const Icon(Icons.file_present_rounded),
|
||||
),
|
||||
color: Colors.teal,
|
||||
onPressed: () => _editAttachments(),
|
||||
),
|
||||
|
Reference in New Issue
Block a user