R1 cleanup: collAnon and dead code gone, no IndexedDB, honest PWA files
Build / Build (push) Successful in 51s
Build / Build (push) Successful in 51s
Starts the completion program (SocialPub docs/ROADMAP.md, "Owner decisions on finishing everything", 2026-10-17). - The localizer's namespace is decePubClient.Services; collAnon is gone from the repo. - Dead code: PagesBase, VConstants, SettingsOptions, ViewLanguage, unused APIs routes, InstanceService.Self, RequestStats.LastOf/AverageMs, PostAnon/DeleteTotallyAnon, unused AppStatusService methods and their main.js helpers (the app badge stays for Web Push), ExtensionMethods/SUtility leftovers (Markdig and BlazorZXingJs packages go), unused PublicCacheData/PageSettings/AppConfiguration fields, commented-out code. - The client log in IndexedDB, which nothing ever read, goes with the whole IndexedDB layer (DnetIndexedDb, IStorage): logs go to the browser console; main.js deletes the old "data" database once. - The solution names the real ClientModels project. Unused vendor assets (fontawesome, solid, open-iconic, rxjs) go. - robots.txt disallows everything; manifest.json and index.html say decePub; the service worker's cache name follows each publish's assets version, so old caches are purged. - MessageType is Visibility (member names kept: they are resx keys); ExpandMessage.razor is Thread.razor (same route). - i18n: dead keys removed, Italian "camera" is "punto di vista", DInputBase/DCalendar validation messages come from ErrorMessages, DataTransfer's spinner has its label. - CLAUDE.md follows: client storage, JS interop, PWA, the D fields' messages. Verified: dotnet build decePubClient.csproj and decePubClient.sln -c Release (0 errors, no new warnings); a Pasture publish served by the pasture's decepub peer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
1 parent
e4414f1ac9
commit
fd2f2e7c65
79 files changed
+155
-6673
No files matched your search
@@ -9,7 +9,6 @@ public static class APIs
|
||||
{
|
||||
public const string ClientApiPrefix = "clientapi/";
|
||||
public const string MastodonPrefix = "api/";
|
||||
public const string OAuthPrefix = "oauth/";
|
||||
|
||||
public static class ClientApi
|
||||
{
|
||||
@@ -21,7 +20,6 @@ public static class APIs
|
||||
public const string GET_SniffAgain = "clientapi/user/sniff/again";
|
||||
public const string POST_UpdatePassword = "clientapi/user/update/password";
|
||||
public const string POST_DeleteAccount = "clientapi/user/delete";
|
||||
public const string GET_CurrentVersion = "clientapi/data/current-version";
|
||||
public const string GET_Personas = "clientapi/avatar/private/list";
|
||||
public const string POST_InsertPersona = "clientapi/avatar/private/insert";
|
||||
public const string GET_Groups = "clientapi/group/list";
|
||||
@@ -91,7 +89,6 @@ public static class APIs
|
||||
public const string GET_Conversations = "api/v1/conversations";
|
||||
public static string POST_M_ReadConversation(string conversationId) => $"api/v1/conversations/{Uri.EscapeDataString(conversationId)}/read";
|
||||
public static string DELETE_M_Conversation(string conversationId) => $"api/v1/conversations/{Uri.EscapeDataString(conversationId)}";
|
||||
public const string GET_Notifications = "api/v1/notifications";
|
||||
public const string POST_Media = "api/v2/media";
|
||||
public static string GET_M_Media(string mediaId) => $"api/v1/media/{Uri.EscapeDataString(mediaId)}";
|
||||
public static string PUT_M_Media(string mediaId) => $"api/v1/media/{Uri.EscapeDataString(mediaId)}";
|
||||
@@ -159,7 +156,6 @@ public static class APIs
|
||||
public static class PrivaPub
|
||||
{
|
||||
public const string GET_Instances = "api/privapub/v1/instances";
|
||||
public const string GET_Cdns = "api/privapub/v1/cdns";
|
||||
|
||||
public static string GET_M_InstanceHistory(string host) => $"api/privapub/v1/instances/{Uri.EscapeDataString(host)}/history";
|
||||
public static string GET_M_Cdn(string key) => $"api/privapub/v1/cdns/{Uri.EscapeDataString(key)}";
|
||||
|
||||
@@ -2,7 +2,6 @@ namespace decePubClient.Models;
|
||||
|
||||
public class AppConfiguration
|
||||
{
|
||||
public string Version { get; set; }
|
||||
public string ApiBaseAddress { get; set; }
|
||||
/// <summary>PrivaPub's first-party application, the only one allowed to exchange the root JWT for persona tokens.</summary>
|
||||
public string ClientId { get; set; } = "decepub";
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
namespace decePubClient.Models
|
||||
{
|
||||
public class ClientLogs
|
||||
{
|
||||
public long Id { get; set; }
|
||||
public string Where { get; set; }
|
||||
public string WarningMessage { get; set; }
|
||||
public ClientLogException Exception { get; set; }
|
||||
public DateTime TimeStamp { get; set; } = DateTime.Now;
|
||||
/// <summary>The entry as HTML for a log viewer: the warning text, or the exception's details.</summary>
|
||||
public string ErrorMessage()
|
||||
{
|
||||
if (Exception is null)
|
||||
return WarningMessage;
|
||||
|
||||
var details = @$"<b>Type</b>: {Exception.Type ?? "N/A"} <b>HelpLink</b>: {Exception.HelpLink ?? "N/A"} <b>HResult</b>: {Exception.HResult ?? "N/A"}<br>
|
||||
<b>Source</b>: {Exception.Source ?? "N/A"} <b>StackTrace</b>: {Exception.StackTrace ?? "N/A"} <b>MemberName</b>: {Exception.TargetSiteName ?? "N/A"}<br>
|
||||
<b>Message</b>: {Exception.Message ?? "N/A"}";
|
||||
if (Exception.InnerExceptionMessage is null)
|
||||
return details;
|
||||
|
||||
return $"{details}<br>\n<b>InnerExceptionMessage</b>:{Exception.InnerExceptionMessage}";
|
||||
}
|
||||
}
|
||||
|
||||
public class ClientLogException
|
||||
{
|
||||
public string Type { get; set; }
|
||||
public string HelpLink { get; set; }
|
||||
public string HResult { get; set; }
|
||||
public string Source { get; set; }
|
||||
public string StackTrace { get; set; }
|
||||
public string TargetSiteName { get; set; }
|
||||
public string Message { get; set; }
|
||||
public string InnerExceptionMessage { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public class ComposeForm
|
||||
public string GroupId { get; set; }
|
||||
|
||||
[Required(ErrorMessageResourceName = ValidationNames.Required, ErrorMessageResourceType = typeof(ErrorMessages))]
|
||||
public MessageType MessageType { get; set; } = MessageType.Public;
|
||||
public Visibility Visibility { get; set; } = Visibility.Public;
|
||||
public bool HasContentWarning { get; set; }
|
||||
// its media marked sensitive without a warning: the persona's default ("always mark media as sensitive"), or the post's own when edited
|
||||
public bool Sensitive { get; set; }
|
||||
@@ -64,12 +64,12 @@ public class ComposeForm
|
||||
[JsonIgnore, Bindable(false)]
|
||||
public bool IsScopeOptionsOpen { get; set; }
|
||||
|
||||
/// <summary>The Mastodon visibility of MessageType.</summary>
|
||||
public string Visibility => MessageType switch
|
||||
/// <summary>The Mastodon visibility of Visibility.</summary>
|
||||
public string MastodonVisibility => Visibility switch
|
||||
{
|
||||
MessageType.Direct => "direct",
|
||||
MessageType.FollowersOnly => "private",
|
||||
MessageType.Unlisted => "unlisted",
|
||||
Visibility.Direct => "direct",
|
||||
Visibility.FollowersOnly => "private",
|
||||
Visibility.Unlisted => "unlisted",
|
||||
_ => "public"
|
||||
};
|
||||
}
|
||||
@@ -10,20 +10,15 @@ namespace decePubClient.Models
|
||||
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(ErrorsResource)),
|
||||
Display(Name = "LanguageId", ResourceType = typeof(FieldsNameResource))]
|
||||
public string CurrentLanguageCode { get; set; } = "en";
|
||||
//public bool NativeNotificationsEnabled { get; set; } = false;
|
||||
[Range(0, 359, ErrorMessageResourceName = nameof(Range), ErrorMessageResourceType = typeof(ErrorsResource))]
|
||||
public short LightThemeIndexColour { get; set; } = 25;
|
||||
[Range(0, 359, ErrorMessageResourceName = nameof(Range), ErrorMessageResourceType = typeof(ErrorsResource))]
|
||||
public short DarkThemeIndexColour { get; set; } = 215;
|
||||
[Range(-2, 359, ErrorMessageResourceName = nameof(Range), ErrorMessageResourceType = typeof(ErrorsResource))]
|
||||
public short IconsThemeIndexColour { get; set; } = 25;
|
||||
|
||||
public bool PreferSystemTheming { get; set; } = true;
|
||||
public bool ThemeIsDarkMode { get; set; } = false;
|
||||
public bool ThemeIsLightGray { get; set; } = true;
|
||||
public bool ThemeIsDarkGray { get; set; } = false;
|
||||
|
||||
public bool ShowDonatorBadge { get; set; } = false;
|
||||
// before publishing pictures without a description, the composer asks once
|
||||
public bool RemindAltText { get; set; } = true;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace decePubClient.Models
|
||||
public bool Bot { get; set; }
|
||||
public bool Discoverable { get; set; }
|
||||
public bool Indexable { get; set; }
|
||||
public MessageType Privacy { get; set; } = MessageType.Public;
|
||||
public Visibility Privacy { get; set; } = Visibility.Public;
|
||||
public bool Sensitive { get; set; }
|
||||
public string Language { get; set; }
|
||||
public QuotePolicy QuotePolicy { get; set; } = QuotePolicy.Public;
|
||||
@@ -43,9 +43,9 @@ namespace decePubClient.Models
|
||||
Indexable = account.Indexable == true,
|
||||
Privacy = source.Privacy switch
|
||||
{
|
||||
"private" => MessageType.FollowersOnly,
|
||||
"unlisted" => MessageType.Unlisted,
|
||||
_ => MessageType.Public
|
||||
"private" => Visibility.FollowersOnly,
|
||||
"unlisted" => Visibility.Unlisted,
|
||||
_ => Visibility.Public
|
||||
},
|
||||
Sensitive = source.Sensitive,
|
||||
Language = source.Language,
|
||||
@@ -71,7 +71,7 @@ namespace decePubClient.Models
|
||||
{ new StringContent(Flag(Bot)), "bot" },
|
||||
{ new StringContent(Flag(Discoverable)), "discoverable" },
|
||||
{ new StringContent(Flag(Indexable)), "indexable" },
|
||||
{ new StringContent(Privacy switch { MessageType.FollowersOnly => "private", MessageType.Unlisted => "unlisted", _ => "public" }), "source[privacy]" },
|
||||
{ new StringContent(Privacy switch { Visibility.FollowersOnly => "private", Visibility.Unlisted => "unlisted", _ => "public" }), "source[privacy]" },
|
||||
{ new StringContent(Flag(Sensitive)), "source[sensitive]" },
|
||||
{ new StringContent(Language ?? ""), "source[language]" },
|
||||
{ new StringContent(QuotePolicy switch { QuotePolicy.Followers => "followers", QuotePolicy.Nobody => "nobody", _ => "public" }), "source[quote_policy]" }
|
||||
|
||||
@@ -1,17 +1,7 @@
|
||||
using BlazorZXingJs;
|
||||
|
||||
using System.Collections.ObjectModel;
|
||||
|
||||
namespace decePubClient.Models
|
||||
namespace decePubClient.Models
|
||||
{
|
||||
public class PublicCacheData
|
||||
{
|
||||
public IReadOnlyList<ViewLanguage> Languages { get; set; } = [];
|
||||
public List<MediaDeviceInfo> QrCodeDevices { get; set; } = [];
|
||||
public string LastPage { get; set; }
|
||||
public string CurrentSubPage { get; set; }
|
||||
public PageSettings PageSettings { get; set; } = new();
|
||||
public bool ShowLogs { get; set; } = false;
|
||||
public IReadOnlyDictionary<string, string> Policies { get; set; } = ReadOnlyDictionary<string, string>.Empty;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace decePubClient.Models
|
||||
{
|
||||
public class SettingsOptions
|
||||
{
|
||||
public bool IsOpen { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
namespace decePubClient.Models.Types
|
||||
{
|
||||
public enum MessageType
|
||||
{
|
||||
Direct = 1,
|
||||
FollowersOnly,
|
||||
Unlisted,
|
||||
Public
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace decePubClient.Models.Types
|
||||
{
|
||||
/// <summary>Who a post is for; the members are resource keys too (Localizer[value.ToString()]).</summary>
|
||||
public enum Visibility
|
||||
{
|
||||
Direct = 1,
|
||||
FollowersOnly,
|
||||
Unlisted,
|
||||
Public
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
namespace decePubClient.Models
|
||||
{
|
||||
public static class VConstants
|
||||
{
|
||||
public const string HideClass = "hidden";
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
namespace decePubClient.Models
|
||||
{
|
||||
public class ViewLanguage
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string International2Code { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user