fix avatar loading
This commit is contained in:
parent
111a875529
commit
89dd28fec6
6 changed files with 36 additions and 16 deletions
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"cSpell.words": ["Displayname"]
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ analyzer:
|
||||||
errors:
|
errors:
|
||||||
invalid_annotation_target: ignore
|
invalid_annotation_target: ignore
|
||||||
exclude:
|
exclude:
|
||||||
|
- "build/**"
|
||||||
- "**/*.g.dart"
|
- "**/*.g.dart"
|
||||||
- "**/*.freezed.dart"
|
- "**/*.freezed.dart"
|
||||||
include: package:flutter_lints/flutter.yaml
|
include: package:flutter_lints/flutter.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import "dart:convert";
|
import "dart:convert";
|
||||||
|
import "dart:io";
|
||||||
|
|
||||||
import "package:flutter/foundation.dart";
|
import "package:flutter/foundation.dart";
|
||||||
import "package:matrix/matrix.dart";
|
import "package:matrix/matrix.dart";
|
||||||
|
|
@ -59,8 +60,7 @@ class ClientController extends AsyncNotifier<Client> {
|
||||||
Future<bool> login(String username, String password) async {
|
Future<bool> login(String username, String password) async {
|
||||||
final client = await future;
|
final client = await future;
|
||||||
try {
|
try {
|
||||||
final deviceName =
|
final deviceName = "Nexus Client login on ${Platform.localHostname}";
|
||||||
"Nexus Client login at ${DateTime.now().toIso8601String()}";
|
|
||||||
final details = await MatrixApi(homeserver: client.homeserver).login(
|
final details = await MatrixApi(homeserver: client.homeserver).login(
|
||||||
LoginType.mLoginPassword,
|
LoginType.mLoginPassword,
|
||||||
initialDeviceDisplayName: deviceName,
|
initialDeviceDisplayName: deviceName,
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,14 @@ extension BetterWhen<T> on AsyncValue<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
extension GetFullRoom on Room {
|
extension GetFullRoom on Room {
|
||||||
Future<FullRoom> get fullRoom async => FullRoom(
|
Future<FullRoom> get fullRoom async {
|
||||||
roomData: this,
|
await loadHeroUsers();
|
||||||
title: getLocalizedDisplayname(),
|
return FullRoom(
|
||||||
avatar: await avatar?.getThumbnailUri(client, width: 24, height: 24),
|
roomData: this,
|
||||||
);
|
title: getLocalizedDisplayname(),
|
||||||
|
avatar: await avatar?.getThumbnailUri(client, width: 24, height: 24),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension GetHeaders on Client {
|
extension GetHeaders on Client {
|
||||||
|
|
@ -45,15 +48,7 @@ extension ToMessage on Event {
|
||||||
"txnId": transactionId,
|
"txnId": transactionId,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (redacted) {
|
if (redacted) return null;
|
||||||
return Message.text(
|
|
||||||
metadata: metadata,
|
|
||||||
id: eventId,
|
|
||||||
authorId: senderId,
|
|
||||||
text: "<s>This message has been redacted.</s>",
|
|
||||||
deletedAt: redactedBecause?.originServerTs,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
final asText =
|
final asText =
|
||||||
Message.text(
|
Message.text(
|
||||||
|
|
|
||||||
10
lib/pages/settings_page.dart
Normal file
10
lib/pages/settings_page.dart
Normal 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")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,7 @@ import "package:hooks_riverpod/hooks_riverpod.dart";
|
||||||
import "package:nexus/controllers/current_room_controller.dart";
|
import "package:nexus/controllers/current_room_controller.dart";
|
||||||
import "package:nexus/controllers/spaces_controller.dart";
|
import "package:nexus/controllers/spaces_controller.dart";
|
||||||
import "package:nexus/helpers/extension_helper.dart";
|
import "package:nexus/helpers/extension_helper.dart";
|
||||||
|
import "package:nexus/pages/settings_page.dart";
|
||||||
import "package:nexus/widgets/avatar_or_hash.dart";
|
import "package:nexus/widgets/avatar_or_hash.dart";
|
||||||
|
|
||||||
class Sidebar extends HookConsumerWidget {
|
class Sidebar extends HookConsumerWidget {
|
||||||
|
|
@ -50,6 +51,16 @@ class Sidebar extends HookConsumerWidget {
|
||||||
)
|
)
|
||||||
.toList(),
|
.toList(),
|
||||||
selectedIndex: selectedSpace.value,
|
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(
|
Expanded(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue