finished implementing thread view, finished adding comments
This commit is contained in:
parent
f09722757a
commit
3e7218c6ae
12 changed files with 87 additions and 34 deletions
|
@ -1,5 +1,6 @@
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using ImageBoardServerApp.Shared.Components;
|
using ImageBoardServerApp.Shared.Components;
|
||||||
|
|
||||||
namespace ImageBoardServerApp.Data;
|
namespace ImageBoardServerApp.Data;
|
||||||
|
@ -24,9 +25,9 @@ public class CommentData
|
||||||
public virtual UserData User { get; set; }
|
public virtual UserData User { get; set; }
|
||||||
|
|
||||||
//[ForeignKey("ImageID")]
|
//[ForeignKey("ImageID")]
|
||||||
public virtual ImageData Image { get; set; }
|
public virtual ImageData? Image { get; set; }
|
||||||
|
|
||||||
public int ImageID { get; set; }
|
public int? ImageID { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public string Content { get; set; }
|
public string Content { get; set; }
|
||||||
|
|
|
@ -22,4 +22,9 @@
|
||||||
<Folder Include="wwwroot\static" />
|
<Folder Include="wwwroot\static" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<AdditionalFiles Include="Shared\Components\Forms\CommentForm.razor" />
|
||||||
|
<AdditionalFiles Include="Shared\Components\Forms\PostForm.razor" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,9 +1,23 @@
|
||||||
@page "/"
|
@page "/"
|
||||||
|
@using ImageBoardServerApp.Data.Repository
|
||||||
|
|
||||||
<h1>BulletBoard</h1>
|
<h1>BulletBoard</h1>
|
||||||
<div>
|
<span>This is a simple Imageboard made in Razor.</span>
|
||||||
This is a simple Imageboard made in Razor.
|
<br/>
|
||||||
</div>
|
<span>We're currently hosting @amountOfPosts Threads with @amountOfComments Comments from @amountOfUsers Users.</span>
|
||||||
<div>
|
|
||||||
|
|
||||||
</div>
|
@code{
|
||||||
|
private int amountOfPosts = -1;
|
||||||
|
private int amountOfComments = -1;
|
||||||
|
private int amountOfUsers = -1;
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
var posts = await PostsRepository.getPostsAsync();
|
||||||
|
amountOfPosts = posts.Count;
|
||||||
|
var comments = await CommentsRepository.getCommentsAsync();
|
||||||
|
amountOfComments = comments.Count;
|
||||||
|
var users = await UsersRepository.getUsersAsync();
|
||||||
|
amountOfUsers = users.Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using ImageBoardServerApp.Data
|
@using ImageBoardServerApp.Data
|
||||||
|
@using ImageBoardServerApp.Data.Repository
|
||||||
|
|
||||||
<div class="threadHeader">
|
<div class="threadHeader">
|
||||||
<span>[</span>
|
<span>[</span>
|
||||||
|
@ -13,25 +14,28 @@
|
||||||
{
|
{
|
||||||
<div class="threadContent">
|
<div class="threadContent">
|
||||||
<div class="threadImage">
|
<div class="threadImage">
|
||||||
@if (@comment.Image != null)
|
@if (image != null)
|
||||||
{
|
{
|
||||||
<img src="@($"data:image/jpeg;base64,{Convert.ToBase64String(@comment.Image.Image)}")" alt="No Image found" />
|
<img src="@($"data:image/jpeg;base64,{Convert.ToBase64String(image.Image)}")" alt="No Image found" />
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<span>[No Image]</span>
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="threadTextContainer">
|
<div class="threadTextContainer">
|
||||||
@foreach (string s in @comment.Content.Split("\n"))
|
@foreach (string s in @comment.Content.Split("\n"))
|
||||||
|
{
|
||||||
|
@if (s.StartsWith(">"))
|
||||||
|
{
|
||||||
|
<span class="threadText greenText">@s</span>
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
<span class='threadText'>@s</span>
|
<span class='threadText'>@s</span>
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="threadFooter">
|
<div class="threadFooter">
|
||||||
<span>[</span>
|
<span>[</span>
|
||||||
<a class="report" href="/report/@comment.Board/@comment.CommentID" target="_blank">Report</a>
|
<a class="report" href="/report/@comment.Board/@comment.PostID/comment/@comment.CommentID" target="_blank">Report</a>
|
||||||
<span>]</span>
|
<span>]</span>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
@ -46,6 +50,25 @@
|
||||||
return dateTime;
|
return dateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ImageData image;
|
||||||
|
|
||||||
|
protected override async Task OnInitializedAsync()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
i = (int)comment.ImageID;
|
||||||
|
}
|
||||||
|
catch (InvalidOperationException ioe)
|
||||||
|
{
|
||||||
|
i = -1;
|
||||||
|
}
|
||||||
|
if (i != null)
|
||||||
|
{
|
||||||
|
image = await ImagesRepository.getImageByIdAsync(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private bool opened = true;
|
private bool opened = true;
|
||||||
|
|
||||||
private string toggleText = "-";
|
private string toggleText = "-";
|
||||||
|
|
|
@ -30,6 +30,10 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.greenText{
|
||||||
|
color: #3caf03;
|
||||||
|
}
|
||||||
|
|
||||||
.threadImage{
|
.threadImage{
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
max-width: 500px;
|
max-width: 500px;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
@using System.ComponentModel.DataAnnotations
|
@using System.ComponentModel.DataAnnotations
|
||||||
@using ImageBoardServerApp.Data.Repository
|
@using ImageBoardServerApp.Data.Repository
|
||||||
|
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager navigationManager
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<span>[</span>
|
<span>[</span>
|
||||||
|
@ -80,7 +80,7 @@
|
||||||
ms.Close();
|
ms.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Byte[] image;
|
private Byte[] image = null;
|
||||||
|
|
||||||
private async Task onPostClick()
|
private async Task onPostClick()
|
||||||
{
|
{
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
};
|
};
|
||||||
int userID = await UsersRepository.createUserAsync(userToCreate);
|
int userID = await UsersRepository.createUserAsync(userToCreate);
|
||||||
|
|
||||||
bool hasImage = false;
|
bool hasImage = image != null;
|
||||||
CommentData commentToCreate;
|
CommentData commentToCreate;
|
||||||
if (hasImage)
|
if (hasImage)
|
||||||
{
|
{
|
||||||
|
@ -111,14 +111,6 @@
|
||||||
Username = postUsername,
|
Username = postUsername,
|
||||||
Board = post.Board,
|
Board = post.Board,
|
||||||
CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds()
|
CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds()
|
||||||
/*
|
|
||||||
UserID = userID,
|
|
||||||
Post = post,
|
|
||||||
Username = postUsername,
|
|
||||||
Content = postContent,
|
|
||||||
CreatedAt = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
|
|
||||||
Board = post.Board
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -138,11 +130,13 @@
|
||||||
if (commentId == -1)
|
if (commentId == -1)
|
||||||
{
|
{
|
||||||
//Open comment unsucessfull
|
//Open comment unsucessfull
|
||||||
NavigationManager.NavigateTo("/UnSuccessfulPost");
|
navigationManager.NavigateTo("/UnSuccessfulPost");
|
||||||
Console.WriteLine("Shit sucks and did not work.");
|
Console.WriteLine("Shit sucks and did not work.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//comment successfull
|
//comment successfull
|
||||||
Console.WriteLine("Post created");
|
Console.WriteLine("Post created");
|
||||||
|
navigationManager.NavigateTo($"/{post.Board}/thread/{post.PostID}", true, true);
|
||||||
|
opened = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -125,7 +125,7 @@
|
||||||
if (postId != -1)
|
if (postId != -1)
|
||||||
{
|
{
|
||||||
//Open post successfull
|
//Open post successfull
|
||||||
NavigationManager.NavigateTo("/SuccessfulPost");
|
NavigationManager.NavigateTo($"/{board.Tag}/thread/{postId}", true, true);
|
||||||
Console.WriteLine("Post created");
|
Console.WriteLine("Post created");
|
||||||
}
|
}
|
||||||
else
|
else
|
|
@ -28,9 +28,16 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="threadTextContainer">
|
<div class="threadTextContainer">
|
||||||
@foreach (string s in @post.Content.Split("\n"))
|
@foreach (string s in @post.Content.Split("\n"))
|
||||||
|
{
|
||||||
|
@if (s.StartsWith(">"))
|
||||||
|
{
|
||||||
|
<span class="threadText greenText">@s</span>
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
<span class='threadText'>@s</span>
|
<span class='threadText'>@s</span>
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="threadFooter">
|
<div class="threadFooter">
|
||||||
|
@ -41,7 +48,7 @@
|
||||||
@if (showOpenThread)
|
@if (showOpenThread)
|
||||||
{
|
{
|
||||||
<span>[</span>
|
<span>[</span>
|
||||||
<a class="openThread" href="/@post.Board/thread/@post.PostID" target="_blank">(@post.Comments.Count) Open Thread</a>
|
<a class="openThread" href="/@post.Board/thread/@post.PostID">(@post.Comments.Count) Open Thread</a>
|
||||||
<span>]</span>
|
<span>]</span>
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -30,6 +30,10 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.greenText{
|
||||||
|
color: #3caf03;
|
||||||
|
}
|
||||||
|
|
||||||
.threadImage{
|
.threadImage{
|
||||||
margin: 6px;
|
margin: 6px;
|
||||||
max-width: 500px;
|
max-width: 500px;
|
||||||
|
|
|
@ -13,4 +13,5 @@
|
||||||
@using ImageBoardServerApp
|
@using ImageBoardServerApp
|
||||||
@using ImageBoardServerApp.Shared
|
@using ImageBoardServerApp.Shared
|
||||||
@using ImageBoardServerApp.Shared.Components
|
@using ImageBoardServerApp.Shared.Components
|
||||||
|
@using ImageBoardServerApp.Shared.Components.Forms
|
||||||
@using ImageBoardServerApp.Data
|
@using ImageBoardServerApp.Data
|
Loading…
Reference in a new issue