Report 404s better

This commit is contained in:
swagg boi 2023-05-28 02:07:09 -04:00
parent 65bb0ef5a0
commit f8bdcc9201
7 changed files with 50 additions and 20 deletions

View file

@ -58,7 +58,9 @@ Run the tests locally (against development environment):
## TODOs
1. Report 404s better (thread by id and remark by id)
1. Clean-up 404 stuff and variable checking (what's up with
`$last_page` checking?)
1. Don't allow non-mods to view hidden posts at all
1. "All new posts flagged" mode (require approval for new posts)
1. Tests for mod-only user?

View file

@ -6,9 +6,15 @@ sub by_id($self) {
my $remark_id = $self->param('remark_id');
my $remark = $self->remark->by_id($remark_id);
$self->stash(status => 404) unless $remark->{'id'};
$self->stash(remark => $remark);
if (my $remark_id = $remark->{'id'}) {
$self->stash(remark => $remark)
}
else {
$self->stash(
remark => {},
error => 'Remark not found 🤷'
)
}
$self->render;
}

View file

@ -64,13 +64,19 @@ sub by_id($self) {
$self->stash(
thread => {},
remarks => [],
status => 404
status => 404,
error => 'Thread not found 🤷'
)
}
# Check for remarks or thread page number to make sure
# remark->by_page_for did its job
$self->stash(status => 404) unless $remarks->[0] || 1 >= $this_page;
unless ((my $first_remark = $remarks->[0]) || 1 >= $this_page) {
$self->stash(
status => 404,
error => 'Page not found 🕵️'
)
}
$self->render;
}
@ -81,14 +87,24 @@ sub by_page($self) {
my $last_page = $self->thread->last_page;
my $threads = $self->thread->by_page($this_page);
$self->stash(status => 404) unless $threads->[0];
$self->stash(
threads => $threads,
this_page => $this_page,
last_page => $last_page,
base_path => $base_path
);
if (my $first_thread = $threads->[0]) {
$self->stash(
threads => $threads,
this_page => $this_page,
last_page => $last_page,
base_path => $base_path
)
}
else {
$self->stash(
threads => [],
this_page => undef,
last_page => undef,
base_path => undef,
status => 404,
error => 'Page not found 🕵️'
)
}
$self->render;
}

View file

@ -38,7 +38,7 @@ subtest 'View single thread', sub {
->text_like(h2 => qr/Thread #1/);
$t->get_ok('/thread/single/65536')->status_is(404)
->text_like(h2 => qr/Thread #/);
->text_like(p => qr/Thread not found/);
};
subtest 'Threads feed', sub {

View file

@ -1,11 +1,12 @@
% layout 'default';
% title "Remark #$remark->{'id'}";
% title my $remark_id = $remark->{'id'} ? "Remark #$remark_id" : '?';
<h2 class="page-title"><%= title %></h2>
<% if (my $remark_id = $remark->{'id'}) { =%>
<main class="pager">
<article class="post">
<h4 class="post__title">
<%= $remark->{'date'} %>
<span class="post__id">#<%= $remark->{'id'} %></span>
<span class="post__id">#<%= $remark_id %></span>
</h4>
<h5 class="post__author"><%= $remark->{'author'} %></h5>
<div class="post__body">
@ -31,3 +32,4 @@
<% } =%>
</article>
</main>
<% } =%>

View file

@ -1,11 +1,12 @@
% layout 'default';
% title "Thread #$thread->{'id'}";
% title my $thread_id = $thread->{'id'} ? "Thread #$thread_id" : '?';
<h2 class="page-title"><%= title %></h2>
<% if (my $thread_id = $thread->{'id'}) { =%>
<main class="pager">
<article class="post">
<h3 class="post__title">
<%= $thread->{'title'} %>
<span class="post__id">#<%= $thread->{'id'} %></span>
<span class="post__id">#<%= $thread_id %></span>
</h3>
<h4 class="post__date"><%= $thread->{'date'} %></h4>
<h5 class="post__author"><%= $thread->{'author'} %></h5>
@ -36,6 +37,7 @@
<% } =%>
</article>
</main>
<% } =%>
<% if (my $first_remark = $remarks->[0]) { =%>
<section class="pager" id="remarks">
<h3 class="pager__title">Remarks</h3>

View file

@ -1,6 +1,7 @@
% layout 'default';
% title 'Threads List';
<h2 class="page-title"><%= title %></h2>
<% if (my $first_thread = $threads->[0]) { =%>
<main class="pager">
<% for my $thread (@{$threads}) { =%>
<article class="post">
@ -36,5 +37,6 @@
<nav class="pager__nav">
<%= pagination $this_page, $last_page, ($base_path . '/{page}') %>
</nav>
<% } =%>
<% } =%>
</main>
<% } =%>