diff --git a/Bloxstrap/GlobalUsings.cs b/Bloxstrap/GlobalUsings.cs index 9c10516..c04aec2 100644 --- a/Bloxstrap/GlobalUsings.cs +++ b/Bloxstrap/GlobalUsings.cs @@ -3,7 +3,6 @@ global using System.Collections.Generic; global using System.Diagnostics; global using System.Globalization; global using System.IO; -global using System.IO.Compression; global using System.Text; global using System.Text.Json; global using System.Text.Json.Serialization; @@ -18,10 +17,16 @@ global using Bloxstrap.Enums; global using Bloxstrap.Exceptions; global using Bloxstrap.Extensions; global using Bloxstrap.Models; +global using Bloxstrap.Models.APIs.Config; +global using Bloxstrap.Models.APIs.GitHub; +global using Bloxstrap.Models.APIs.Roblox; global using Bloxstrap.Models.Attributes; global using Bloxstrap.Models.BloxstrapRPC; -global using Bloxstrap.Models.RobloxApi; +global using Bloxstrap.Models.Entities; global using Bloxstrap.Models.Manifest; +global using Bloxstrap.Models.Persistable; +global using Bloxstrap.Models.SettingTasks; +global using Bloxstrap.Models.SettingTasks.Base; global using Bloxstrap.Resources; global using Bloxstrap.UI; global using Bloxstrap.Utility; \ No newline at end of file diff --git a/Bloxstrap/Models/Supporter.cs b/Bloxstrap/Models/APIs/Config/Supporter.cs similarity index 89% rename from Bloxstrap/Models/Supporter.cs rename to Bloxstrap/Models/APIs/Config/Supporter.cs index 6732a26..9a689b5 100644 --- a/Bloxstrap/Models/Supporter.cs +++ b/Bloxstrap/Models/APIs/Config/Supporter.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.APIs.Config { public class Supporter { diff --git a/Bloxstrap/Models/SupporterData.cs b/Bloxstrap/Models/APIs/Config/SupporterData.cs similarity index 84% rename from Bloxstrap/Models/SupporterData.cs rename to Bloxstrap/Models/APIs/Config/SupporterData.cs index f9ef2fe..35feb1e 100644 --- a/Bloxstrap/Models/SupporterData.cs +++ b/Bloxstrap/Models/APIs/Config/SupporterData.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.APIs.Config { public class SupporterData { diff --git a/Bloxstrap/Models/APIs/GitHub/GitHubReleaseAsset.cs b/Bloxstrap/Models/APIs/GitHub/GitHubReleaseAsset.cs new file mode 100644 index 0000000..023c307 --- /dev/null +++ b/Bloxstrap/Models/APIs/GitHub/GitHubReleaseAsset.cs @@ -0,0 +1,8 @@ +public class GithubReleaseAsset +{ + [JsonPropertyName("browser_download_url")] + public string BrowserDownloadUrl { get; set; } = null!; + + [JsonPropertyName("name")] + public string Name { get; set; } = null!; +} \ No newline at end of file diff --git a/Bloxstrap/Models/GithubRelease.cs b/Bloxstrap/Models/APIs/GitHub/GithubRelease.cs similarity index 63% rename from Bloxstrap/Models/GithubRelease.cs rename to Bloxstrap/Models/APIs/GitHub/GithubRelease.cs index 12b8876..2f55f91 100644 --- a/Bloxstrap/Models/GithubRelease.cs +++ b/Bloxstrap/Models/APIs/GitHub/GithubRelease.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.APIs.GitHub { public class GithubRelease { @@ -7,7 +7,7 @@ [JsonPropertyName("name")] public string Name { get; set; } = null!; - + [JsonPropertyName("body")] public string Body { get; set; } = null!; @@ -17,13 +17,4 @@ [JsonPropertyName("assets")] public List? Assets { get; set; } } - - public class GithubReleaseAsset - { - [JsonPropertyName("browser_download_url")] - public string BrowserDownloadUrl { get; set; } = null!; - - [JsonPropertyName("name")] - public string Name { get; set; } = null!; - } } diff --git a/Bloxstrap/Models/IPInfoResponse.cs b/Bloxstrap/Models/APIs/IPInfoResponse.cs similarity index 88% rename from Bloxstrap/Models/IPInfoResponse.cs rename to Bloxstrap/Models/APIs/IPInfoResponse.cs index f8d3bc0..8cb65a5 100644 --- a/Bloxstrap/Models/IPInfoResponse.cs +++ b/Bloxstrap/Models/APIs/IPInfoResponse.cs @@ -1,14 +1,14 @@ -namespace Bloxstrap.Models -{ - public class IPInfoResponse - { - [JsonPropertyName("city")] - public string City { get; set; } = null!; - - [JsonPropertyName("country")] - public string Country { get; set; } = null!; - - [JsonPropertyName("region")] - public string Region { get; set; } = null!; - } -} +namespace Bloxstrap.Models.APIs +{ + public class IPInfoResponse + { + [JsonPropertyName("city")] + public string City { get; set; } = null!; + + [JsonPropertyName("country")] + public string Country { get; set; } = null!; + + [JsonPropertyName("region")] + public string Region { get; set; } = null!; + } +} diff --git a/Bloxstrap/Models/RobloxApi/ApiArrayResponse.cs b/Bloxstrap/Models/APIs/Roblox/ApiArrayResponse.cs similarity index 84% rename from Bloxstrap/Models/RobloxApi/ApiArrayResponse.cs rename to Bloxstrap/Models/APIs/Roblox/ApiArrayResponse.cs index 4e1fefd..202de43 100644 --- a/Bloxstrap/Models/RobloxApi/ApiArrayResponse.cs +++ b/Bloxstrap/Models/APIs/Roblox/ApiArrayResponse.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models.RobloxApi +namespace Bloxstrap.Models.APIs.Roblox { /// /// Roblox.Web.WebAPI.Models.ApiArrayResponse diff --git a/Bloxstrap/Models/ClientFlagSettings.cs b/Bloxstrap/Models/APIs/Roblox/ClientFlagSettings.cs similarity index 80% rename from Bloxstrap/Models/ClientFlagSettings.cs rename to Bloxstrap/Models/APIs/Roblox/ClientFlagSettings.cs index b50932b..88ef9eb 100644 --- a/Bloxstrap/Models/ClientFlagSettings.cs +++ b/Bloxstrap/Models/APIs/Roblox/ClientFlagSettings.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.APIs.Roblox { public class ClientFlagSettings { diff --git a/Bloxstrap/Models/ClientVersion.cs b/Bloxstrap/Models/APIs/Roblox/ClientVersion.cs similarity index 91% rename from Bloxstrap/Models/ClientVersion.cs rename to Bloxstrap/Models/APIs/Roblox/ClientVersion.cs index b90df0a..9fa405e 100644 --- a/Bloxstrap/Models/ClientVersion.cs +++ b/Bloxstrap/Models/APIs/Roblox/ClientVersion.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.APIs.Roblox { public class ClientVersion { diff --git a/Bloxstrap/Models/RobloxApi/GameCreator.cs b/Bloxstrap/Models/APIs/Roblox/GameCreator.cs similarity index 96% rename from Bloxstrap/Models/RobloxApi/GameCreator.cs rename to Bloxstrap/Models/APIs/Roblox/GameCreator.cs index c191884..5ac73fd 100644 --- a/Bloxstrap/Models/RobloxApi/GameCreator.cs +++ b/Bloxstrap/Models/APIs/Roblox/GameCreator.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models.RobloxApi +namespace Bloxstrap.Models.APIs.Roblox { /// /// Roblox.Games.Api.Models.Response.GameCreator diff --git a/Bloxstrap/Models/RobloxApi/GameDetailResponse.cs b/Bloxstrap/Models/APIs/Roblox/GameDetailResponse.cs similarity index 99% rename from Bloxstrap/Models/RobloxApi/GameDetailResponse.cs rename to Bloxstrap/Models/APIs/Roblox/GameDetailResponse.cs index dca8c81..93abd5d 100644 --- a/Bloxstrap/Models/RobloxApi/GameDetailResponse.cs +++ b/Bloxstrap/Models/APIs/Roblox/GameDetailResponse.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models.RobloxApi +namespace Bloxstrap.Models.APIs.Roblox { /// diff --git a/Bloxstrap/Models/RobloxApi/ThumbnailResponse.cs b/Bloxstrap/Models/APIs/Roblox/ThumbnailResponse.cs similarity index 90% rename from Bloxstrap/Models/RobloxApi/ThumbnailResponse.cs rename to Bloxstrap/Models/APIs/Roblox/ThumbnailResponse.cs index c667813..213083c 100644 --- a/Bloxstrap/Models/RobloxApi/ThumbnailResponse.cs +++ b/Bloxstrap/Models/APIs/Roblox/ThumbnailResponse.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models.RobloxApi +namespace Bloxstrap.Models.APIs.Roblox { /// /// Roblox.Web.Responses.Thumbnails.ThumbnailResponse diff --git a/Bloxstrap/Models/RobloxApi/UniverseIdResponse.cs b/Bloxstrap/Models/APIs/Roblox/UniverseIdResponse.cs similarity index 80% rename from Bloxstrap/Models/RobloxApi/UniverseIdResponse.cs rename to Bloxstrap/Models/APIs/Roblox/UniverseIdResponse.cs index c42d10a..7ab52fa 100644 --- a/Bloxstrap/Models/RobloxApi/UniverseIdResponse.cs +++ b/Bloxstrap/Models/APIs/Roblox/UniverseIdResponse.cs @@ -1,4 +1,4 @@ -namespace Bloxstrap.Models.RobloxApi +namespace Bloxstrap.Models.APIs.Roblox { // lmao its just one property public class UniverseIdResponse diff --git a/Bloxstrap/Models/ActivityData.cs b/Bloxstrap/Models/Entities/ActivityData.cs similarity index 85% rename from Bloxstrap/Models/ActivityData.cs rename to Bloxstrap/Models/Entities/ActivityData.cs index b99e81c..40565f0 100644 --- a/Bloxstrap/Models/ActivityData.cs +++ b/Bloxstrap/Models/Entities/ActivityData.cs @@ -1,10 +1,10 @@ using System.Web; using System.Windows; using System.Windows.Input; - +using Bloxstrap.Models.APIs; using CommunityToolkit.Mvvm.Input; -namespace Bloxstrap.Models +namespace Bloxstrap.Models.Entities { public class ActivityData { @@ -16,7 +16,7 @@ namespace Bloxstrap.Models /// public ActivityData? RootActivity; - public long UniverseId + public long UniverseId { get => _universeId; set @@ -28,19 +28,19 @@ namespace Bloxstrap.Models public long PlaceId { get; set; } = 0; - public string JobId { get; set; } = String.Empty; + public string JobId { get; set; } = string.Empty; /// /// This will be empty unless the server joined is a private server /// - public string AccessCode { get; set; } = String.Empty; - - public string MachineAddress { get; set; } = String.Empty; + public string AccessCode { get; set; } = string.Empty; - public bool MachineAddressValid => !String.IsNullOrEmpty(MachineAddress) && !MachineAddress.StartsWith("10."); + public string MachineAddress { get; set; } = string.Empty; + + public bool MachineAddressValid => !string.IsNullOrEmpty(MachineAddress) && !MachineAddress.StartsWith("10."); public bool IsTeleport { get; set; } = false; - + public ServerType ServerType { get; set; } = ServerType.Public; public DateTime TimeJoined { get; set; } @@ -52,15 +52,15 @@ namespace Bloxstrap.Models /// /// This is intended only for other people to use, i.e. context menu invite link, rich presence joining /// - public string RPCLaunchData { get; set; } = String.Empty; + public string RPCLaunchData { get; set; } = string.Empty; public UniverseDetails? UniverseDetails { get; set; } - + public string GameHistoryDescription { get { - string desc = String.Format("{0} • {1} - {2}", UniverseDetails?.Data.Creator.Name, TimeJoined.ToString("h:mm tt"), TimeLeft?.ToString("h:mm tt")); + string desc = string.Format("{0} • {1} - {2}", UniverseDetails?.Data.Creator.Name, TimeJoined.ToString("h:mm tt"), TimeLeft?.ToString("h:mm tt")); if (ServerType != ServerType.Public) desc += " • " + ServerType.ToTranslatedString(); @@ -82,7 +82,7 @@ namespace Bloxstrap.Models else deeplink += "&gameInstanceId=" + JobId; - if (launchData && !String.IsNullOrEmpty(RPCLaunchData)) + if (launchData && !string.IsNullOrEmpty(RPCLaunchData)) deeplink += "&launchData=" + HttpUtility.UrlEncode(RPCLaunchData); return deeplink; @@ -107,7 +107,7 @@ namespace Bloxstrap.Models { var ipInfo = await Http.GetJson($"https://ipinfo.io/{MachineAddress}/json"); - if (String.IsNullOrEmpty(ipInfo.City)) + if (string.IsNullOrEmpty(ipInfo.City)) throw new InvalidHTTPResponseException("Reported city was blank"); if (ipInfo.City == ipInfo.Region) @@ -127,9 +127,9 @@ namespace Bloxstrap.Models serverQuerySemaphore.Release(); Frontend.ShowConnectivityDialog( - String.Format(Strings.Dialog_Connectivity_UnableToConnect, "ipinfo.io"), - Strings.ActivityWatcher_LocationQueryFailed, - MessageBoxImage.Warning, + string.Format(Strings.Dialog_Connectivity_UnableToConnect, "ipinfo.io"), + Strings.ActivityWatcher_LocationQueryFailed, + MessageBoxImage.Warning, ex ); } @@ -142,7 +142,7 @@ namespace Bloxstrap.Models private void RejoinServer() { string playerPath = Path.Combine(Paths.Roblox, "Player", "RobloxPlayerBeta.exe"); - + Process.Start(playerPath, GetInviteDeeplink(false)); } } diff --git a/Bloxstrap/Models/ModPresetFileData.cs b/Bloxstrap/Models/Entities/ModPresetFileData.cs similarity index 95% rename from Bloxstrap/Models/ModPresetFileData.cs rename to Bloxstrap/Models/Entities/ModPresetFileData.cs index d704891..8f620bd 100644 --- a/Bloxstrap/Models/ModPresetFileData.cs +++ b/Bloxstrap/Models/Entities/ModPresetFileData.cs @@ -1,23 +1,23 @@ using System.Security.Cryptography; using System.Windows.Markup; -namespace Bloxstrap.Models +namespace Bloxstrap.Models.Entities { public class ModPresetFileData { public string FilePath { get; private set; } public string FullFilePath => Path.Combine(Paths.Modifications, FilePath); - + public FileStream FileStream => File.OpenRead(FullFilePath); public string ResourceIdentifier { get; private set; } - + public Stream ResourceStream => Resource.GetStream(ResourceIdentifier); public byte[] ResourceHash { get; private set; } - public ModPresetFileData(string contentPath, string resource) + public ModPresetFileData(string contentPath, string resource) { FilePath = contentPath; ResourceIdentifier = resource; diff --git a/Bloxstrap/Models/UniverseDetails.cs b/Bloxstrap/Models/Entities/UniverseDetails.cs similarity index 90% rename from Bloxstrap/Models/UniverseDetails.cs rename to Bloxstrap/Models/Entities/UniverseDetails.cs index aa87501..62f5445 100644 --- a/Bloxstrap/Models/UniverseDetails.cs +++ b/Bloxstrap/Models/Entities/UniverseDetails.cs @@ -1,11 +1,13 @@ -namespace Bloxstrap.Models +using Bloxstrap.Models.APIs.Roblox; + +namespace Bloxstrap.Models.Entities { public class UniverseDetails { private static List _cache { get; set; } = new(); public GameDetailResponse Data { get; set; } = null!; - + /// /// Returns data for a 128x128 icon /// @@ -13,9 +15,9 @@ public static UniverseDetails? LoadFromCache(long id) { - var cacheQuery = _cache.Where(x => x.Data?.Id == id); + var cacheQuery = _cache.Where(x => x.Data?.Id == id); - if (cacheQuery.Any()) + if (cacheQuery.Any()) return cacheQuery.First(); return null; diff --git a/Bloxstrap/Models/AppState.cs b/Bloxstrap/Models/Persistable/AppState.cs similarity index 60% rename from Bloxstrap/Models/AppState.cs rename to Bloxstrap/Models/Persistable/AppState.cs index 68c3c58..57c3224 100644 --- a/Bloxstrap/Models/AppState.cs +++ b/Bloxstrap/Models/Persistable/AppState.cs @@ -1,8 +1,8 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.Persistable { public class AppState { - public string VersionGuid { get; set; } = String.Empty; + public string VersionGuid { get; set; } = string.Empty; public Dictionary PackageHashes { get; set; } = new(); diff --git a/Bloxstrap/Models/Settings.cs b/Bloxstrap/Models/Persistable/Settings.cs similarity index 97% rename from Bloxstrap/Models/Settings.cs rename to Bloxstrap/Models/Persistable/Settings.cs index ebe594f..d4018ce 100644 --- a/Bloxstrap/Models/Settings.cs +++ b/Bloxstrap/Models/Persistable/Settings.cs @@ -1,6 +1,6 @@ using System.Collections.ObjectModel; -namespace Bloxstrap.Models +namespace Bloxstrap.Models.Persistable { public class Settings { diff --git a/Bloxstrap/Models/State.cs b/Bloxstrap/Models/Persistable/State.cs similarity index 89% rename from Bloxstrap/Models/State.cs rename to Bloxstrap/Models/Persistable/State.cs index edaf426..de05265 100644 --- a/Bloxstrap/Models/State.cs +++ b/Bloxstrap/Models/Persistable/State.cs @@ -1,13 +1,13 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.Persistable { public class State { public bool ShowFFlagEditorWarning { get; set; } = true; - + public bool PromptWebView2Install { get; set; } = true; public AppState Player { get; set; } = new(); - + public AppState Studio { get; set; } = new(); public WindowState SettingsWindow { get; set; } = new(); diff --git a/Bloxstrap/Models/WindowState.cs b/Bloxstrap/Models/Persistable/WindowState.cs similarity index 78% rename from Bloxstrap/Models/WindowState.cs rename to Bloxstrap/Models/Persistable/WindowState.cs index efc808d..90bf334 100644 --- a/Bloxstrap/Models/WindowState.cs +++ b/Bloxstrap/Models/Persistable/WindowState.cs @@ -1,13 +1,13 @@ -namespace Bloxstrap.Models +namespace Bloxstrap.Models.Persistable { public class WindowState { public double Width { get; set; } - + public double Height { get; set; } - + public double Left { get; set; } - + public double Top { get; set; } } } diff --git a/Bloxstrap/Models/SettingTasks/EnumModPresetTask.cs b/Bloxstrap/Models/SettingTasks/EnumModPresetTask.cs index a06808e..07fb0ca 100644 --- a/Bloxstrap/Models/SettingTasks/EnumModPresetTask.cs +++ b/Bloxstrap/Models/SettingTasks/EnumModPresetTask.cs @@ -1,4 +1,5 @@ -using Bloxstrap.Models.SettingTasks.Base; +using Bloxstrap.Models.Entities; +using Bloxstrap.Models.SettingTasks.Base; namespace Bloxstrap.Models.SettingTasks { diff --git a/Bloxstrap/Models/SettingTasks/ModPresetTask.cs b/Bloxstrap/Models/SettingTasks/ModPresetTask.cs index 99c20ee..8aa1592 100644 --- a/Bloxstrap/Models/SettingTasks/ModPresetTask.cs +++ b/Bloxstrap/Models/SettingTasks/ModPresetTask.cs @@ -1,4 +1,5 @@ -using Bloxstrap.Models.SettingTasks.Base; +using Bloxstrap.Models.Entities; +using Bloxstrap.Models.SettingTasks.Base; namespace Bloxstrap.Models.SettingTasks { diff --git a/Bloxstrap/UI/Elements/Settings/MainWindow.xaml.cs b/Bloxstrap/UI/Elements/Settings/MainWindow.xaml.cs index df17658..fda449f 100644 --- a/Bloxstrap/UI/Elements/Settings/MainWindow.xaml.cs +++ b/Bloxstrap/UI/Elements/Settings/MainWindow.xaml.cs @@ -14,7 +14,7 @@ namespace Bloxstrap.UI.Elements.Settings /// public partial class MainWindow : INavigationWindow { - private Models.WindowState _state => App.State.Prop.SettingsWindow; + private Models.Persistable.WindowState _state => App.State.Prop.SettingsWindow; public MainWindow(bool showAlreadyRunningWarning) {