a fork of iceshrimp.net but a tweaked frontend to my personal liking. waow
fediverse social-media social iceshrimp fedi
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

[backend/web] Optimize note CanBite query

pancakes ab9bf774 9475e76b

+9 -6
+9 -6
Iceshrimp.Backend/Controllers/Web/Renderers/NoteRenderer.cs
··· 88 88 ?? await db.UserNotePins.AnyAsync(p => p.Note == note && p.User == user); 89 89 var emoji = data?.Emoji?.Where(p => note.Emojis.Contains(p.Id)).ToList() ?? await GetEmojiAsync([note]); 90 90 var poll = (data?.Polls ?? await GetPollsAsync([note], user)).FirstOrDefault(p => p.NoteId == note.Id); 91 - var canBite = (data?.CanBite ?? await GetCanBiteAsync([note], user)).Any(p => p == note.Id) && note.UserId != user?.Id; 91 + var canBite = (data?.CanBite ?? await GetCanBiteAsync([note], user)).Any(p => p == note.UserId); 92 92 93 93 return new NoteResponse 94 94 { ··· 288 288 if (user == null) 289 289 return []; 290 290 291 - var ids = notes.Select(p => p.Id).ToList(); 291 + var ids = notes.Where(p => p.User != user && p.User.CanBite != null).Select(p => p.UserId).Distinct().ToList(); 292 + 293 + if (ids.Count == 0) 294 + return []; 292 295 293 - return await db.Notes.Where(p => ids.Contains(p.Id)) 294 - .Where(p => p.User.CanBite == User.BiteControl.Public 295 - || (p.User.CanBite == User.BiteControl.Followers 296 - && db.Followings.Any(f => f.Followee == p.User && f.Follower == user))) 296 + return await db.Users.Where(p => ids.Contains(p.Id)) 297 + .Where(p => p.CanBite == User.BiteControl.Public 298 + || (p.CanBite == User.BiteControl.Followers 299 + && db.Followings.Any(f => f.Followee == p && f.Follower == user))) 297 300 .Select(p => p.Id) 298 301 .ToListAsync(); 299 302 }