Merge branch 'main' of krille-chan/fluffychat
This commit is contained in:
commit
b93b263427
200 changed files with 1285 additions and 943 deletions
|
|
@ -1,21 +1,11 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:desktop_drop/desktop_drop.dart';
|
||||
import 'package:device_info_plus/device_info_plus.dart';
|
||||
import 'package:emoji_picker_flutter/emoji_picker_flutter.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
import 'package:scroll_to_index/scroll_to_index.dart';
|
||||
import 'package:pasteboard/pasteboard.dart';
|
||||
|
||||
import 'package:fluffychat/config/setting_keys.dart';
|
||||
import 'package:fluffychat/config/themes.dart';
|
||||
import 'package:fluffychat/l10n/l10n.dart';
|
||||
|
|
@ -38,6 +28,16 @@ import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'
|
|||
import 'package:fluffychat/widgets/future_loading_dialog.dart';
|
||||
import 'package:fluffychat/widgets/matrix.dart';
|
||||
import 'package:fluffychat/widgets/share_scaffold_dialog.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
import 'package:mime/mime.dart';
|
||||
import 'package:pasteboard/pasteboard.dart';
|
||||
import 'package:scroll_to_index/scroll_to_index.dart';
|
||||
|
||||
import '../../utils/account_bundles.dart';
|
||||
import '../../utils/localized_exception_extension.dart';
|
||||
import 'send_file_dialog.dart';
|
||||
|
|
@ -554,6 +554,7 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
timeline?.cancelSubscriptions();
|
||||
timeline = null;
|
||||
inputFocus.removeListener(_inputFocusListener);
|
||||
if (currentlyTyping) room.setTyping(false);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
|
@ -706,7 +707,7 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
String path,
|
||||
int duration,
|
||||
List<int> waveform,
|
||||
String? fileName,
|
||||
String fileName,
|
||||
) async {
|
||||
final scaffoldMessenger = ScaffoldMessenger.of(context);
|
||||
final audioFile = XFile(path);
|
||||
|
|
@ -718,9 +719,17 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
final bytes = bytesResult.result;
|
||||
if (bytes == null) return;
|
||||
|
||||
final mimeType = lookupMimeType(fileName, headerBytes: bytes);
|
||||
final extension = mimeType == null ? null : extensionFromMime(mimeType);
|
||||
if (extension != null) {
|
||||
fileName =
|
||||
'voice_message_${DateTime.now().millisecondsSinceEpoch}.$extension';
|
||||
}
|
||||
|
||||
final file = MatrixAudioFile(
|
||||
bytes: bytes,
|
||||
name: fileName ?? audioFile.path,
|
||||
name: fileName,
|
||||
mimeType: mimeType,
|
||||
);
|
||||
|
||||
room
|
||||
|
|
@ -1298,6 +1307,7 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
if (AppSettings.sendTypingNotifications.value) {
|
||||
typingCoolDown?.cancel();
|
||||
typingCoolDown = Timer(const Duration(seconds: 2), () {
|
||||
if (!mounted) return;
|
||||
typingCoolDown = null;
|
||||
currentlyTyping = false;
|
||||
room.setTyping(false);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue