feat: Option to hide redacted and unknown events

This commit is contained in:
Sorunome 2020-11-07 12:00:41 +01:00
commit d500476fbc
16 changed files with 118 additions and 38 deletions

View file

@ -2,6 +2,7 @@ import 'package:famedlysdk/famedlysdk.dart';
import 'package:flutter_matrix_html/flutter_html.dart';
import 'package:flutter/material.dart';
import '../utils/url_launcher.dart';
import '../config/setting_keys.dart';
import 'matrix.dart';
@ -59,10 +60,10 @@ class HtmlMessage extends StatelessWidget {
);
},
setCodeLanguage: (String key, String value) async {
await matrix.store.setItem('code_language.$key', value);
await matrix.store.setItem('${SettingKeys.codeLanguage}.$key', value);
},
getCodeLanguage: (String key) async {
return await matrix.store.getItem('code_language.$key');
return await matrix.store.getItem('${SettingKeys.codeLanguage}.$key');
},
getPillInfo: (String identifier) async {
if (room == null) {

View file

@ -72,9 +72,6 @@ class Message extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (event.type == EventTypes.Unknown) {
return Container();
}
if (![EventTypes.Message, EventTypes.Sticker, EventTypes.Encrypted]
.contains(event.type)) {
return StateMessage(event);

View file

@ -23,6 +23,8 @@ import '../utils/beautify_string_extension.dart';
import '../utils/famedlysdk_store.dart';
import '../views/key_verification.dart';
import '../utils/platform_infos.dart';
import '../config/app_config.dart';
import '../config/setting_keys.dart';
import 'avatar.dart';
class Matrix extends StatefulWidget {
@ -72,7 +74,6 @@ class MatrixState extends State<Matrix> {
String activeRoomId;
File wallpaper;
bool renderHtml = false;
String jitsiInstance = 'https://meet.jit.si/';
@ -304,18 +305,26 @@ class MatrixState extends State<Matrix> {
}
if (store != null) {
store
.getItem('chat.fluffy.jitsi_instance')
.getItem(SettingKeys.jitsiInstance)
.then((final instance) => jitsiInstance = instance ?? jitsiInstance);
store.getItem('chat.fluffy.wallpaper').then((final path) async {
store.getItem(SettingKeys.wallpaper).then((final path) async {
if (path == null) return;
final file = File(path);
if (await file.exists()) {
wallpaper = file;
}
});
store.getItem('chat.fluffy.renderHtml').then((final render) async {
renderHtml = render == '1';
});
store
.getItemBool(SettingKeys.renderHtml, AppConfig.renderHtml)
.then((value) => AppConfig.renderHtml = value);
store
.getItemBool(
SettingKeys.hideRedactedEvents, AppConfig.hideRedactedEvents)
.then((value) => AppConfig.hideRedactedEvents = value);
store
.getItemBool(
SettingKeys.hideUnknownEvents, AppConfig.hideUnknownEvents)
.then((value) => AppConfig.hideUnknownEvents = value);
}
if (kIsWeb) {
onFocusSub = html.window.onFocus.listen((_) => webHasFocus = true);

View file

@ -9,6 +9,7 @@ import 'package:matrix_link_text/link_text.dart';
import 'package:url_launcher/url_launcher.dart';
import '../utils/url_launcher.dart';
import '../config/app_config.dart';
import 'html_message.dart';
import 'matrix.dart';
import 'message_download_content.dart';
@ -43,7 +44,7 @@ class MessageContent extends StatelessWidget {
case MessageTypes.Text:
case MessageTypes.Notice:
case MessageTypes.Emote:
if (Matrix.of(context).renderHtml &&
if (AppConfig.renderHtml &&
!event.redacted &&
event.isRichMessage) {
String html = event.content['formatted_body'];

View file

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'html_message.dart';
import 'matrix.dart';
import '../config/app_config.dart';
class ReplyContent extends StatelessWidget {
final Event replyEvent;
@ -22,7 +22,7 @@ class ReplyContent extends StatelessWidget {
? replyEvent.getDisplayEvent(timeline)
: replyEvent;
if (displayEvent != null &&
Matrix.of(context).renderHtml &&
AppConfig.renderHtml &&
[EventTypes.Message, EventTypes.Encrypted]
.contains(displayEvent.type) &&
[MessageTypes.Text, MessageTypes.Notice, MessageTypes.Emote]

View file

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'matrix.dart';
import '../config/setting_keys.dart';
enum Themes {
light,
@ -175,14 +176,12 @@ class ThemeSwitcherWidgetState extends State<ThemeSwitcherWidget> {
BuildContext context;
Future loadSelection(MatrixState matrix) async {
var item = await matrix.store.getItem('theme') ?? 'system';
var item = await matrix.store.getItem(SettingKeys.theme) ?? 'system';
selectedTheme = Themes.values.firstWhere(
(e) => e.toString() == 'Themes.' + item,
orElse: () => Themes.system);
amoledEnabled = (await matrix.store.getItem('amoled_enabled') ?? 'false')
.toLowerCase() ==
'true';
amoledEnabled = await matrix.store.getItemBool(SettingKeys.amoledEnabled);
switchTheme(matrix, selectedTheme, amoledEnabled);
return;
@ -229,11 +228,12 @@ class ThemeSwitcherWidgetState extends State<ThemeSwitcherWidget> {
}
Future saveThemeValue(MatrixState matrix, Themes value) async {
await matrix.store.setItem('theme', value.toString().split('.').last);
await matrix.store
.setItem(SettingKeys.theme, value.toString().split('.').last);
}
Future saveAmoledEnabledValue(MatrixState matrix, bool value) async {
await matrix.store.setItem('amoled_enabled', value.toString());
await matrix.store.setItem(SettingKeys.amoledEnabled, value.toString());
}
void setup() async {