commit 7cd1d14d8a346209af217452239981e7f523bd8e
parent be9e3c3603d1958529c4261e359bce999aeec05b
Author: St John Karp <stjohn@fuzzjunket.com>
Date: Mon, 13 Aug 2018 22:19:55 -0700
Implement reply functionality
Created a new status view that shows a single status and permits
replies if you're logged in.
Diffstat:
5 files changed, 60 insertions(+), 1 deletion(-)
diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\Controller;
+use Mastodon;
+use GuzzleHttp\Psr7;
+use Illuminate\Http\Request;
+
+class StatusController extends Controller
+{
+ public function show_status(Request $request, string $status_id)
+ {
+ $status = Mastodon::domain(env('MASTODON_DOMAIN'))
+ ->get('/statuses/' . $status_id);
+
+ $vars = [
+ 'status' => $status,
+ 'mastodon_domain' => explode('//', env('MASTODON_DOMAIN'))[1],
+ 'logged_in' => session()->has('user')
+ ];
+
+ return view('show_status', $vars);
+ }
+}
diff --git a/public/css/styles.css b/public/css/styles.css
@@ -54,6 +54,10 @@ div.actions span {
margin-right: 1em;
}
+div.actions a {
+ text-decoration: none;
+}
+
time {
font-size: smaller;
margin-left: 1em;
diff --git a/resources/views/show_status.blade.php b/resources/views/show_status.blade.php
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="{{ app()->getLocale() }}">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <title>{{ $mastodon_domain }} | Status</title>
+
+ <link rel="stylesheet" href="/css/styles.css" />
+ </head>
+ <body>
+ <h1>{{ $mastodon_domain }} | Status</h1>
+
+ @component('status', ['status' => $status])
+ @endcomponent
+
+ @if ($logged_in)
+ <form method="post" action="/timeline/home">
+ <input type="text" name="spoiler_text" placeholder="Spoiler/Warning" />
+ <textarea rows="4" name="status" placeholder="Reply" required autofocus></textarea>
+ <input type="submit" value="Post" />
+ <input type="hidden" name="in_reply_to_id" value="{{ $status['id'] }}" />
+ {{ csrf_field() }}
+ </form>
+ @endif
+ </body>
+</html>
diff --git a/resources/views/status.blade.php b/resources/views/status.blade.php
@@ -43,7 +43,7 @@
<div class="actions">
<!-- Reply -->
<span>
- ↵
+ <a href="/status/{{ $status['id'] }}">↵</a>
</span>
<!-- Reblog -->
diff --git a/routes/web.php b/routes/web.php
@@ -30,6 +30,8 @@ Route::get('/timeline/home', 'TimelineController@home_timeline')
Route::post('/timeline/home', 'TimelineController@post_status');
+Route::get('/status/{status_id}', 'StatusController@show_status');
+
Route::get('/login', 'LoginController@login')
->name('login');