unblockUser method
- UserId id
override
Removes the specified User from the blocklist of the authenticated MyUser.
Implementation
@override
Future<void> unblockUser(UserId id) async {
Log.debug('unblockUser($id)', '$runtimeType');
final RxUser? user = users[id];
final BlocklistRecord? record = user?.user.value.isBlocked;
if (user?.user.value.isBlocked != null) {
user?.user.value.isBlocked = null;
user?.user.refresh();
}
try {
try {
await Backoff.run(
() async {
await _graphQlProvider.unblockUser(id);
},
retryIf: (e) => e.isNetworkRelated,
retries: 10,
);
} on UnblockUserException catch (e) {
switch (e.code) {
case UnblockUserErrorCode.unknownUser:
// No-op.
break;
case UnblockUserErrorCode.artemisUnknown:
rethrow;
}
}
} catch (_) {
if (user != null && user.user.value.isBlocked != record) {
user.user.value.isBlocked = record ?? user.user.value.isBlocked;
user.user.refresh();
}
rethrow;
}
}