forked from Henry-Hiles/nexus
refactor badges
This commit is contained in:
parent
6523420120
commit
8d0eafae8a
5 changed files with 26 additions and 9 deletions
|
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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"),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue