@using ImageBoardServerApp.Data.Repository @using ImageBoardServerApp.Util @using ImageBoardServerApp.Auth @using System.ComponentModel.DataAnnotations @using System.Text.RegularExpressions @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 @if (post.IsSticky) { Stickied } @if (post.IsLocked) { Locked }
@if (opened) {
@if (@post.Image != null) { string isActiveClass = isActive ? "active" : ""; No Image found } else { [No Image] }
@if (showOpenThread) { @foreach (string s in post.Content.Split("\n").ToList().Take(6)) { var className = ""; @if (s.StartsWith(">") && !Regex.IsMatch(s, "^>{2,}")) { className = "greenText"; } @s  } @if (post.Content.Split("\n").Length > 6) {
[Open Thread to read more...] } } else { @foreach (string s in post.Content.Split("\n")) { var className = ""; @if (s.StartsWith(">") && !Regex.IsMatch(s, "^>{2,}")) { className = "greenText"; } @s  } }
[ @if (post.IsSticky) { } else { } @if (post.IsLocked) { } else { } ] [ Report @if (canDel) { } @if (showOpenThread) { @openThreadName } else { @post.Comments.Count Comments } ]
}
@code { private string reportURL { get; set; } private string threadURL { get; set; } private string openThreadName { get; set; } public bool canDel { get; set; } public bool isActive { get; set; } = false; private int linecnt = 0; 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.getUserByIdAsync(int.Parse(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 OnParametersSetAsync() { await base.OnParametersSetAsync(); value = TheManager.getBumpValue(post) + "v"; var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider; var user = await cauthStateProvder.GetAuthenticationStateAsync(); var usr = user.User; UserData foundusr = await UsersRepository.getUserByIdAsync(int.Parse(usr.Identity.Name)); reportURL = $"/sys/report/op/{post.Board}/{post.PostID}"; threadURL = $"/{post.Board}/thread/{post.PostID}"; openThreadName = $"({post.Comments.Count}) View Thread"; 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; } }