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] Include CanBite in NoteResponse

pancakes 5c74927e c916da21

+23 -3
+22 -3
Iceshrimp.Backend/Controllers/Web/Renderers/NoteRenderer.cs
··· 86 86 ?? await db.NoteBookmarks.AnyAsync(p => p.Note == note && p.User == user); 87 87 var pinned = data?.PinnedNotes?.Contains(note.Id) 88 88 ?? await db.UserNotePins.AnyAsync(p => p.Note == note && p.User == user); 89 - var emoji = data?.Emoji?.Where(p => note.Emojis.Contains(p.Id)).ToList() ?? await GetEmojiAsync([note]); 90 - var poll = (data?.Polls ?? await GetPollsAsync([note], user)).FirstOrDefault(p => p.NoteId == note.Id); 89 + var emoji = data?.Emoji?.Where(p => note.Emojis.Contains(p.Id)).ToList() ?? await GetEmojiAsync([note]); 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 92 92 93 return new NoteResponse 93 94 { ··· 110 111 Pinned = pinned, 111 112 Liked = liked, 112 113 Renoted = renoted, 114 + CanBite = canBite, 113 115 Emoji = emoji, 114 116 Poll = poll 115 117 }; ··· 281 283 .ToList(); 282 284 } 283 285 286 + private async Task<List<string>> GetCanBiteAsync(IEnumerable<Note> notes, User? user) 287 + { 288 + if (user == null) 289 + return []; 290 + 291 + var ids = notes.Select(p => p.Id).ToList(); 292 + 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))) 297 + .Select(p => p.Id) 298 + .ToListAsync(); 299 + } 300 + 284 301 public async Task<IEnumerable<NoteResponse>> RenderManyAsync( 285 302 IEnumerable<Note> notes, User? user, Filter.FilterContext? filterContext = null 286 303 ) ··· 299 316 LikedNotes = await GetLikedNotesAsync(allNotes, user), 300 317 Renotes = await GetRenotesAsync(allNotes, user), 301 318 Emoji = await GetEmojiAsync(allNotes), 302 - Polls = await GetPollsAsync(allNotes, user) 319 + Polls = await GetPollsAsync(allNotes, user), 320 + CanBite = await GetCanBiteAsync(allNotes, user) 303 321 }; 304 322 305 323 return await notesList.Select(p => RenderOne(p, user, filterContext, data)).AwaitAllAsync(); ··· 317 335 public List<NoteReactionSchema>? Reactions; 318 336 public List<UserResponse>? Users; 319 337 public List<NotePollSchema>? Polls; 338 + public List<string>? CanBite; 320 339 } 321 340 }
+1
Iceshrimp.Shared/Schemas/Web/NoteResponse.cs
··· 44 44 public required bool Liked { get; set; } 45 45 public required int Likes { get; set; } 46 46 public required bool Renoted { get; set; } 47 + public required bool CanBite { get; set; } 47 48 public required int Renotes { get; set; } 48 49 public required int Replies { get; set; } 49 50 public required UserResponse User { get; set; }