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.

[sln] Code cleanup

+49 -83
+2
Iceshrimp.Backend/Core/Extensions/ConsoleLoggerExtensions.cs
··· 1 + using System.Diagnostics.CodeAnalysis; 1 2 using Microsoft.Extensions.Logging.Abstractions; 2 3 using Microsoft.Extensions.Logging.Console; 3 4 ··· 248 249 } 249 250 } 250 251 252 + [SuppressMessage("ReSharper", "RedundantSwitchExpressionArms", Justification = "Clarity")] 251 253 private static string GetLogLevelString(LogLevel logLevel) 252 254 { 253 255 return logLevel switch
+5
Iceshrimp.Backend/Core/Services/QueueService.cs
··· 1 + using System.Diagnostics.CodeAnalysis; 1 2 using System.Text.Json; 2 3 using Iceshrimp.Backend.Core.Configuration; 3 4 using Iceshrimp.Backend.Core.Database; ··· 12 13 13 14 namespace Iceshrimp.Backend.Core.Services; 14 15 16 + [SuppressMessage("ReSharper", "PossiblyMistakenUseOfCancellationToken", 17 + Justification = "Analyzer does not understand the multi stage cancellation algorithm")] 15 18 public class QueueService( 16 19 IServiceScopeFactory scopeFactory, 17 20 ILogger<QueueService> logger, ··· 185 188 public void RaiseJobDelayedEvent(); 186 189 } 187 190 191 + [SuppressMessage("ReSharper", "PossiblyMistakenUseOfCancellationToken", 192 + Justification = "Analyzer does not understand the multi stage cancellation algorithm")] 188 193 public abstract class PostgresJobQueue<T>( 189 194 string name, 190 195 Func<Job, T, IServiceProvider, CancellationToken, Task> handler,
-1
Iceshrimp.Backend/Pages/OAuth/Authorize.cshtml
··· 1 1 @page "/oauth/authorize" 2 - @using Microsoft.AspNetCore.Mvc.TagHelpers 3 2 @using Microsoft.AspNetCore.WebUtilities 4 3 @model AuthorizeModel 5 4
-1
Iceshrimp.Frontend/Components/AscendedNote.razor
··· 1 1 @* ReSharper disable once RedundantUsingDirective *@ 2 2 @using Iceshrimp.Frontend.Components.Note 3 3 @using Iceshrimp.Shared.Schemas.Web 4 - @inject NavigationManager NavigationManager 5 4 <div class="note-parent"> 6 5 <div class="note-container"> 7 6 <div class="note-indent">
+1 -1
Iceshrimp.Frontend/Components/Compose.razor
··· 205 205 private bool Preview { get; set; } 206 206 private List<EmojiResponse> EmojiList { get; set; } = []; 207 207 private int NoteLength { get; set; } 208 - private bool SendLock { get; set; } = false; 208 + private bool SendLock { get; set; } 209 209 private int UploadingFiles { get; set; } 210 210 private string? AttachedQuote { get; set; } 211 211 private List<Choice> PollChoices { get; set; } = [];
+2 -2
Iceshrimp.Frontend/Components/DriveEntry.razor
··· 126 126 } 127 127 128 128 @code { 129 - [Parameter] public DriveFileResponse? File { get; set; } = null; 130 - [Parameter] public DriveFolderResponse? Folder { get; set; } = null; 129 + [Parameter] public DriveFileResponse? File { get; set; } 130 + [Parameter] public DriveFolderResponse? Folder { get; set; } 131 131 private Menu FileMenu { get; set; } = null!; 132 132 private Menu FolderMenu { get; set; } = null!; 133 133 private ElementReference FileButton { get; set; }
+1 -1
Iceshrimp.Frontend/Components/Dropdown.razor
··· 36 36 [Parameter] public EventCallback<TBind> ValueChanged { get; set; } 37 37 private DropdownElement<TBind>? CurrentSelection { get; set; } 38 38 private RenderFragment? CurrentIcon { get; set; } 39 - private bool Visible { get; set; } = false; 39 + private bool Visible { get; set; } 40 40 41 41 private void UpdateSelected(DropdownElement<TBind> element) 42 42 {
-1
Iceshrimp.Frontend/Components/ErrorUi.razor
··· 62 62 63 63 @code { 64 64 [Parameter] [EditorRequired] public required Exception Exception { get; set; } 65 - private IEnumerable<string> _logs = []; 66 65 private IJSInProcessObjectReference _module = null!; 67 66 private List<string> _rawLog = null!; 68 67
+2
Iceshrimp.Frontend/Components/FollowButton.razor
··· 60 60 Follow, 61 61 Unfollow, 62 62 FollowBack, 63 + // ReSharper disable once UnusedMember.Local 64 + // TODO: either reference this elsewhere or remove this piece of code 63 65 FollowLocked, 64 66 CancelRequest, 65 67 Blocking,
+1 -3
Iceshrimp.Frontend/Components/FollowRequestEntry.razor
··· 5 5 @using Microsoft.Extensions.Localization 6 6 @inject IStringLocalizer<Localization> Loc; 7 7 @inject ApiService Api; 8 - @inject NavigationManager NavigationManager; 9 - 10 8 11 9 <div class="follow-request-card"> 12 10 <UserProfileCard User="FollowRequest.User" ShowBio="false"></UserProfileCard> ··· 41 39 [Parameter] [EditorRequired] public required FollowRequestResponse FollowRequest { get; set; } 42 40 [Parameter] [EditorRequired] public required EventCallback<string> OnDelete { get; set; } 43 41 [Parameter] [EditorRequired] public required bool Outgoing { get; set; } 44 - private bool _followBack = false; 42 + private bool _followBack; 45 43 46 44 protected override async Task OnInitializedAsync() 47 45 {
+2 -2
Iceshrimp.Frontend/Components/InlineEmoji.razor
··· 10 10 @code { 11 11 [Parameter, EditorRequired] public required string Name { get; set; } 12 12 [Parameter, EditorRequired] public required string? Url { get; set; } 13 - [Parameter] public bool Hover { get; set; } = false; 13 + [Parameter] public bool Hover { get; set; } 14 14 [Parameter] public string Size { get; set; } = "1.5em"; 15 - [Parameter] public bool Wide { get; set; } = false; 15 + [Parameter] public bool Wide { get; set; } 16 16 }
+3 -3
Iceshrimp.Frontend/Components/MfmText.razor
··· 7 7 @code { 8 8 [Parameter] [EditorRequired] public required string? Text { get; set; } 9 9 [Parameter] public List<EmojiResponse> Emoji { get; set; } = []; 10 - [Parameter] public bool Simple { get; set; } = false; 10 + [Parameter] public bool Simple { get; set; } 11 11 [Parameter] public bool SpeakAsCat { get; set; } 12 12 private MarkupString TextBody { get; set; } 13 13 ··· 16 16 if (Text != null) 17 17 { 18 18 var instance = await MetadataService.Instance.Value; 19 - TextBody = await MfmRenderer.RenderStringAsync(Text, Emoji, instance.AccountDomain, Simple, SpeakAsCat); 19 + TextBody = MfmRenderer.RenderString(Text, Emoji, instance.AccountDomain, Simple, SpeakAsCat); 20 20 } 21 21 } 22 22 ··· 25 25 if (Text != null) 26 26 { 27 27 var instance = await MetadataService.Instance.Value; 28 - TextBody = await MfmRenderer.RenderStringAsync(Text, Emoji, instance.AccountDomain, Simple, SpeakAsCat); 28 + TextBody = MfmRenderer.RenderString(Text, Emoji, instance.AccountDomain, Simple, SpeakAsCat); 29 29 } 30 30 } 31 31 }
+1 -1
Iceshrimp.Frontend/Components/ModerationMenu.razor
··· 2 2 @using Iceshrimp.Frontend.Core.Services 3 3 @using Iceshrimp.Frontend.Localization 4 4 @using Microsoft.Extensions.Localization 5 - @inject NavigationManager Nav; 6 5 @inject IStringLocalizer<Localization> Loc; 7 6 @inject SessionService Session; 7 + 8 8 <div class="nav"> 9 9 @if (Session?.Current?.IsAdmin ?? false) 10 10 {
+1 -1
Iceshrimp.Frontend/Components/Note/Note.razor.cs
··· 12 12 [Parameter] public bool Indented { get; set; } 13 13 [Parameter] [EditorRequired] public required bool OpenNote { get; set; } 14 14 [Parameter] public bool RootNote { get; set; } 15 - private bool _overrideHide = false; 15 + private bool _overrideHide; 16 16 17 17 18 18 private void ShowNote()
+3 -3
Iceshrimp.Frontend/Components/Note/NoteBody.razor
··· 91 91 92 92 private IJSObjectReference? Module { get; set; } 93 93 private ElementReference Body { get; set; } 94 - private bool _showFull = false; 94 + private bool _showFull; 95 95 private bool _cwToggle = true; 96 - private bool _overHeight = false; 97 - private bool _flag = false; 96 + private bool _overHeight; 97 + private bool _flag; 98 98 99 99 protected override async Task OnInitializedAsync() 100 100 {
-2
Iceshrimp.Frontend/Components/Note/NoteComponent.razor
··· 2 2 @using Iceshrimp.Frontend.Core.Services 3 3 @using Iceshrimp.Shared.Schemas.Web 4 4 @implements IDisposable 5 - @inject ApiService ApiService; 6 - @inject ComposeService ComposeService 7 5 @inject SessionService Session; 8 6 @inject ILogger<NoteComponent> Logger; 9 7
+1 -1
Iceshrimp.Frontend/Components/Note/NoteFooter.razor
··· 199 199 200 200 private void Renote(NoteVisibility visibility) 201 201 { 202 - _ = NoteActions.RenoteAsync(Note); 202 + _ = NoteActions.RenoteAsync(Note, visibility); 203 203 } 204 204 205 205 private void Quote()
-3
Iceshrimp.Frontend/Components/Note/NoteMetadata.razor
··· 1 1 @using Iceshrimp.Assets.PhosphorIcons 2 - @using Iceshrimp.Frontend.Localization 3 2 @using Iceshrimp.Shared.Schemas.Web 4 - @using Microsoft.Extensions.Localization 5 - @inject IStringLocalizer<Localization> Loc; 6 3 7 4 <div class="metadata"> 8 5 <span class="info">
+1 -1
Iceshrimp.Frontend/Components/NoteLikeDetails.razor
··· 45 45 private State State { get; set; } 46 46 private List<UserResponse> LikedBy { get; set; } = []; 47 47 private PaginationData Pd { get; set; } = null!; 48 - private bool EndReached { get; set; } = false; 48 + private bool EndReached { get; set; } 49 49 50 50 protected override async Task OnInitializedAsync() 51 51 {
+1 -2
Iceshrimp.Frontend/Components/NoteQuoteDetails.razor
··· 5 5 @using Iceshrimp.Frontend.Components.Note 6 6 @inject ApiService Api; 7 7 @inject ILogger<NoteQuoteDetails> Logger; 8 - @inject NavigationManager Nav; 9 8 10 9 @if (State is State.Loaded) 11 10 { ··· 28 27 private State State { get; set; } 29 28 private List<NoteResponse> Quotes { get; set; } = []; 30 29 private PaginationData Pd { get; set; } = null!; 31 - private bool EndReached { get; set; } = false; 30 + private bool EndReached { get; set; } 32 31 33 32 protected override async Task OnInitializedAsync() 34 33 {
-5
Iceshrimp.Frontend/Components/NotificationComponent.razor
··· 109 109 @code { 110 110 [Parameter] public required NotificationResponse NotificationResponse { get; set; } 111 111 112 - private void OpenFollowRequests() 113 - { 114 - NavigationManager.NavigateTo("/follow-requests"); 115 - } 116 - 117 112 private void OpenProfile() 118 113 { 119 114 var username = $"@{NotificationResponse.User?.Username}";
+2 -4
Iceshrimp.Frontend/Components/NotificationList.razor.cs
··· 1 1 using Iceshrimp.Frontend.Core.Miscellaneous; 2 - using Iceshrimp.Frontend.Core.Services; 3 2 using Iceshrimp.Frontend.Core.Services.NoteStore; 4 3 using Iceshrimp.Shared.Schemas.Web; 5 4 using Microsoft.AspNetCore.Components; ··· 10 9 { 11 10 private string? _minId; 12 11 private State _state = State.Loading; 13 - [Inject] private NotificationStore NotificationStore { get; set; } = null!; 14 - [Inject] private ApiService Api { get; set; } = null!; 15 - private List<NotificationResponse> Notifications { get; set; } = []; 12 + [Inject] private NotificationStore NotificationStore { get; set; } = null!; 13 + private List<NotificationResponse> Notifications { get; set; } = []; 16 14 17 15 public void Dispose() 18 16 {
+3 -6
Iceshrimp.Frontend/Components/RecursiveNote.razor
··· 1 1 @* ReSharper disable once RedundantUsingDirective *@ 2 2 @using Iceshrimp.Frontend.Components.Note 3 - @using Iceshrimp.Frontend.Core.Services 4 3 @using Iceshrimp.Frontend.Core.Services.NoteStore 5 4 @using Iceshrimp.Shared.Schemas.Web 6 - @inject NavigationManager NavigationManager 7 - @inject ApiService Api 8 - @inject RelatedStore Store 5 + @inject RelatedStore Store 9 6 @implements IDisposable 10 7 11 8 @if (_hidden == false) ··· 69 66 [Parameter] [EditorRequired] public required NoteResponse Note { get; set; } 70 67 [Parameter] [EditorRequired] public required int Depth { get; set; } 71 68 [Parameter] [EditorRequired] public required int MaxDepth { get; set; } 72 - private bool _indented = false; 73 - private bool _hidden = false; 69 + private bool _indented; 70 + private bool _hidden; 74 71 75 72 protected override void OnInitialized() 76 73 {
+1 -1
Iceshrimp.Frontend/Components/ScrollEnd.razor
··· 19 19 [Parameter] public string? Class { get; set; } 20 20 [Parameter] public bool RequireReset { get; init; } 21 21 [Parameter] public string? Style { get; set; } 22 - [Parameter] public bool Hide { get; set; } = false; 22 + [Parameter] public bool Hide { get; set; } 23 23 public bool Visible { get; private set; } 24 24 private State _state; 25 25
+3 -7
Iceshrimp.Frontend/Components/SearchComponent.razor
··· 27 27 28 28 @if (_resultType == ResultType.Notes) 29 29 { 30 - <div class="note-results" @ref="Scroller"> 30 + <div class="note-results"> 31 31 @if (NoteSearchInstance?.NoteResponses != null) 32 32 { 33 33 foreach (var note in NoteSearchInstance?.NoteResponses!) ··· 70 70 private NoteSearch? NoteSearchInstance { get; set; } 71 71 private UserSearch? UserSearchInstance { get; set; } 72 72 private IJSInProcessObjectReference Module { get; set; } = null!; 73 - private ElementReference Scroller { get; set; } 74 73 private ResultType _resultType; 75 74 private bool _setScroll; 76 75 private float _scrollTop; ··· 171 170 172 171 private enum ResultType 173 172 { 174 - Default, 175 173 Notes, 176 174 Users, 177 175 None ··· 187 185 private class UserSearch(string searchString, ApiService api, List<UserResponse> userResponses) 188 186 { 189 187 internal required string MinId = userResponses.Last().Id; 190 - internal required string MaxId = userResponses.First().Id; 191 188 internal required string SearchString = searchString; 192 189 internal required ApiService Api = api; 193 190 public required List<UserResponse> UserResponses { get; init; } = userResponses; 194 - public bool SearchComplete = false; 191 + public bool SearchComplete; 195 192 196 193 public async Task FetchOlder() 197 194 { ··· 214 211 private class NoteSearch(string searchString, ApiService api, List<NoteResponse> noteResponses) 215 212 { 216 213 internal required string MinId = noteResponses.Last().Id; 217 - internal required string MaxId = noteResponses.First().Id; 218 214 public required string SearchString = searchString; 219 215 internal required ApiService Api = api; 220 216 public required List<NoteResponse> NoteResponses { get; init; } = noteResponses; 221 - public bool SearchComplete = false; 217 + public bool SearchComplete; 222 218 223 219 public async Task FetchOlder() 224 220 {
-1
Iceshrimp.Frontend/Components/SettingsMenu.razor
··· 1 1 @using Iceshrimp.Assets.PhosphorIcons 2 2 @using Iceshrimp.Frontend.Localization 3 3 @using Microsoft.Extensions.Localization 4 - @inject NavigationManager Nav; 5 4 @inject IStringLocalizer<Localization> Loc; 6 5 <div class="nav"> 7 6 <NavLink href="/settings/profile">
-1
Iceshrimp.Frontend/Components/StreamingStatus.razor
··· 3 3 @using Microsoft.AspNetCore.SignalR.Client 4 4 @using Microsoft.Extensions.Localization 5 5 @inject StreamingService StreamingService 6 - @inject GlobalComponentSvc GlobalComponentSvc 7 6 @inject IStringLocalizer<Localization> Loc 8 7 9 8 <div class="connection-status @(_hubConnectionState == HubConnectionState.Connected ? "fadeout" : "")">
-1
Iceshrimp.Frontend/Components/TimelineNote.razor
··· 1 1 @* ReSharper disable once RedundantUsingDirective *@ 2 2 @using Iceshrimp.Frontend.Components.Note 3 3 @using Iceshrimp.Shared.Schemas.Web 4 - @inject NavigationManager Navigation 5 4 @if (Note.Filtered is { Hide: true }) { } 6 5 else 7 6 {
-6
Iceshrimp.Frontend/Components/UpdateNotice.razor
··· 54 54 StateHasChanged(); 55 55 } 56 56 57 - private void CloseDialog() 58 - { 59 - var module = (IJSInProcessObjectReference)_module; 60 - module.InvokeVoid("closeDialog", Dialog); 61 - } 62 - 63 57 private void OpenDialog() 64 58 { 65 59 var module = (IJSInProcessObjectReference)_module;
+5 -7
Iceshrimp.Frontend/Components/VirtualScroller.cs
··· 3 3 using Iceshrimp.Frontend.Core.Services.StateServicePatterns; 4 4 using Iceshrimp.Frontend.Enums; 5 5 using Iceshrimp.Shared.Helpers; 6 - using Ljbc1994.Blazor.IntersectionObserver; 7 6 using Microsoft.AspNetCore.Components; 8 7 using Microsoft.AspNetCore.Components.Rendering; 9 8 using Microsoft.AspNetCore.Components.Routing; ··· 15 14 public class VirtualScroller<T> : ComponentBase, IDisposable where T : IIdentifiable 16 15 17 16 { 18 - [Inject] private IIntersectionObserverService ObserverService { get; set; } = null!; 19 17 [Inject] private StateService State { get; set; } = null!; 20 18 [Inject] private NavigationManager Navigation { get; set; } = null!; 21 19 [Inject] private ILogger<NewVirtualScroller> Logger { get; set; } = null!; ··· 39 37 private SortedDictionary<string, Child>? _stateItems; 40 38 41 39 private float _scrollY; 42 - private bool _setScroll = false; 43 - private bool _shouldRender = false; 44 - private bool _initialized = false; 45 - private bool _hideBefore = true; 46 - private bool _hideAfter = true; 40 + private bool _setScroll; 41 + private bool _shouldRender; 42 + private bool _initialized; 43 + private bool _hideBefore = true; 44 + private bool _hideAfter = true; 47 45 48 46 private IDisposable? _locationChangeHandlerDisposable; 49 47
+3 -5
Iceshrimp.Frontend/Core/Miscellaneous/RenderMfm.cs
··· 12 12 13 13 public static partial class MfmRenderer 14 14 { 15 - public static async Task<MarkupString> RenderStringAsync( 15 + public static MarkupString RenderString( 16 16 string text, List<EmojiResponse> emoji, string accountDomain, bool simple = false, bool speakAsCat = false 17 17 ) 18 18 { 19 19 var res = MfmParser.Parse(text, simple); 20 - var context = BrowsingContext.New(); 21 - var document = await context.OpenNewAsync(); 22 - var renderedMfm = RenderMultipleNodes(res, document, emoji, accountDomain, simple, speakAsCat); 20 + var renderedMfm = RenderMultipleNodes(res, emoji, accountDomain, simple, speakAsCat); 23 21 var html = renderedMfm.ToHtml(); 24 22 return new MarkupString(html); 25 23 } ··· 30 28 private static IElement CreateElement(string name) => OwnerDocument.Value.CreateElement(name); 31 29 32 30 private static INode RenderMultipleNodes( 33 - IEnumerable<IMfmNode> nodes, IDocument document, List<EmojiResponse> emoji, string accountDomain, bool simple, 31 + IEnumerable<IMfmNode> nodes, List<EmojiResponse> emoji, string accountDomain, bool simple, 34 32 bool speakAsCat 35 33 ) 36 34 {
+2 -2
Iceshrimp.Frontend/Core/Services/NoteStore/NoteActions.cs
··· 165 165 } 166 166 } 167 167 168 - public async Task RenoteAsync(NoteBase note) 168 + public async Task RenoteAsync(NoteBase note, NoteVisibility visibility) 169 169 { 170 170 note.Renotes++; 171 171 Broadcast(note); 172 172 try 173 173 { 174 - await api.Notes.RenoteNoteAsync(note.Id, note.Visibility); 174 + await api.Notes.RenoteNoteAsync(note.Id, visibility); 175 175 } 176 176 catch (ApiException) 177 177 {
+2 -3
Iceshrimp.Frontend/Layout/Sidebar.razor
··· 9 9 @inject SessionService Session; 10 10 11 11 <GlobalComponents></GlobalComponents> 12 - <div @ref="SidebarElementRef" class="sidebar @(_open ? "open" : "")" tabindex="0"> 12 + <div class="sidebar @(_open ? "open" : "")" tabindex="0"> 13 13 <div class="header"> 14 14 @*ToDo: account dropdown*@ 15 15 <div @ref="_avatar" @onclick="OpenAccountDropdown" class="avatar" @onclick:stopPropagation="true" > ··· 108 108 109 109 @code { 110 110 private Compose _compose = null!; 111 - private bool _open = false; 112 - private ElementReference SidebarElementRef { get; set; } 111 + private bool _open; 113 112 private AccountDropdown _accountDropdown = null!; 114 113 private ElementReference _avatar; 115 114
+1 -4
Iceshrimp.Frontend/Pages/BookmarksPage.razor
··· 1 1 @page "/bookmarks" 2 2 @inject TimelineStore Store; 3 - @inject StateService State; 4 3 @using Iceshrimp.Frontend.Core.Miscellaneous 5 4 @using Iceshrimp.Shared.Schemas.Web 6 5 @using Iceshrimp.Frontend.Core.Services.NoteStore ··· 11 10 @using Microsoft.AspNetCore.Components.Sections 12 11 @using Iceshrimp.Frontend.Components 13 12 @using Iceshrimp.Assets.PhosphorIcons 14 - @using Iceshrimp.Frontend.Core.Services 15 13 @using Iceshrimp.Shared.Helpers 16 14 @attribute [Authorize] 17 15 @inject IStringLocalizer<Localization> Loc; ··· 27 25 @if (NoteResponses is not null && _loaded) 28 26 { 29 27 <VirtualScroller InitialItems="NoteResponses" ItemProvider="Provider" StateKey="@Timeline.Key" 30 - ItemProviderById="ItemProviderById" StreamingItemProvider="Store" @ref="VirtualScroller"> 28 + ItemProviderById="ItemProviderById" StreamingItemProvider="Store"> 31 29 <ItemTemplate Context="note"> 32 30 <CascadingValue Value="Store" TValue="NoteMessageProvider" Name="Provider"> 33 31 <TimelineNote Note="note"></TimelineNote> ··· 41 39 private bool _loaded; 42 40 private List<NoteResponse>? NoteResponses { get; set; } 43 41 private TimelineStore.Timeline Timeline { get; set; } = null!; 44 - private VirtualScroller<NoteResponse>? VirtualScroller { get; set; } 45 42 46 43 protected override async Task OnInitializedAsync() 47 44 {
-1
Iceshrimp.Frontend/Pages/Settings/Migration.razor
··· 14 14 @inject ApiService Api; 15 15 @inject GlobalComponentSvc Global; 16 16 @inject IStringLocalizer<Localization> Loc; 17 - @inject NavigationManager Nav; 18 17 19 18 <HeadTitle Text="@Loc["Migration"]"/> 20 19