#nullable enable using System.Collections.Immutable; using System.Threading.Tasks; using Barotrauma.Networking; namespace Barotrauma { abstract class FriendProvider { public async Task> RetrieveFriendWithAvatar(AccountId id, int size) { var friendOption = await RetrieveFriend(id); if (!friendOption.TryUnwrap(out var friend)) { return Option.None; } friend.Avatar = await RetrieveAvatar(friend, size); return Option.Some(friend); } public abstract Task> RetrieveFriend(AccountId id); public abstract Task> RetrieveFriends(); public abstract Task> RetrieveAvatar(FriendInfo friend, int avatarSize); public abstract Task GetSelfUserName(); } }