summaryrefslogtreecommitdiff
path: root/Pages/Component/Titlebar.razor
diff options
context:
space:
mode:
Diffstat (limited to 'Pages/Component/Titlebar.razor')
-rw-r--r--Pages/Component/Titlebar.razor64
1 files changed, 64 insertions, 0 deletions
diff --git a/Pages/Component/Titlebar.razor b/Pages/Component/Titlebar.razor
new file mode 100644
index 0000000..71f3bd0
--- /dev/null
+++ b/Pages/Component/Titlebar.razor
@@ -0,0 +1,64 @@
+@inject IUserService userService
+@inject NavigationManager navigationManager
+@inject IJSRuntime jsRuntime
+
+@if(authorized) {
+ <div id="navbar">
+ <a href="/">Home</a>
+ <a href="/TagDefinitions">Tags</a>
+ <a href="/Gallery?ingest=true">Ingest</a>
+ <a href="/Upload">Upload</a>
+ <a href="javascript:;" @onclick=@(() => aboutDialog.Show())>About</a>
+
+ <p id="nsfw-label">NSFW</p>
+ <div id="nsfw-switch">
+ <NsfwSwitch/>
+ </div>
+ <form action="/Gallery" method="get">
+ <input type="text" name="q" placeholder="Search"/>
+ </form>
+ <a href="javascript:;" @onclick=userService.Logout>Logout</a>
+ </div>
+ <AboutDialog @ref=aboutDialog/>
+} else {
+ <div id="navbar">
+ <h2>Login</h2>
+ <form @onsubmit=Login class="login">
+ <input @bind=username name="username" placeholder="Username" type="text"/>
+ <input @bind=password name="password" placeholder="Password" type="password"/>
+ </form>
+ <a href="javascript:;" @onclick=Login>Login</a>
+ <a href="javascript:;" @onclick=userService.Logout>Logout</a>
+ </div>
+ <script suppress-error="BL9992">
+ function warnBadLogin() {
+ var form = document.querySelector('form.login');
+ form.classList.remove('bad-login');
+ @* TODO: improve this hacky method of triggering reflow *@
+ form.offsetWidth;
+ form.classList.add('bad-login');
+ document.querySelector('form.login input').focus();
+ }
+ </script>
+}
+
+@code {
+ private bool authorized = false;
+
+ private string username;
+ private string password;
+
+ private AboutDialog aboutDialog;
+
+ private void Login() {
+ if(userService.Login(username, password))
+ navigationManager.NavigateTo("/");
+ else
+ WarnBadLogin();
+ }
+
+ private void WarnBadLogin() {
+ jsRuntime.InvokeVoidAsync("warnBadLogin");
+ username = password = "";
+ }
+}