fix avatar parsing
This commit is contained in:
parent
a5ddce3d08
commit
46d7ec4202
4 changed files with 17 additions and 25 deletions
|
|
@ -1,8 +1,6 @@
|
|||
import "package:collection/collection.dart";
|
||||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/client_state_controller.dart";
|
||||
import "package:nexus/helpers/extensions/mxc_to_https.dart";
|
||||
import "package:nexus/models/read_receipt.dart";
|
||||
import "package:nexus/models/room.dart";
|
||||
|
||||
|
|
@ -15,13 +13,6 @@ class RoomsController extends Notifier<IMap<String, Room>> {
|
|||
ISet<String> leftRooms, {
|
||||
bool addToNewEvents = true,
|
||||
}) {
|
||||
final homeserver =
|
||||
ref.watch(
|
||||
ClientStateController.provider.select(
|
||||
(value) => value?.homeserverUrl,
|
||||
),
|
||||
) ??
|
||||
"";
|
||||
final merged = rooms.entries.fold(state, (acc, entry) {
|
||||
final roomId = entry.key;
|
||||
final incoming = entry.value;
|
||||
|
|
@ -36,13 +27,7 @@ class RoomsController extends Notifier<IMap<String, Room>> {
|
|||
roomId,
|
||||
existing?.copyWith(
|
||||
hasMore: incoming.hasMore,
|
||||
metadata:
|
||||
incoming.metadata?.copyWith(
|
||||
avatar:
|
||||
incoming.metadata?.avatar?.mxcToHttps(homeserver) ??
|
||||
existing.metadata?.avatar,
|
||||
) ??
|
||||
existing.metadata,
|
||||
metadata: incoming.metadata ?? existing.metadata,
|
||||
events: events!,
|
||||
state: incoming.state.entries.fold(
|
||||
existing.state,
|
||||
|
|
@ -72,11 +57,7 @@ class RoomsController extends Notifier<IMap<String, Room>> {
|
|||
),
|
||||
),
|
||||
) ??
|
||||
incoming.copyWith(
|
||||
metadata: incoming.metadata?.copyWith(
|
||||
avatar: incoming.metadata?.avatar?.mxcToHttps(homeserver),
|
||||
),
|
||||
),
|
||||
incoming,
|
||||
);
|
||||
});
|
||||
|
||||
|
|
@ -84,6 +65,7 @@ class RoomsController extends Notifier<IMap<String, Room>> {
|
|||
merged,
|
||||
(acc, roomId) => acc.remove(roomId),
|
||||
);
|
||||
|
||||
state = prunedList;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class UserController extends AsyncNotifier<MembershipContent> {
|
|||
),
|
||||
);
|
||||
|
||||
if (member is MembershipContent) {
|
||||
if (member?.content is MembershipContent) {
|
||||
return member!.content as MembershipContent;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@ import "package:color_hash/color_hash.dart";
|
|||
import "package:cross_cache/cross_cache.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/client_state_controller.dart";
|
||||
import "package:nexus/controllers/cross_cache_controller.dart";
|
||||
import "package:nexus/helpers/extensions/get_headers.dart";
|
||||
import "package:nexus/helpers/extensions/mxc_to_https.dart";
|
||||
|
||||
class AvatarOrHash extends ConsumerWidget {
|
||||
final Uri? avatar;
|
||||
|
|
@ -28,6 +30,14 @@ class AvatarOrHash extends ConsumerWidget {
|
|||
color: ColorHash(title).color,
|
||||
child: Center(child: Text(title.isEmpty ? "" : title[0])),
|
||||
);
|
||||
final parsedAvatar = avatar?.mxcToHttps(
|
||||
ref.watch(
|
||||
ClientStateController.provider.select(
|
||||
(value) => value?.homeserverUrl,
|
||||
),
|
||||
) ??
|
||||
"",
|
||||
);
|
||||
return SizedBox(
|
||||
width: height,
|
||||
height: height,
|
||||
|
|
@ -42,11 +52,11 @@ class AvatarOrHash extends ConsumerWidget {
|
|||
child: SizedBox(
|
||||
width: height,
|
||||
height: height,
|
||||
child: avatar == null
|
||||
child: parsedAvatar == null
|
||||
? fallback ?? box
|
||||
: Image(
|
||||
image: CachedNetworkImage(
|
||||
avatar.toString(),
|
||||
parsedAvatar.toString(),
|
||||
ref.watch(CrossCacheController.provider),
|
||||
headers: ref.headers,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ class RoomChat extends HookConsumerWidget {
|
|||
children: [
|
||||
Positioned.fill(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 8),
|
||||
padding: EdgeInsets.symmetric(horizontal: 12),
|
||||
child: switch (ref.watch(controllerProvider)) {
|
||||
AsyncData(:final value) ||
|
||||
AsyncLoading(:final value?) => CustomScrollView(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue