2023-05-27 21:56:27 +02:00
|
|
|
import 'package:flutter/foundation.dart';
|
2021-06-23 11:26:12 +02:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
2023-05-27 21:56:27 +02:00
|
|
|
import 'package:matrix/matrix.dart';
|
|
|
|
|
|
|
|
import 'package:fluffychat/widgets/matrix.dart';
|
2021-11-09 21:32:16 +01:00
|
|
|
import 'settings_chat_view.dart';
|
2021-06-23 11:26:12 +02:00
|
|
|
|
|
|
|
class SettingsChat extends StatefulWidget {
|
2022-01-29 12:35:03 +01:00
|
|
|
const SettingsChat({Key? key}) : super(key: key);
|
2021-06-23 11:26:12 +02:00
|
|
|
|
|
|
|
@override
|
|
|
|
SettingsChatController createState() => SettingsChatController();
|
|
|
|
}
|
|
|
|
|
|
|
|
class SettingsChatController extends State<SettingsChat> {
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) => SettingsChatView(this);
|
2023-05-27 21:56:27 +02:00
|
|
|
|
|
|
|
bool get autoplayAnimations =>
|
|
|
|
Matrix.of(context).client.autoplayAnimatedContent ?? !kIsWeb;
|
|
|
|
|
|
|
|
Future<void> setAutoplayAnimations(bool value) async {
|
|
|
|
try {
|
|
|
|
final client = Matrix.of(context).client;
|
|
|
|
await client.setAutoplayAnimatedContent(value);
|
|
|
|
} catch (e) {
|
|
|
|
Logs().w('Error storing animation preferences.', e);
|
|
|
|
} finally {
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
extension AutoplayAnimatedContentExtension on Client {
|
|
|
|
static const _elementWebKey = 'im.vector.web.settings';
|
|
|
|
|
|
|
|
/// returns whether user preferences configured to autoplay motion
|
|
|
|
/// message content such as gifs, webp, apng, videos or animations.
|
|
|
|
bool? get autoplayAnimatedContent {
|
|
|
|
if (!accountData.containsKey(_elementWebKey)) return null;
|
|
|
|
try {
|
|
|
|
final elementWebData = accountData[_elementWebKey]?.content;
|
|
|
|
return elementWebData?['autoplayGifs'] as bool?;
|
|
|
|
} catch (e) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Future<void> setAutoplayAnimatedContent(bool autoplay) async {
|
|
|
|
final elementWebData = accountData[_elementWebKey]?.content ?? {};
|
|
|
|
elementWebData['autoplayGifs'] = autoplay;
|
|
|
|
final uid = userID;
|
|
|
|
if (uid != null) {
|
|
|
|
await setAccountData(
|
|
|
|
uid,
|
|
|
|
_elementWebKey,
|
|
|
|
elementWebData,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2021-06-23 11:26:12 +02:00
|
|
|
}
|