@using System.ComponentModel.DataAnnotations @using System.Text.RegularExpressions @using ImageBoardServerApp.Auth @using ImageBoardServerApp.Data @using ImageBoardServerApp.Data.Repository @using Microsoft.AspNetCore.Html @inject AuthenticationStateProvider authStateProvider @inject NavigationManager navigationManager;
@if (showOpenThread) { [ @toggleText ] } @post.Title @post.Username @if (post.User.Role != "User") { ##@post.User.Role } @getTimeFromUnix(post.CreatedAt) No.@post.GET (@value) @if (post.IsSticky) { Stickied } @if (post.IsLocked) { Locked }
@if (opened) {
@if (@post.Image != null) { No Image found } else { [No Image] }
@foreach (string s in @post.Content.Split("\n")) { var className = ""; @if (s.StartsWith(">") && !Regex.IsMatch(s, "^>{2,}")) { className = "greenText"; } @s  }
[ @if (post.IsSticky) { Unsticky } else { Sticky } ] [ @if (post.IsLocked) { Unlock } else { Lock } ] @if (canDel) { [ Delete ] } [ Report ] @if (showOpenThread) { [ (@post.Comments.Count) View Thread ] } else { [ @post.Comments.Count Comments ] }
} @code { public bool canDel { get; set; } private async void lockMe() { post.IsLocked = !post.IsLocked; await PostsRepository.updatePostAsync(post); } private async void stickyMe() { post.IsSticky = !post.IsSticky; await PostsRepository.updatePostAsync(post); } private static DateTime getTimeFromUnix(double javaTimeStamp) { var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); dateTime = dateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime(); return dateTime; } private async Task deletePost() { string boardTag = post.Board; var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; var user = await cauthStateProvder.GetAuthenticationStateAsync(); var usr = user.User; UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); if (foundusr.Role != "User" || post.UserID == foundusr.UserID) { await TheManager.deleteThread(post); navigationManager.NavigateTo($"/{boardTag}"); } } private bool opened = true; private string toggleText = "-"; private string value; private void ToggleOpened() { opened = !opened; toggleText = opened ? "-" : "+"; } protected override async Task OnAfterRenderAsync(bool firstRender) { await base.OnAfterRenderAsync(firstRender); value = TheManager.getBumpValue(post) + "v"; string boardTag = post.Board; var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; var user = await cauthStateProvder.GetAuthenticationStateAsync(); var usr = user.User; UserData foundusr = await UsersRepository.getUserByEmailAsync(usr.Identity.Name); if (foundusr != null && (foundusr.Role != "User" || post.UserID == foundusr.UserID)) { canDel = true; return; } canDel = false; } [Parameter] [Required] public PostData post { get; set; } [Parameter] [Required] public bool showOpenThread { get; set; } }