From 8d0eafae8a03320e38ae34e152b330c376b6379e Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Fri, 28 Nov 2025 15:51:43 -0500 Subject: [PATCH] refactor badges --- lib/controllers/current_room_controller.dart | 6 +++--- lib/controllers/message_controller.dart | 2 ++ lib/pages/settings_page.dart | 14 +++++++++++--- lib/widgets/avatar_or_hash.dart | 5 ++--- lib/widgets/chat_page/room_chat.dart | 8 ++++++++ 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/lib/controllers/current_room_controller.dart b/lib/controllers/current_room_controller.dart index 5b00257..e698bcc 100644 --- a/lib/controllers/current_room_controller.dart +++ b/lib/controllers/current_room_controller.dart @@ -3,9 +3,9 @@ import "package:nexus/controllers/spaces_controller.dart"; import "package:nexus/helpers/extension_helper.dart"; import "package:nexus/models/full_room.dart"; -class CurrentRoomController extends AsyncNotifier { +class CurrentRoomController extends AsyncNotifier { @override - Future build() async => (await ref.watch( + Future build() async => (await ref.watch( SpacesController.provider.future, ))[0].children[0].roomData.fullRoom; @@ -15,7 +15,7 @@ class CurrentRoomController extends AsyncNotifier { } static final provider = - AsyncNotifierProvider( + AsyncNotifierProvider( CurrentRoomController.new, ); } diff --git a/lib/controllers/message_controller.dart b/lib/controllers/message_controller.dart index 6fdeb45..4901931 100644 --- a/lib/controllers/message_controller.dart +++ b/lib/controllers/message_controller.dart @@ -10,6 +10,8 @@ class MessageController extends AsyncNotifier { @override Future build() async { final room = await ref.watch(CurrentRoomController.provider.future); + if (room == null) return null; + final event = await room.roomData.getEventById(id); return (await event?.toMessage(mustBeText: true)) as TextMessage; } diff --git a/lib/pages/settings_page.dart b/lib/pages/settings_page.dart index 6cab84d..b348aac 100644 --- a/lib/pages/settings_page.dart +++ b/lib/pages/settings_page.dart @@ -1,10 +1,18 @@ import "package:flutter/material.dart"; +import "package:flutter_riverpod/flutter_riverpod.dart"; +import "package:nexus/controllers/secure_storage_controller.dart"; -class SettingsPage extends StatelessWidget { +class SettingsPage extends ConsumerWidget { const SettingsPage({super.key}); @override - Widget build(BuildContext context) { - return Scaffold(appBar: AppBar(title: Text("Settings"))); + Widget build(BuildContext context, WidgetRef ref) { + return Scaffold( + appBar: AppBar(title: Text("Settings")), + body: ElevatedButton( + onPressed: ref.watch(SecureStorageController.provider.notifier).clear, + child: Text("Log out"), + ), + ); } } diff --git a/lib/widgets/avatar_or_hash.dart b/lib/widgets/avatar_or_hash.dart index 7ca6e88..a6e267f 100644 --- a/lib/widgets/avatar_or_hash.dart +++ b/lib/widgets/avatar_or_hash.dart @@ -31,9 +31,8 @@ class AvatarOrHash extends StatelessWidget { child: Center( child: Badge( isLabelVisible: hasBadge, - label: SizedBox.shrink(), - offset: Offset(8, -8), - backgroundColor: Theme.of(context).colorScheme.primary, + smallSize: 8, + backgroundColor: Theme.of(context).colorScheme.onPrimaryContainer, child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(4)), child: SizedBox( diff --git a/lib/widgets/chat_page/room_chat.dart b/lib/widgets/chat_page/room_chat.dart index 4ab8442..b7e57f3 100644 --- a/lib/widgets/chat_page/room_chat.dart +++ b/lib/widgets/chat_page/room_chat.dart @@ -60,6 +60,14 @@ class RoomChat extends HookConsumerWidget { .watch(CurrentRoomController.provider) .betterWhen( data: (room) { + if (room == null) { + return Center( + child: Text( + "Nothing to see here...", + style: theme.textTheme.headlineMedium, + ), + ); + } final controllerProvider = RoomChatController.provider( room.roomData, );