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.

nevermind Roll that back

Niko 1c971dcc bbb17908

+106 -108
+104
Iceshrimp.Frontend/Components/ProfileInfo.razor
··· 59 59 </span> 60 60 } 61 61 </div> 62 + <div class="profile-buttons"> 63 + <FollowButton User="User" UserProfile="UserProfile"/> 64 + <button @ref="MenuButton" class="button context-button" @onclick="ToggleMenu" @onclick:stopPropagation="true" aria-label="more"> 65 + <Icon Name="Icons.DotsThreeOutline" Size="1.3em"/> 66 + <Menu @ref="ContextMenu"> 67 + @if (UserProfile.Relations.HasFlag(Relations.Self)) 68 + { 69 + <MenuElement Icon="Icons.Pencil" OnSelect="EditProfile"> 70 + <Text>@Loc["Edit profile"]</Text> 71 + </MenuElement> 72 + } 73 + else if (UserProfile.Relations.HasFlag(Relations.CanBite)) 74 + { 75 + <MenuElement Icon="Icons.Tooth" OnSelect="Bite"> 76 + <Text>@Loc["Bite"]</Text> 77 + </MenuElement> 78 + } 79 + @if (User.Host != null) 80 + { 81 + <MenuElement Icon="Icons.ArrowsClockwise" OnSelect="RefetchUser"> 82 + <Text>@Loc["Refetch"]</Text> 83 + </MenuElement> 84 + } 85 + <MenuElement Icon="Icons.Info" OnSelect="OpenAbout"> 86 + <Text>@Loc["About"]</Text> 87 + </MenuElement> 88 + <hr class="rule"/> 89 + @if (User.Host != null && UserProfile.Url != null) 90 + { 91 + <MenuElement Icon="Icons.ArrowSquareOut" OnSelect="OpenOriginal"> 92 + <Text>@Loc["Open original page"]</Text> 93 + </MenuElement> 94 + } 95 + <MenuElement Icon="Icons.Share" OnSelect="CopyLink"> 96 + <Text>@Loc["Copy link"]</Text> 97 + </MenuElement> 98 + @if (User.Host != null && UserProfile.Url != null) 99 + { 100 + <MenuElement Icon="Icons.ShareNetwork" OnSelect="CopyLinkRemote"> 101 + <Text>@Loc["Copy link (remote)"]</Text> 102 + </MenuElement> 103 + } 104 + <MenuElement Icon="Icons.At" OnSelect="CopyUsername"> 105 + <Text>@Loc["Copy username"]</Text> 106 + </MenuElement> 107 + @if (User.Host == null) 108 + { 109 + <MenuElement Icon="Icons.Atom" OnSelect="CopyAtomFeed"> 110 + <Text>@Loc["Copy Atom feed"]</Text> 111 + </MenuElement> 112 + <MenuElement Icon="Icons.BracketsCurly" OnSelect="CopyJsonFeed"> 113 + <Text>@Loc["Copy JSON feed"]</Text> 114 + </MenuElement> 115 + <MenuElement Icon="Icons.Rss" OnSelect="CopyRssFeed"> 116 + <Text>@Loc["Copy RSS feed"]</Text> 117 + </MenuElement> 118 + } 119 + @if (!UserProfile.Relations.HasFlag(Relations.Self)) 120 + { 121 + <hr class="rule"/> 122 + @if (UserProfile.Relations.HasFlag(Relations.Muting)) 123 + { 124 + <MenuElement Icon="Icons.Eye" OnSelect="Unmute"> 125 + <Text>@Loc["Unmute"]</Text> 126 + </MenuElement> 127 + } 128 + else 129 + { 130 + <MenuElement Icon="Icons.EyeSlash" OnSelect="Mute"> 131 + <Text>@Loc["Mute"]</Text> 132 + </MenuElement> 133 + <MenuElement Icon="Icons.Timer" OnSelect="TemporaryMute"> 134 + <Text>@Loc["Temporary mute"]</Text> 135 + </MenuElement> 136 + } 137 + 138 + @if (UserProfile.Relations.HasFlag(Relations.FollowedBy)) 139 + { 140 + <MenuElement Icon="Icons.LinkBreak" OnSelect="RemoveFromFollowers" Danger> 141 + <Text>@Loc["Remove follower"]</Text> 142 + </MenuElement> 143 + } 144 + 145 + @if (UserProfile.Relations.HasFlag(Relations.Blocking)) 146 + { 147 + <MenuElement Icon="Icons.Prohibit" OnSelect="Unblock" Danger> 148 + <Text>@Loc["Unblock"]</Text> 149 + </MenuElement> 150 + } 151 + else 152 + { 153 + <MenuElement Icon="Icons.Prohibit" OnSelect="Block" Danger> 154 + <Text>@Loc["Block"]</Text> 155 + </MenuElement> 156 + } 157 + 158 + <MenuElement Icon="Icons.WarningCircle" OnSelect="Report" Danger> 159 + <Text>@Loc["Report"]</Text> 160 + </MenuElement> 161 + } 162 + <ClosingBackdrop OnClose="ContextMenu.Close"></ClosingBackdrop> 163 + </Menu> 164 + </button> 165 + </div> 62 166 </div> 63 167 @if (UserProfile.Bio != null) 64 168 {
-2
Iceshrimp.Frontend/Components/ProfileInfo.razor.css
··· 65 65 gap: 0.5rem; 66 66 margin: 0rem; 67 67 align-items: start; 68 - margin-top: 10px; 69 68 } 70 69 71 70 .badge { ··· 87 86 88 87 .profile-buttons { 89 88 align-items: center; 90 - margin-top: 20px; 91 89 } 92 90 93 91 .context-button {
+2 -106
Iceshrimp.Frontend/Pages/ProfileView.razor
··· 72 72 </div> 73 73 </div> 74 74 </div> 75 - <div class="profile-buttons"> 76 - <FollowButton User="User" UserProfile="UserProfile"/> 77 - <button @ref="MenuButton" class="button context-button" @onclick="ToggleMenu" @onclick:stopPropagation="true" aria-label="more"> 78 - <Icon Name="Icons.DotsThreeOutline" Size="1.3em"/> 79 - <Menu @ref="ContextMenu"> 80 - @if (UserProfile.Relations.HasFlag(Relations.Self)) 81 - { 82 - <MenuElement Icon="Icons.Pencil" OnSelect="EditProfile"> 83 - <Text>@Loc["Edit profile"]</Text> 84 - </MenuElement> 85 - } 86 - else if (UserProfile.Relations.HasFlag(Relations.CanBite)) 87 - { 88 - <MenuElement Icon="Icons.Tooth" OnSelect="Bite"> 89 - <Text>@Loc["Bite"]</Text> 90 - </MenuElement> 91 - } 92 - @if (User.Host != null) 93 - { 94 - <MenuElement Icon="Icons.ArrowsClockwise" OnSelect="RefetchUser"> 95 - <Text>@Loc["Refetch"]</Text> 96 - </MenuElement> 97 - } 98 - <MenuElement Icon="Icons.Info" OnSelect="OpenAbout"> 99 - <Text>@Loc["About"]</Text> 100 - </MenuElement> 101 - <hr class="rule"/> 102 - @if (User.Host != null && UserProfile.Url != null) 103 - { 104 - <MenuElement Icon="Icons.ArrowSquareOut" OnSelect="OpenOriginal"> 105 - <Text>@Loc["Open original page"]</Text> 106 - </MenuElement> 107 - } 108 - <MenuElement Icon="Icons.Share" OnSelect="CopyLink"> 109 - <Text>@Loc["Copy link"]</Text> 110 - </MenuElement> 111 - @if (User.Host != null && UserProfile.Url != null) 112 - { 113 - <MenuElement Icon="Icons.ShareNetwork" OnSelect="CopyLinkRemote"> 114 - <Text>@Loc["Copy link (remote)"]</Text> 115 - </MenuElement> 116 - } 117 - <MenuElement Icon="Icons.At" OnSelect="CopyUsername"> 118 - <Text>@Loc["Copy username"]</Text> 119 - </MenuElement> 120 - @if (User.Host == null) 121 - { 122 - <MenuElement Icon="Icons.Atom" OnSelect="CopyAtomFeed"> 123 - <Text>@Loc["Copy Atom feed"]</Text> 124 - </MenuElement> 125 - <MenuElement Icon="Icons.BracketsCurly" OnSelect="CopyJsonFeed"> 126 - <Text>@Loc["Copy JSON feed"]</Text> 127 - </MenuElement> 128 - <MenuElement Icon="Icons.Rss" OnSelect="CopyRssFeed"> 129 - <Text>@Loc["Copy RSS feed"]</Text> 130 - </MenuElement> 131 - } 132 - @if (!UserProfile.Relations.HasFlag(Relations.Self)) 133 - { 134 - <hr class="rule"/> 135 - @if (UserProfile.Relations.HasFlag(Relations.Muting)) 136 - { 137 - <MenuElement Icon="Icons.Eye" OnSelect="Unmute"> 138 - <Text>@Loc["Unmute"]</Text> 139 - </MenuElement> 140 - } 141 - else 142 - { 143 - <MenuElement Icon="Icons.EyeSlash" OnSelect="Mute"> 144 - <Text>@Loc["Mute"]</Text> 145 - </MenuElement> 146 - <MenuElement Icon="Icons.Timer" OnSelect="TemporaryMute"> 147 - <Text>@Loc["Temporary mute"]</Text> 148 - </MenuElement> 149 - } 150 - 151 - @if (UserProfile.Relations.HasFlag(Relations.FollowedBy)) 152 - { 153 - <MenuElement Icon="Icons.LinkBreak" OnSelect="RemoveFromFollowers" Danger> 154 - <Text>@Loc["Remove follower"]</Text> 155 - </MenuElement> 156 - } 157 - 158 - @if (UserProfile.Relations.HasFlag(Relations.Blocking)) 159 - { 160 - <MenuElement Icon="Icons.Prohibit" OnSelect="Unblock" Danger> 161 - <Text>@Loc["Unblock"]</Text> 162 - </MenuElement> 163 - } 164 - else 165 - { 166 - <MenuElement Icon="Icons.Prohibit" OnSelect="Block" Danger> 167 - <Text>@Loc["Block"]</Text> 168 - </MenuElement> 169 - } 170 - 171 - <MenuElement Icon="Icons.WarningCircle" OnSelect="Report" Danger> 172 - <Text>@Loc["Report"]</Text> 173 - </MenuElement> 174 - } 175 - <ClosingBackdrop OnClose="ContextMenu.Close"></ClosingBackdrop> 176 - </Menu> 177 - </button> 178 - </div> 179 75 </div> 180 76 <ProfileInfo Emojis="@UserResponse.Emojis" User="UserResponse" UserProfile="Profile"/> 181 77 </div> ··· 231 127 } 232 128 233 129 @code { 234 - [Parameter] public string? User { get; set; } 130 + [Parameter] public string? User { get; set; } 235 131 [Parameter] public string? Host { get; set; } 236 132 private IJSObjectReference Module { get; set; } = null!; 237 133 private ElementReference EndPinnedRef { get; set; } ··· 242 138 private List<NoteResponse> UserPinned { get; set; } = []; 243 139 private List<NoteResponse> UserNotes { get; set; } = []; 244 140 private State State { get; set; } 245 - 141 + 246 142 private bool _fetchLock; 247 143 248 144 private async Task GetNotes(string? minId)