!INFO: tried to move to postgreSQL did not work

fix: fixed bumping, fixed banning from Reports Menu
feat: improved homepage, finilized comments and posts, moved version from nav menu to sidebar

Signed-off-by: limited_dev <loginakkisativ@gmail.com>
This commit is contained in:
limited_dev 2023-06-13 23:34:16 +02:00
parent 7bd31ea7b5
commit 73be698399
12 changed files with 188 additions and 47 deletions

View file

@ -1,8 +1,9 @@
@page "/"
@using ImageBoardServerApp.Util
@using ImageBoardServerApp.Data.Repository
@inject AuthenticationStateProvider authStateProvider
<h1>BulletBoard</h1>
<h1>BulletBoard @ver</h1>
<p>
This is a simple <a href="https://en.wiktionary.org/wiki/imageboard">imageboard</a> made in <a href="https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor">Razor Server</a>.
<br/>
@ -12,7 +13,9 @@
<br/>
Click <a href="https://www.gnu.org/philosophy/free-sw.en.html">here</a> to learn more about free software.
<br/>
Check out the project on <a href="https://git.limited-dev.de/eric/imageboard">Gitlab</a>.
<br>
<br/>
We're currently @amountOfUsers User(s), viewing @amountOfPosts Post(s) with @amountOfComments Comment(s).
<br/>
Click here to:
@ -36,6 +39,8 @@
private int amountOfComments = -1;
private int amountOfUsers = -1;
public string ver { get; set; } = TheManager.version;
protected override async Task OnParametersSetAsync()
{
var posts = await PostsRepository.getPostsAsync();

View file

@ -55,6 +55,8 @@
{
if (selectedItem == null || selectedItem == "none")
return;
if (explaination == null)
return;
var cauthStateProvder = (CustomAuthenticationStateProvider)authStateProvider;
var user = await cauthStateProvder.GetAuthenticationStateAsync();
var usr = user.User;
@ -94,10 +96,13 @@
};
List<ReportData> submittedReports = foundusr.RecivedReports;
foreach (var r in submittedReports)
if (foundusr.RecivedReports != null)
{
if (r.ReportedPostID == reportData.ReportedPostID && r.ReportedCommentID == reportData.ReportedCommentID)
return;
foreach (var r in submittedReports)
{
if (r.ReportedPostID == reportData.ReportedPostID && r.ReportedCommentID == reportData.ReportedCommentID)
return;
}
}
await ReportsRepository.createReportAsync(reportData);

View file

@ -1,10 +1,53 @@
@page "/sys/modtools/{targetuserid}/{type}/{targetid}"
@page "/sys/modtools/banandordel/{targetuserid}/{board}/{type}/{threadid}/{targetid}"
@using ImageBoardServerApp.Data.Repository
@using System.ComponentModel.DataAnnotations
@inject NavigationManager navManager
@inject IJSRuntime js
<AuthorizeView Roles="Admin,Mod">
<Authorized>
<div>
<UserEntry user="user"></UserEntry>
<p>
<a href="/@board/thread/@threadid">[View Thread]</a>
</p>
<div>
<br/>
@if (type == "op")
{
<Post post="post" showOpenThread="true"/>
}
else if (type == "comment")
{
<Comment comment="comment"/>
}
else
{
<p>This is not a valid type.</p>
}
</div>
<div>
<form>
<RadzenFormField Text="Reason" Variant="Variant.Outlined">
<RadzenTextBox @bind-Value="@reason"/>
</RadzenFormField>
<br/>
<br/>
<span>Ban User: </span>
<a @onclick="() => banTarget(1)" href="javascript:void(0)">1h</a>
<span> </span>
<a @onclick="() => banTarget(2)" href="javascript:void(0)">2h</a>
<span> </span>
<a @onclick="() => banTarget(1 * 24)" href="javascript:void(0)">1d</a>
<span> </span>
<a @onclick="() => banTarget(7 * 24)" href="javascript:void(0)">1w</a>
<span> </span>
<a @onclick="() => banTarget(31 * 24)" href="javascript:void(0)">1m</a>
<span> </span>
<a @onclick="() => banTarget(365 * 24)" href="javascript:void(0)">1yr</a>
<span> </span>
</form>
</div>
</div>
</Authorized>
<NotAuthorized>
@ -14,14 +57,82 @@
@code {
public string timetoBan { get; set; }
public string reason { get; set; }
public UserData user { get; set; }
public PostData post { get; set; }
public CommentData comment { get; set; }
private async Task banTarget(int hours)
{
UserData ud = await UsersRepository.getUserByIdAsync(int.Parse(targetuserid));
ud.TimeBanned = DateTimeOffset.Now.ToUnixTimeMilliseconds() + (hours * 3600000);
if (reason == "")
{
reason = "not specified";
}
ud.BanReason = reason;
await UsersRepository.updateUserAsync(ud);
navManager.NavigateTo("/@board/", true, true);
}
protected override async Task OnParametersSetAsync()
{
if (!int.TryParse(targetid, out _) || !int.TryParse(targetuserid, out _))
{
navManager.NavigateTo("/sys/dead", true);
return;
}
var targeti = int.Parse(targetid);
var targetuseri = int.Parse(targetuserid);
var u = await UsersRepository.getUserByIdAsync(targetuseri);
if (u == null)
{
navManager.NavigateTo("/sys/dead", true);
return;
}
if (targetuseri != u.UserID)
{
navManager.NavigateTo("/sys/dead", true);
return;
}
user = u;
var isPost = type == "op";
if (isPost)
{
post = await PostsRepository.getPostByIdAsync(targeti);
}
else
{
comment = await CommentsRepository.getCommentByIdAsync(targeti);
}
await base.OnParametersSetAsync();
}
[Parameter]
[Required]
public string targetuserid { get; set; }
[Parameter]
[Required]
public string threadid { get; set; }
[Parameter]
[Required]
public string type { get; set; }
[Parameter]
[Required]
public string board { get; set; }
[Parameter]
[Required]
public string targetid { get; set; }