fix avatar loading

This commit is contained in:
Henry Hiles 2025-11-18 16:18:32 -05:00
commit 89dd28fec6
No known key found for this signature in database
6 changed files with 36 additions and 16 deletions

View file

@ -1,4 +1,5 @@
import "dart:convert";
import "dart:io";
import "package:flutter/foundation.dart";
import "package:matrix/matrix.dart";
@ -59,8 +60,7 @@ class ClientController extends AsyncNotifier<Client> {
Future<bool> login(String username, String password) async {
final client = await future;
try {
final deviceName =
"Nexus Client login at ${DateTime.now().toIso8601String()}";
final deviceName = "Nexus Client login on ${Platform.localHostname}";
final details = await MatrixApi(homeserver: client.homeserver).login(
LoginType.mLoginPassword,
initialDeviceDisplayName: deviceName,

View file

@ -20,11 +20,14 @@ extension BetterWhen<T> on AsyncValue<T> {
}
extension GetFullRoom on Room {
Future<FullRoom> get fullRoom async => FullRoom(
roomData: this,
title: getLocalizedDisplayname(),
avatar: await avatar?.getThumbnailUri(client, width: 24, height: 24),
);
Future<FullRoom> get fullRoom async {
await loadHeroUsers();
return FullRoom(
roomData: this,
title: getLocalizedDisplayname(),
avatar: await avatar?.getThumbnailUri(client, width: 24, height: 24),
);
}
}
extension GetHeaders on Client {
@ -45,15 +48,7 @@ extension ToMessage on Event {
"txnId": transactionId,
};
if (redacted) {
return Message.text(
metadata: metadata,
id: eventId,
authorId: senderId,
text: "<s>This message has been redacted.</s>",
deletedAt: redactedBecause?.originServerTs,
);
}
if (redacted) return null;
final asText =
Message.text(

View file

@ -0,0 +1,10 @@
import "package:flutter/material.dart";
class SettingsPage extends StatelessWidget {
const SettingsPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(appBar: AppBar(title: Text("Settings")));
}
}

View file

@ -4,6 +4,7 @@ import "package:hooks_riverpod/hooks_riverpod.dart";
import "package:nexus/controllers/current_room_controller.dart";
import "package:nexus/controllers/spaces_controller.dart";
import "package:nexus/helpers/extension_helper.dart";
import "package:nexus/pages/settings_page.dart";
import "package:nexus/widgets/avatar_or_hash.dart";
class Sidebar extends HookConsumerWidget {
@ -50,6 +51,16 @@ class Sidebar extends HookConsumerWidget {
)
.toList(),
selectedIndex: selectedSpace.value,
trailingAtBottom: true,
trailing: Padding(
padding: EdgeInsets.symmetric(vertical: 16),
child: IconButton(
onPressed: () => Navigator.of(
context,
).push(MaterialPageRoute(builder: (_) => SettingsPage())),
icon: Icon(Icons.settings),
),
),
),
),
Expanded(