32 lines
994 B
C#
32 lines
994 B
C#
using DysonNetwork.Shared.Registry;
|
|
|
|
namespace DysonNetwork.Sphere.Discovery;
|
|
|
|
public class DiscoveryService(RemoteRealmService remoteRealmService)
|
|
{
|
|
public async Task<List<Shared.Models.SnRealm>> GetCommunityRealmAsync(
|
|
string? query,
|
|
int take = 10,
|
|
int offset = 0,
|
|
bool randomizer = false
|
|
)
|
|
{
|
|
var allRealms = await remoteRealmService.GetPublicRealms();
|
|
var communityRealms = allRealms.Where(r => r.IsCommunity);
|
|
|
|
if (!string.IsNullOrEmpty(query))
|
|
{
|
|
communityRealms = communityRealms.Where(r =>
|
|
r.Name.Contains(query, StringComparison.OrdinalIgnoreCase)
|
|
);
|
|
}
|
|
|
|
// Since we don't have CreatedAt in the proto model, we'll just apply randomizer if requested
|
|
var orderedRealms = randomizer
|
|
? communityRealms.OrderBy(_ => Random.Shared.Next())
|
|
: communityRealms;
|
|
|
|
return orderedRealms.Skip(offset).Take(take).ToList();
|
|
}
|
|
}
|