refactor badges

This commit is contained in:
Henry Hiles 2025-11-28 15:51:43 -05:00
commit 8d0eafae8a
No known key found for this signature in database
5 changed files with 26 additions and 9 deletions

View file

@ -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<FullRoom> {
class CurrentRoomController extends AsyncNotifier<FullRoom?> {
@override
Future<FullRoom> build() async => (await ref.watch(
Future<FullRoom?> build() async => (await ref.watch(
SpacesController.provider.future,
))[0].children[0].roomData.fullRoom;
@ -15,7 +15,7 @@ class CurrentRoomController extends AsyncNotifier<FullRoom> {
}
static final provider =
AsyncNotifierProvider<CurrentRoomController, FullRoom>(
AsyncNotifierProvider<CurrentRoomController, FullRoom?>(
CurrentRoomController.new,
);
}

View file

@ -10,6 +10,8 @@ class MessageController extends AsyncNotifier<TextMessage?> {
@override
Future<TextMessage?> 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;
}

View file

@ -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"),
),
);
}
}

View file

@ -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(

View file

@ -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,
);