mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
add web environments
This commit is contained in:
parent
8e81983fee
commit
d69f4afdbc
@ -66,6 +66,20 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
private static bool _showingExceptionDialog = false;
|
private static bool _showingExceptionDialog = false;
|
||||||
|
|
||||||
|
private static string? _webUrl = null;
|
||||||
|
public static string WebUrl
|
||||||
|
{
|
||||||
|
get {
|
||||||
|
if (_webUrl != null)
|
||||||
|
return _webUrl;
|
||||||
|
|
||||||
|
string url = ConstructBloxstrapWebUrl();
|
||||||
|
if (Settings.Loaded) // only cache if settings are done loading
|
||||||
|
_webUrl = url;
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void Terminate(ErrorCode exitCode = ErrorCode.ERROR_SUCCESS)
|
public static void Terminate(ErrorCode exitCode = ErrorCode.ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
int exitCodeNum = (int)exitCode;
|
int exitCodeNum = (int)exitCode;
|
||||||
@ -126,6 +140,15 @@ namespace Bloxstrap
|
|||||||
Terminate(ErrorCode.ERROR_INSTALL_FAILURE);
|
Terminate(ErrorCode.ERROR_INSTALL_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string ConstructBloxstrapWebUrl()
|
||||||
|
{
|
||||||
|
// dont let user switch web environment if debug mode is not on
|
||||||
|
if (Settings.Prop.WebEnvironment == WebEnvironment.Production || !Settings.Prop.DeveloperMode)
|
||||||
|
return $"bloxstraplabs.com";
|
||||||
|
|
||||||
|
return $"web-{Settings.Prop.WebEnvironment.GetDescription()}.bloxstraplabs.com";
|
||||||
|
}
|
||||||
|
|
||||||
public static async Task<GithubRelease?> GetLatestRelease()
|
public static async Task<GithubRelease?> GetLatestRelease()
|
||||||
{
|
{
|
||||||
const string LOG_IDENT = "App::GetLatestRelease";
|
const string LOG_IDENT = "App::GetLatestRelease";
|
||||||
@ -157,7 +180,7 @@ namespace Bloxstrap
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await HttpClient.GetAsync($"https://bloxstraplabs.com/metrics/post?key={key}&value={value}");
|
await HttpClient.GetAsync($"https://{WebUrl}/metrics/post?key={key}&value={value}");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -173,7 +196,7 @@ namespace Bloxstrap
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
await HttpClient.PostAsync(
|
await HttpClient.PostAsync(
|
||||||
$"https://bloxstraplabs.com/metrics/post-exception",
|
$"https://{WebUrl}/metrics/post-exception",
|
||||||
new StringContent(Logger.AsDocument)
|
new StringContent(Logger.AsDocument)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -347,6 +370,9 @@ namespace Bloxstrap
|
|||||||
Settings.Save();
|
Settings.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.WriteLine(LOG_IDENT, $"Developer mode: {Settings.Prop.DeveloperMode}");
|
||||||
|
Logger.WriteLine(LOG_IDENT, $"Web environment: {Settings.Prop.WebEnvironment}");
|
||||||
|
|
||||||
Locale.Set(Settings.Prop.Locale);
|
Locale.Set(Settings.Prop.Locale);
|
||||||
|
|
||||||
if (!LaunchSettings.BypassUpdateCheck)
|
if (!LaunchSettings.BypassUpdateCheck)
|
||||||
|
23
Bloxstrap/Enums/WebEnvironment.cs
Normal file
23
Bloxstrap/Enums/WebEnvironment.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Enums
|
||||||
|
{
|
||||||
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
|
public enum WebEnvironment
|
||||||
|
{
|
||||||
|
[Description("prod")]
|
||||||
|
Production,
|
||||||
|
|
||||||
|
[Description("stage")]
|
||||||
|
Staging,
|
||||||
|
|
||||||
|
[Description("int")]
|
||||||
|
Integration,
|
||||||
|
|
||||||
|
[Description("matt")]
|
||||||
|
Matt,
|
||||||
|
|
||||||
|
[Description("local")]
|
||||||
|
Local
|
||||||
|
}
|
||||||
|
}
|
14
Bloxstrap/Extensions/TEnumEx.cs
Normal file
14
Bloxstrap/Extensions/TEnumEx.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Bloxstrap.Extensions
|
||||||
|
{
|
||||||
|
internal static class TEnumEx
|
||||||
|
{
|
||||||
|
public static string? GetDescription<TEnum>(this TEnum e)
|
||||||
|
{
|
||||||
|
DescriptionAttribute? attribute = e?.GetType().GetCustomAttribute<DescriptionAttribute>();
|
||||||
|
return attribute?.Description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,8 @@ namespace Bloxstrap
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string? LastFileHash { get; private set; }
|
public string? LastFileHash { get; private set; }
|
||||||
|
|
||||||
|
public bool Loaded { get; set; } = false;
|
||||||
|
|
||||||
public virtual string ClassName => typeof(T).Name;
|
public virtual string ClassName => typeof(T).Name;
|
||||||
|
|
||||||
public virtual string FileLocation => Path.Combine(Paths.Base, $"{ClassName}.json");
|
public virtual string FileLocation => Path.Combine(Paths.Base, $"{ClassName}.json");
|
||||||
@ -35,6 +37,7 @@ namespace Bloxstrap
|
|||||||
throw new ArgumentNullException("Deserialization returned null");
|
throw new ArgumentNullException("Deserialization returned null");
|
||||||
|
|
||||||
Prop = settings;
|
Prop = settings;
|
||||||
|
Loaded = true;
|
||||||
LastFileHash = MD5Hash.FromString(contents);
|
LastFileHash = MD5Hash.FromString(contents);
|
||||||
|
|
||||||
App.Logger.WriteLine(LOG_IDENT, "Loaded successfully!");
|
App.Logger.WriteLine(LOG_IDENT, "Loaded successfully!");
|
||||||
|
@ -10,6 +10,8 @@ namespace Bloxstrap.Models.Persistable
|
|||||||
public string BootstrapperTitle { get; set; } = App.ProjectName;
|
public string BootstrapperTitle { get; set; } = App.ProjectName;
|
||||||
public string BootstrapperIconCustomLocation { get; set; } = "";
|
public string BootstrapperIconCustomLocation { get; set; } = "";
|
||||||
public Theme Theme { get; set; } = Theme.Default;
|
public Theme Theme { get; set; } = Theme.Default;
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
|
||||||
|
public bool DeveloperMode { get; set; } = false;
|
||||||
public bool CheckForUpdates { get; set; } = true;
|
public bool CheckForUpdates { get; set; } = true;
|
||||||
public bool MultiInstanceLaunching { get; set; } = false;
|
public bool MultiInstanceLaunching { get; set; } = false;
|
||||||
public bool ConfirmLaunches { get; set; } = false;
|
public bool ConfirmLaunches { get; set; } = false;
|
||||||
@ -21,6 +23,7 @@ namespace Bloxstrap.Models.Persistable
|
|||||||
public bool BackgroundUpdatesEnabled { get; set; } = true;
|
public bool BackgroundUpdatesEnabled { get; set; } = true;
|
||||||
public bool DebugDisableVersionPackageCleanup { get; set; } = false;
|
public bool DebugDisableVersionPackageCleanup { get; set; } = false;
|
||||||
public string? SelectedCustomTheme { get; set; } = null;
|
public string? SelectedCustomTheme { get; set; } = null;
|
||||||
|
public WebEnvironment WebEnvironment { get; set; } = WebEnvironment.Production;
|
||||||
|
|
||||||
// integration configuration
|
// integration configuration
|
||||||
public bool EnableActivityTracking { get; set; } = true;
|
public bool EnableActivityTracking { get; set; } = true;
|
||||||
|
@ -29,6 +29,13 @@
|
|||||||
<ui:ToggleSwitch IsChecked="{Binding AnalyticsEnabled, Mode=TwoWay}" />
|
<ui:ToggleSwitch IsChecked="{Binding AnalyticsEnabled, Mode=TwoWay}" />
|
||||||
</controls:OptionControl>
|
</controls:OptionControl>
|
||||||
|
|
||||||
|
<controls:OptionControl
|
||||||
|
Visibility="{Binding Path=WebEnvironmentVisibility, Mode=OneTime}"
|
||||||
|
Header="Web environment"
|
||||||
|
Description="Site to use for metrics">
|
||||||
|
<ComboBox Width="200" Padding="10,5,10,5" ItemsSource="{Binding WebEnvironments, Mode=OneWay}" SelectedValue="{Binding WebEnvironment, Mode=TwoWay}" />
|
||||||
|
</controls:OptionControl>
|
||||||
|
|
||||||
<ui:CardExpander Margin="0,8,0,0" IsExpanded="True">
|
<ui:CardExpander Margin="0,8,0,0" IsExpanded="True">
|
||||||
<ui:CardExpander.Header>
|
<ui:CardExpander.Header>
|
||||||
<Grid>
|
<Grid>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.Windows.Input;
|
using System.Windows;
|
||||||
|
using System.Windows.Input;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using ICSharpCode.SharpZipLib.Zip;
|
using ICSharpCode.SharpZipLib.Zip;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
@ -7,6 +8,8 @@ namespace Bloxstrap.UI.ViewModels.Settings
|
|||||||
{
|
{
|
||||||
public class BloxstrapViewModel : NotifyPropertyChangedViewModel
|
public class BloxstrapViewModel : NotifyPropertyChangedViewModel
|
||||||
{
|
{
|
||||||
|
public WebEnvironment[] WebEnvironments => Enum.GetValues<WebEnvironment>();
|
||||||
|
|
||||||
public bool UpdateCheckingEnabled
|
public bool UpdateCheckingEnabled
|
||||||
{
|
{
|
||||||
get => App.Settings.Prop.CheckForUpdates;
|
get => App.Settings.Prop.CheckForUpdates;
|
||||||
@ -19,6 +22,14 @@ namespace Bloxstrap.UI.ViewModels.Settings
|
|||||||
set => App.Settings.Prop.EnableAnalytics = value;
|
set => App.Settings.Prop.EnableAnalytics = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebEnvironment WebEnvironment
|
||||||
|
{
|
||||||
|
get => App.Settings.Prop.WebEnvironment;
|
||||||
|
set => App.Settings.Prop.WebEnvironment = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Visibility WebEnvironmentVisibility => App.Settings.Prop.DeveloperMode ? Visibility.Visible : Visibility.Collapsed;
|
||||||
|
|
||||||
public bool ShouldExportConfig { get; set; } = true;
|
public bool ShouldExportConfig { get; set; } = true;
|
||||||
|
|
||||||
public bool ShouldExportLogs { get; set; } = true;
|
public bool ShouldExportLogs { get; set; } = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user