From 4443da566079391b6755125087562e3d7bc6bd7f Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Fri, 26 Dec 2025 01:16:29 +0800 Subject: [PATCH] :bug: Fix sphere rewind --- .../Rewind/SphereRewindServiceGrpc.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/DysonNetwork.Sphere/Rewind/SphereRewindServiceGrpc.cs b/DysonNetwork.Sphere/Rewind/SphereRewindServiceGrpc.cs index d68cf8c..57878cb 100644 --- a/DysonNetwork.Sphere/Rewind/SphereRewindServiceGrpc.cs +++ b/DysonNetwork.Sphere/Rewind/SphereRewindServiceGrpc.cs @@ -103,12 +103,16 @@ public class SphereRewindServiceGrpc( .AsQueryable(); var now = SystemClock.Instance.GetCurrentInstant(); - var mostCalledRoom = await callQuery + var callDurations = await callQuery .Where(c => c.Room.Type == Shared.Models.ChatRoomType.Group) + .Select(c => new { RoomId = c.RoomId, Duration = c.CreatedAt.Minus(c.EndedAt ?? now).Seconds }) + .ToListAsync(); + var mostCalledRoomId = callDurations .GroupBy(c => c.RoomId) - .OrderByDescending(g => g.Sum(c => c.CreatedAt.Minus(c.EndedAt ?? now).Seconds)) - .Select(g => g.First().Room) - .FirstOrDefaultAsync(); + .OrderByDescending(g => g.Sum(c => c.Duration)) + .Select(g => g.Key) + .FirstOrDefault(); + var mostCalledRoom = mostCalledRoomId != Guid.Empty ? await db.ChatRooms.FindAsync(mostCalledRoomId) : null; List? mostCalledChatTopMembers = null; if (mostCalledRoom != null)