Merge branch 'krille/call-sound' into 'main'

chore: Add call sound

See merge request famedly/fluffychat!744
This commit is contained in:
Krille Fear 2022-02-17 19:08:15 +00:00
commit 96abca6790
5 changed files with 11 additions and 10 deletions

BIN
assets/sounds/call.ogg Normal file

Binary file not shown.

View File

@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
@ -167,10 +166,11 @@ class ChatController extends State<Chat> {
void initState() {
scrollController.addListener(_updateScrollController);
inputFocus.addListener(_inputFocusListener);
final voipPlugin = Matrix.of(context).voipPlugin;
if (!kIsWeb) {
if (voipPlugin != null) {
WidgetsBinding.instance?.addPostFrameCallback((_) {
CallKeepManager().setVoipPlugin(Matrix.of(context).voipPlugin);
CallKeepManager().setVoipPlugin(voipPlugin);
CallKeepManager().initialize().catchError((_) => true);
});
}
@ -819,8 +819,6 @@ class ChatController extends State<Chat> {
}
}
bool get webrtcIsSupported => PlatformInfos.isMobile;
int? findChildIndexCallback(Key key, Map<String, int> thisEventsKeyMap) {
// this method is called very often. As such, it has to be optimized for speed.
if (key is! ValueKey) {
@ -976,10 +974,10 @@ class ChatController extends State<Chat> {
final success = await showFutureLoadingDialog(
context: context,
future: () =>
Matrix.of(context).voipPlugin.voip.requestTurnServerCredentials());
Matrix.of(context).voipPlugin!.voip.requestTurnServerCredentials());
if (success.result != null) {
final voipPlugin = Matrix.of(context).voipPlugin;
await voipPlugin.voip.inviteToCall(room!.id, callType).catchError((e) {
await voipPlugin!.voip.inviteToCall(room!.id, callType).catchError((e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString())
// Text(LocalizedExceptionExtension(context, e)),

View File

@ -113,7 +113,7 @@ class ChatView extends StatelessWidget {
];
} else {
return [
if (controller.webrtcIsSupported)
if (Matrix.of(context).webrtcIsSupported)
IconButton(
onPressed: controller.onPhoneButtonTap,
icon: const Icon(Icons.call_outlined),

View File

@ -173,7 +173,7 @@ class _MyCallingPage extends State<Calling> {
CallState? _state;
void _playCallSound() async {
const path = 'assets/sounds/call.wav';
const path = 'assets/sounds/call.ogg';
if (kIsWeb) {
darthtml.AudioElement()
..src = 'assets/$path'

View File

@ -83,7 +83,10 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
return widget.clients[_activeClient];
}
VoipPlugin get voipPlugin => VoipPlugin(client: client, context: context);
bool get webrtcIsSupported => PlatformInfos.isMobile;
VoipPlugin? get voipPlugin =>
webrtcIsSupported ? VoipPlugin(client: client, context: context) : null;
bool get isMultiAccount => widget.clients.length > 1;