diff --git a/lib/controllers/client_controller.dart b/lib/controllers/client_controller.dart index f1ff6a6..fd84f5d 100644 --- a/lib/controllers/client_controller.dart +++ b/lib/controllers/client_controller.dart @@ -231,10 +231,10 @@ class ClientController extends AsyncNotifier { Future paginate(PaginateRequest request) async => Paginate.fromJson(await _sendCommand("paginate", request.toJson())); - Future getProfile(String userId) async { - final json = await _sendCommand("get_profile", {"user_id": userId}); - return Profile.fromJsonWithCatch({...json, "id": userId}); - } + Future getProfile(String userId) async => Profile.fromJsonWithCatch({ + ...(await _sendCommand("get_profile", {"user_id": userId})), + "id": userId, + }); Future reportEvent(ReportRequest request) => _sendCommand("report_event", request.toJson()); diff --git a/lib/controllers/profile_controller.dart b/lib/controllers/profile_controller.dart index 9aa0e09..6131034 100644 --- a/lib/controllers/profile_controller.dart +++ b/lib/controllers/profile_controller.dart @@ -12,6 +12,8 @@ class ProfileController extends AsyncNotifier { return client.getProfile(userId); } - static final provider = AsyncNotifierProvider.family - .autoDispose(ProfileController.new); + static final provider = + AsyncNotifierProvider.family( + ProfileController.new, + ); } diff --git a/lib/models/content/membership.dart b/lib/models/content/membership.dart index dbbd123..aa5a36d 100644 --- a/lib/models/content/membership.dart +++ b/lib/models/content/membership.dart @@ -7,16 +7,8 @@ part "membership.g.dart"; @freezed abstract class MembershipContent extends Content with _$MembershipContent { MembershipContent._(); - - static String? displaynameFromJson(String? displayName) => - displayName?.isEmpty == true ? null : displayName; - factory MembershipContent({ - @JsonKey( - name: "displayname", - fromJson: MembershipContent.displaynameFromJson, - ) - required String? displayName, + @JsonKey(name: "displayname") required String? displayName, @JsonKey(name: "membership") required MembershipStatus status, Uri? avatarUrl, String? reason, diff --git a/lib/models/profile.dart b/lib/models/profile.dart index 6ae1e94..6ba2656 100644 --- a/lib/models/profile.dart +++ b/lib/models/profile.dart @@ -1,32 +1,26 @@ import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:freezed_annotation/freezed_annotation.dart"; -import "package:nexus/models/content/membership.dart"; part "profile.freezed.dart"; part "profile.g.dart"; +Object? readPronouns(Map map, _) => + map["m.pronouns"] ?? map["io.fsky.nyx.pronouns"]; + +Object? readTimezone(Map map, _) => + map["m.tz"] ?? map["us.cloke.msc4175.tz"]; + @freezed abstract class Profile with _$Profile { - static Object? readPronouns(Map map, _) => - map["m.pronouns"] ?? map["io.fsky.nyx.pronouns"]; - - static Object? readTimezone(Map map, _) => - map["m.tz"] ?? map["us.cloke.msc4175.tz"]; - const factory Profile({ required String id, String? parseError, Uri? avatarUrl, + @JsonKey(name: "displayname") String? displayName, - @JsonKey( - name: "displayname", - fromJson: MembershipContent.displaynameFromJson, - ) - String? displayName, - - @JsonKey(readValue: Profile.readTimezone, name: "m.tz") String? timezone, + @JsonKey(readValue: readTimezone, name: "m.tz") String? timezone, @Default(IList.empty()) - @JsonKey(readValue: Profile.readPronouns, name: "io.fsky.nyx.pronouns") + @JsonKey(readValue: readPronouns, name: "io.fsky.nyx.pronouns") IList pronouns, }) = _Profile;