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

View file

@ -10,6 +10,8 @@ class MessageController extends AsyncNotifier<TextMessage?> {
@override @override
Future<TextMessage?> build() async { Future<TextMessage?> build() async {
final room = await ref.watch(CurrentRoomController.provider.future); final room = await ref.watch(CurrentRoomController.provider.future);
if (room == null) return null;
final event = await room.roomData.getEventById(id); final event = await room.roomData.getEventById(id);
return (await event?.toMessage(mustBeText: true)) as TextMessage; return (await event?.toMessage(mustBeText: true)) as TextMessage;
} }

View file

@ -1,10 +1,18 @@
import "package:flutter/material.dart"; 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}); const SettingsPage({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(appBar: AppBar(title: Text("Settings"))); 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: Center(
child: Badge( child: Badge(
isLabelVisible: hasBadge, isLabelVisible: hasBadge,
label: SizedBox.shrink(), smallSize: 8,
offset: Offset(8, -8), backgroundColor: Theme.of(context).colorScheme.onPrimaryContainer,
backgroundColor: Theme.of(context).colorScheme.primary,
child: ClipRRect( child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(4)), borderRadius: BorderRadius.all(Radius.circular(4)),
child: SizedBox( child: SizedBox(

View file

@ -60,6 +60,14 @@ class RoomChat extends HookConsumerWidget {
.watch(CurrentRoomController.provider) .watch(CurrentRoomController.provider)
.betterWhen( .betterWhen(
data: (room) { data: (room) {
if (room == null) {
return Center(
child: Text(
"Nothing to see here...",
style: theme.textTheme.headlineMedium,
),
);
}
final controllerProvider = RoomChatController.provider( final controllerProvider = RoomChatController.provider(
room.roomData, room.roomData,
); );