🐛 Fixes in CloudFile filemeta transfer via gRPC
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Text.Json.Serialization;
|
||||
using DysonNetwork.Pass.Account;
|
||||
using DysonNetwork.Shared.Data;
|
||||
using DysonNetwork.Sphere.Chat;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
@@ -48,6 +49,7 @@ public class RealmMember : ModelBase
|
||||
public Guid RealmId { get; set; }
|
||||
public Realm Realm { get; set; } = null!;
|
||||
public Guid AccountId { get; set; }
|
||||
[NotMapped] public Account? Account { get; set; }
|
||||
|
||||
public int Role { get; set; } = RealmMemberRole.Normal;
|
||||
public Instant? JoinedAt { get; set; }
|
||||
|
@@ -62,7 +62,7 @@ public class RealmController(
|
||||
.Include(e => e.Realm)
|
||||
.ToListAsync();
|
||||
|
||||
return members.ToList();
|
||||
return await rs.LoadMemberAccounts(members);
|
||||
}
|
||||
|
||||
public class RealmMemberRequest
|
||||
@@ -256,7 +256,7 @@ public class RealmController(
|
||||
//
|
||||
// var result = members.Skip(offset).Take(take).ToList();
|
||||
//
|
||||
// return Ok(result);
|
||||
// return Ok(await rs.LoadMemberAccounts(result));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
@@ -269,7 +269,7 @@ public class RealmController(
|
||||
.Take(take)
|
||||
.ToListAsync();
|
||||
|
||||
return Ok(members);
|
||||
return Ok(await rs.LoadMemberAccounts(members));
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ public class RealmController(
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (member is null) return NotFound();
|
||||
return Ok(member);
|
||||
return Ok(await rs.LoadMemberAccount(member));
|
||||
}
|
||||
|
||||
[HttpDelete("{slug}/members/me")]
|
||||
|
@@ -1,5 +1,6 @@
|
||||
using DysonNetwork.Shared;
|
||||
using DysonNetwork.Shared.Proto;
|
||||
using DysonNetwork.Shared.Registry;
|
||||
using DysonNetwork.Sphere.Localization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Localization;
|
||||
@@ -10,7 +11,8 @@ public class RealmService(
|
||||
AppDatabase db,
|
||||
PusherService.PusherServiceClient pusher,
|
||||
AccountService.AccountServiceClient accounts,
|
||||
IStringLocalizer<NotificationResource> localizer
|
||||
IStringLocalizer<NotificationResource> localizer,
|
||||
AccountClientHelper accountsHelper
|
||||
)
|
||||
{
|
||||
public async Task SendInviteNotify(RealmMember member)
|
||||
@@ -44,4 +46,24 @@ public class RealmService(
|
||||
.FirstOrDefaultAsync(m => m.RealmId == realmId && m.AccountId == accountId);
|
||||
return member?.Role >= maxRequiredRole;
|
||||
}
|
||||
|
||||
public async Task<RealmMember> LoadMemberAccount(RealmMember member)
|
||||
{
|
||||
var account = await accountsHelper.GetAccount(member.AccountId);
|
||||
member.Account = Pass.Account.Account.FromProtoValue(account);
|
||||
return member;
|
||||
}
|
||||
|
||||
public async Task<List<RealmMember>> LoadMemberAccounts(ICollection<RealmMember> members)
|
||||
{
|
||||
var accountIds = members.Select(m => m.AccountId).ToList();
|
||||
var accounts = (await accountsHelper.GetAccountBatch(accountIds)).ToDictionary(a => Guid.Parse(a.Id), a => a);
|
||||
|
||||
return members.Select(m =>
|
||||
{
|
||||
if (accounts.TryGetValue(m.AccountId, out var account))
|
||||
m.Account = Pass.Account.Account.FromProtoValue(account);
|
||||
return m;
|
||||
}).ToList();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user