@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 (opened)
{
@if (@post.Image != null)
{
string isActiveClass = isActive ? "active" : "";
isActive = !isActive" class="@isActiveClass" src="@($"{@post.Image.ImageLocation}?size=258x258")" alt="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
}
}
}
@code {
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.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 OnParametersSetAsync()
{
await base.OnParametersSetAsync();
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; }
}