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