Skip to content

Commit 09a7984

Browse files
committed
chore: use pin and encryption streams
1 parent a35c0c1 commit 09a7984

File tree

4 files changed

+30
-10
lines changed

4 files changed

+30
-10
lines changed

devtools_options.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
description: This file stores settings for Dart & Flutter DevTools.
2+
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
3+
extensions:

lib/chat/chat_room/common/view/chat_create_or_edit_room_dialog.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,12 @@ class _ChatCreateOrEditRoomDialogState
250250
false
251251
? null
252252
: (v) {
253-
if (widget.room != null) {
254-
widget.room!.enableEncryption();
255-
}
256-
257253
setState(() => _enableEncryption = v);
254+
255+
if (_enableEncryption &&
256+
widget.room?.encrypted == false) {
257+
widget.room?.enableEncryption();
258+
}
258259
},
259260
),
260261
title: Text(l10n.encrypted),

lib/chat/chat_room/titlebar/chat_room_encryption_status_button.dart

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import 'package:flutter/material.dart';
22
import 'package:matrix/matrix.dart';
3+
import 'package:watch_it/watch_it.dart';
34
import 'package:yaru/yaru.dart';
45

56
import '../../../common/view/build_context_x.dart';
67
import '../../../l10n/l10n.dart';
8+
import '../../common/chat_model.dart';
79

8-
class ChatRoomEncryptionStatusButton extends StatelessWidget {
10+
class ChatRoomEncryptionStatusButton extends StatelessWidget with WatchItMixin {
911
const ChatRoomEncryptionStatusButton({
1012
super.key,
1113
required this.room,
@@ -18,10 +20,16 @@ class ChatRoomEncryptionStatusButton extends StatelessWidget {
1820
final l10n = context.l10n;
1921
final colorScheme = context.colorScheme;
2022

23+
final encrypted = watchStream(
24+
(ChatModel m) =>
25+
m.getJoinedRoomUpdate(room.id).map((e) => room.encrypted),
26+
initialValue: room.encrypted,
27+
).data ??
28+
false;
29+
2130
return IconButton(
22-
key: ValueKey('${room.id}${room.encrypted}'),
2331
onPressed: null,
24-
tooltip: room.encrypted ? l10n.encrypted : l10n.encryptionNotEnabled,
32+
tooltip: encrypted ? l10n.encrypted : l10n.encryptionNotEnabled,
2533
icon: !room.encrypted
2634
? Icon(YaruIcons.shield_warning, color: colorScheme.onSurface)
2735
: Icon(YaruIcons.shield_filled, color: colorScheme.onSurface),

lib/chat/chat_room/titlebar/chat_room_pin_button.dart

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import 'package:flutter/material.dart';
22
import 'package:matrix/matrix.dart';
3+
import 'package:watch_it/watch_it.dart';
34
import 'package:yaru/yaru.dart';
45

56
import '../../../common/view/build_context_x.dart';
7+
import '../../common/chat_model.dart';
68

7-
class ChatRoomPinButton extends StatelessWidget {
9+
class ChatRoomPinButton extends StatelessWidget with WatchItMixin {
810
const ChatRoomPinButton({
911
super.key,
1012
required this.room,
@@ -14,12 +16,18 @@ class ChatRoomPinButton extends StatelessWidget {
1416

1517
@override
1618
Widget build(BuildContext context) {
19+
final isFavourite = watchStream(
20+
(ChatModel m) =>
21+
m.getJoinedRoomUpdate(room.id).map((e) => room.isFavourite),
22+
initialValue: room.isFavourite,
23+
).data ??
24+
false;
25+
1726
return IconButton(
18-
key: ValueKey('${room.id}fav'),
1927
onPressed: () => room.setFavourite(!room.isFavourite),
2028
icon: Icon(
2129
YaruIcons.pin,
22-
color: room.isFavourite ? context.colorScheme.primary : null,
30+
color: isFavourite ? context.colorScheme.primary : null,
2331
),
2432
);
2533
}

0 commit comments

Comments
 (0)