Skip to content

Commit cac0240

Browse files
committed
Correctly use partial classes for all remaining components
1 parent f2dd6f1 commit cac0240

13 files changed

+161
-168
lines changed

Crypter.Web/Shared/LoginComponent.razor

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,27 @@
2424
* Contact the current copyright holder to discuss commercial license options.
2525
*@
2626

27-
@inherits LoginComponentBase
28-
2927
<form @onsubmit:preventDefault @onsubmit="SubmitLoginAsync">
3028
<div class="mb-3">
3129
<label for="usernameFormControl" class="form-label">Username</label>
32-
<input @bind="LoginModel.Username" class="form-control @UsernameInvalidClassPlaceholder" id="usernameFormControl"/>
33-
<div class="invalid-feedback">@UsernameValidationErrorMessage</div>
30+
<input @bind="_loginModel.Username" class="form-control @_usernameInvalidClassPlaceholder" id="usernameFormControl"/>
31+
<div class="invalid-feedback">@_usernameValidationErrorMessage</div>
3432
</div>
3533

3634
<div class="mb-3 position-relative">
3735
<label for="passwordFormControl" class="form-label">Password</label>
38-
<div class="invalid-feedback">@PasswordValidationErrorMessage</div>
39-
<input type="password" @bind="LoginModel.Password" class="form-control @PasswordInvalidClassPlaceholder" id="passwordFormControl"/>
36+
<div class="invalid-feedback">@_passwordValidationErrorMessage</div>
37+
<input type="password" @bind="_loginModel.Password" class="form-control @_passwordInvalidClassPlaceholder" id="passwordFormControl"/>
4038
<a class="position-absolute top-0 end-0" href="./forgot-password">Forgot password?</a>
4139
</div>
4240

43-
<div hidden="@(!LoginAttemptFailed)" class="alert alert-danger" role="alert">
44-
@LoginAttemptErrorMessage
41+
<div hidden="@(!_loginAttemptFailed)" class="alert alert-danger" role="alert">
42+
@_loginAttemptErrorMessage
4543
</div>
4644

4745
<div class="form-check form-switch">
4846
<label class="form-check-label" for="rememberMe">Remember me on this device</label>
49-
<input @bind="LoginModel.RememberMe" class="form-check-input" type="checkbox" id="rememberMe"/>
47+
<input @bind="_loginModel.RememberMe" class="form-check-input" type="checkbox" id="rememberMe"/>
5048
</div>
5149

5250
<button type="submit" class="btn btn-primary">Login</button>

Crypter.Web/Shared/LoginComponent.razor.cs

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -36,69 +36,69 @@
3636

3737
namespace Crypter.Web.Shared;
3838

39-
public partial class LoginComponentBase : ComponentBase
39+
public partial class LoginComponent
4040
{
41-
[Inject] protected NavigationManager NavigationManager { get; set; }
41+
[Inject] private NavigationManager NavigationManager { get; set; }
4242

43-
[Inject] protected IUserSessionService UserSessionService { get; set; }
43+
[Inject] private IUserSessionService UserSessionService { get; set; }
4444

45-
private const string _userLandingPage = "/user/transfers";
46-
private const string _invalidClassName = "is-invalid";
45+
private const string UserLandingPage = "/user/transfers";
46+
private const string InvalidClassName = "is-invalid";
4747

48-
protected LoginForm LoginModel;
48+
private LoginForm _loginModel;
4949

50-
protected bool LoginAttemptFailed;
51-
protected string LoginAttemptErrorMessage;
50+
private bool _loginAttemptFailed;
51+
private string _loginAttemptErrorMessage;
5252

53-
protected string UsernameInvalidClassPlaceholder;
54-
protected string UsernameValidationErrorMessage;
53+
private string _usernameInvalidClassPlaceholder;
54+
private string _usernameValidationErrorMessage;
5555

56-
protected string PasswordInvalidClassPlaceholder;
57-
protected string PasswordValidationErrorMessage;
56+
private string _passwordInvalidClassPlaceholder;
57+
private string _passwordValidationErrorMessage;
5858

5959
protected override void OnInitialized()
6060
{
61-
LoginModel = new LoginForm()
61+
_loginModel = new LoginForm
6262
{
6363
RememberMe = true
6464
};
6565
}
6666

67-
protected async Task SubmitLoginAsync()
67+
private async Task SubmitLoginAsync()
6868
{
6969
var loginTask = from username in ValidateUsername().ToEither(LoginError.InvalidUsername).AsTask()
7070
from password in ValidatePassword().ToEither(LoginError.InvalidPassword).AsTask()
71-
from loginResult in UserSessionService.LoginAsync(username, password, LoginModel.RememberMe)
71+
from loginResult in UserSessionService.LoginAsync(username, password, _loginModel.RememberMe)
7272
select loginResult;
7373

7474
var loginTaskResult = await loginTask;
7575

7676
loginTaskResult.DoLeftOrNeither(
77-
left => HandleLoginFailure(left),
77+
HandleLoginFailure,
7878
() => HandleLoginFailure(LoginError.UnknownError));
7979

8080

8181
loginTaskResult.DoRight(_ =>
8282
{
83-
string returnUrl = NavigationManager.GetQueryParameter("returnUrl") ?? _userLandingPage;
83+
string returnUrl = NavigationManager.GetQueryParameter("returnUrl") ?? UserLandingPage;
8484
NavigationManager.NavigateTo(returnUrl);
8585
});
8686
}
8787

8888
private Maybe<Username> ValidateUsername()
8989
{
90-
var validationResult = Username.CheckValidation(LoginModel.Username);
90+
var validationResult = Username.CheckValidation(_loginModel.Username);
9191

9292
validationResult.IfNone(() =>
9393
{
94-
UsernameInvalidClassPlaceholder = "";
95-
UsernameValidationErrorMessage = "";
94+
_usernameInvalidClassPlaceholder = "";
95+
_usernameValidationErrorMessage = "";
9696
});
9797

9898
validationResult.IfSome(error =>
9999
{
100-
UsernameInvalidClassPlaceholder = _invalidClassName;
101-
UsernameValidationErrorMessage = error switch
100+
_usernameInvalidClassPlaceholder = InvalidClassName;
101+
_usernameValidationErrorMessage = error switch
102102
{
103103
StringPrimitiveValidationFailure.IsNull
104104
or StringPrimitiveValidationFailure.IsEmpty => "Please enter your username",
@@ -107,24 +107,24 @@ private Maybe<Username> ValidateUsername()
107107
});
108108

109109
return validationResult.Match(
110-
() => Username.From(LoginModel.Username),
110+
() => Username.From(_loginModel.Username),
111111
_ => Maybe<Username>.None);
112112
}
113113

114114
private Maybe<Password> ValidatePassword()
115115
{
116-
var validationResult = Password.CheckValidation(LoginModel.Password);
116+
var validationResult = Password.CheckValidation(_loginModel.Password);
117117

118118
validationResult.IfNone(() =>
119119
{
120-
PasswordInvalidClassPlaceholder = "";
121-
PasswordValidationErrorMessage = "";
120+
_passwordInvalidClassPlaceholder = "";
121+
_passwordValidationErrorMessage = "";
122122
});
123123

124124
validationResult.IfSome(error =>
125125
{
126-
PasswordInvalidClassPlaceholder = _invalidClassName;
127-
PasswordValidationErrorMessage = error switch
126+
_passwordInvalidClassPlaceholder = InvalidClassName;
127+
_passwordValidationErrorMessage = error switch
128128
{
129129
StringPrimitiveValidationFailure.IsNull
130130
or StringPrimitiveValidationFailure.IsEmpty => "Please enter your password",
@@ -133,15 +133,15 @@ private Maybe<Password> ValidatePassword()
133133
});
134134

135135
return validationResult.Match(
136-
() => Password.From(LoginModel.Password),
136+
() => Password.From(_loginModel.Password),
137137
_ => Maybe<Password>.None);
138138
}
139139

140140
private void HandleLoginFailure(LoginError error)
141141
{
142-
LoginAttemptFailed = true;
142+
_loginAttemptFailed = true;
143143
#pragma warning disable CS8524
144-
LoginAttemptErrorMessage = error switch
144+
_loginAttemptErrorMessage = error switch
145145
{
146146
LoginError.UnknownError
147147
or LoginError.InvalidTokenTypeRequested => "An unknown error occurred",

Crypter.Web/Shared/MainLayout.razor.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
namespace Crypter.Web.Shared;
4141

4242
[SupportedOSPlatform("browser")]
43-
public partial class MainLayoutBase : LayoutComponentBase, IDisposable
43+
public class MainLayoutBase : LayoutComponentBase, IDisposable
4444
{
4545
[Inject] private IBlazorSodiumService BlazorSodiumService { get; set; }
4646

@@ -52,10 +52,10 @@ public partial class MainLayoutBase : LayoutComponentBase, IDisposable
5252

5353
[Inject] private IDeviceRepository<BrowserStorageLocation> BrowserRepository { get; set; }
5454

55-
public BasicModal BasicModal { get; protected set; }
56-
public RecoveryKeyModal RecoveryKeyModal { get; protected set; }
57-
public TransferSuccessModal TransferSuccessModal { get; protected set; }
58-
public SpinnerModal SpinnerModal { get; protected set; }
55+
protected BasicModal BasicModal { get; set; }
56+
protected RecoveryKeyModal RecoveryKeyModal { get; set; }
57+
protected TransferSuccessModal TransferSuccessModal { get; set; }
58+
protected SpinnerModal SpinnerModal { get; set; }
5959

6060
protected bool ServicesInitialized { get; set; }
6161

Crypter.Web/Shared/Navigation.razor

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,20 @@
2323
*
2424
* Contact the current copyright holder to discuss commercial license options.
2525
*@
26-
@inherits NavigationBase
2726

2827
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavigation" aria-controls="mainNavigation" aria-expanded="false" aria-label="Toggle navigation">
2928
<span class="navbar-toggler-icon"></span>
3029
</button>
3130

3231
<div class="collapse navbar-collapse justify-content-end" id="mainNavigation">
33-
<ul hidden="@(!ShowNavigation)" class="navbar-nav ms-auto mb-2 mb-lg-0">
34-
@if (ShowUserNavigation)
32+
<ul hidden="@(!_showNavigation)" class="navbar-nav ms-auto mb-2 mb-lg-0">
33+
@if (_showUserNavigation)
3534
{
3635
<li class="nav-item m-1 my-lg-0">
3736
<form class="d-flex h-100" @onsubmit:preventDefault @onsubmit="@OnSearchClicked">
3837
<div class="input-group">
3938
<span class="input-group-text bi-search" id="search-addon"></span>
40-
<input style="width: 20em; max-width: 20em;" type="text" class="form-control" placeholder="Find a user" aria-label="Search" @bind="SearchKeyword" aria-describedby="search-addon">
39+
<input style="width: 20em; max-width: 20em;" type="text" class="form-control" placeholder="Find a user" aria-label="Search" @bind="_searchKeyword" aria-describedby="search-addon">
4140
</div>
4241
</form>
4342
</li>
@@ -69,11 +68,11 @@
6968
</li>
7069
<li class="nav-item m-1 my-lg-0 dropdown">
7170
<a class="nav-link dropdown-toggle text-light" href="#" id="navbarUserDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
72-
<i class="bi-person-circle me-2"></i>@Username
71+
<i class="bi-person-circle me-2"></i>@_username
7372
</a>
7473
<ul class="dropdown-menu dropdown-menu-end">
7574
<li>
76-
<a class="dropdown-item" href="@ProfileUrl">Profile</a>
75+
<a class="dropdown-item" href="@_profileUrl">Profile</a>
7776
</li>
7877
<li>
7978
<a class="dropdown-item" href="/user/settings">Settings</a>

Crypter.Web/Shared/Navigation.razor.cs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,25 @@
3636

3737
namespace Crypter.Web.Shared;
3838

39-
public partial class NavigationBase : ComponentBase, IDisposable
39+
public partial class Navigation : IDisposable
4040
{
41-
[Inject] protected IJSRuntime JSRuntime { get; set; }
41+
[Inject] private IJSRuntime JsRuntime { get; set; }
4242

43-
[Inject] protected NavigationManager NavigationManager { get; set; }
43+
[Inject] private NavigationManager NavigationManager { get; set; }
4444

45-
[Inject] protected IUserSessionService UserSessionService { get; set; }
45+
[Inject] private IUserSessionService UserSessionService { get; set; }
4646

47-
[Inject] protected IDeviceRepository<BrowserStorageLocation> BrowserRepository { get; set; }
47+
[Inject] private IDeviceRepository<BrowserStorageLocation> BrowserRepository { get; set; }
4848

4949
protected UploadFileTransferModal FileTransferModal { get; set; }
5050

5151
protected UploadMessageTransferModal MessageTransferModal { get; set; }
5252

53-
protected bool ShowNavigation = false;
54-
protected bool ShowUserNavigation = false;
55-
protected string Username = string.Empty;
56-
protected string ProfileUrl = string.Empty;
57-
protected string SearchKeyword = string.Empty;
53+
private bool _showNavigation;
54+
private bool _showUserNavigation;
55+
private string _username = string.Empty;
56+
private string _profileUrl = string.Empty;
57+
private string _searchKeyword = string.Empty;
5858

5959
protected override void OnInitialized()
6060
{
@@ -64,54 +64,54 @@ protected override void OnInitialized()
6464
UserSessionService.UserLoggedOutEventHandler += UserSessionStateChangedEventHandler;
6565
}
6666

67-
protected void HandleUserSessionStateChanged()
67+
private void HandleUserSessionStateChanged()
6868
{
69-
ShowUserNavigation = UserSessionService.Session.IsSome;
70-
Username = UserSessionService.Session.Match(
69+
_showUserNavigation = UserSessionService.Session.IsSome;
70+
_username = UserSessionService.Session.Match(
7171
() => "",
7272
session => session.Username);
73-
ProfileUrl = $"{NavigationManager.BaseUri}user/profile/{Username}";
74-
ShowNavigation = true;
73+
_profileUrl = $"{NavigationManager.BaseUri}user/profile/{_username}";
74+
_showNavigation = true;
7575
StateHasChanged();
7676
}
7777

78-
protected async Task OnLogoutClicked()
78+
private async Task OnLogoutClicked()
7979
{
8080
await UserSessionService.LogoutAsync();
8181
await BrowserRepository.RecycleAsync();
8282
NavigationManager.NavigateTo("/");
8383
}
8484

85-
protected void HandleLocationChanged(object sender, LocationChangedEventArgs e)
85+
private void HandleLocationChanged(object sender, LocationChangedEventArgs e)
8686
{
8787
InvokeAsync(async () => { await CollapseNavigationMenuAsync(); });
8888
}
8989

90-
protected void UserSessionStateChangedEventHandler(object sender, EventArgs _)
90+
private void UserSessionStateChangedEventHandler(object sender, EventArgs _)
9191
{
9292
HandleUserSessionStateChanged();
9393
}
9494

95-
protected async Task OnEncryptFileClicked()
95+
private async Task OnEncryptFileClicked()
9696
{
9797
FileTransferModal.Open();
9898
await CollapseNavigationMenuAsync();
9999
}
100100

101-
protected async Task OnEncryptMessageClicked()
101+
private async Task OnEncryptMessageClicked()
102102
{
103103
MessageTransferModal.Open();
104104
await CollapseNavigationMenuAsync();
105105
}
106106

107-
protected async Task CollapseNavigationMenuAsync()
107+
private async Task CollapseNavigationMenuAsync()
108108
{
109-
await JSRuntime.InvokeVoidAsync("Crypter.CollapseNavBar");
109+
await JsRuntime.InvokeVoidAsync("Crypter.CollapseNavBar");
110110
}
111111

112-
protected void OnSearchClicked()
112+
private void OnSearchClicked()
113113
{
114-
NavigationManager.NavigateTo($"/user/search?query={SearchKeyword}");
114+
NavigationManager.NavigateTo($"/user/search?query={_searchKeyword}");
115115
}
116116

117117
public void Dispose()

0 commit comments

Comments
 (0)