From 26901f82220fe18c0ad6e2bfc23c59b451a4e198 Mon Sep 17 00:00:00 2001 From: Frankie B Date: Fri, 8 Sep 2023 23:19:40 +0100 Subject: feat: add error handling (#14) * Remove commented out crap * Update theme to use some colors from catppuccin, add error handling for API/DB --- resources/views/components/errors/api-error.blade.php | 4 ++++ resources/views/components/errors/db-error.blade.php | 4 ++++ resources/views/pages/bookmarks.blade.php | 14 +++++++++++++- resources/views/pages/guestbook.blade.php | 16 ++++++++++++++-- resources/views/pages/music.blade.php | 14 ++++++++++++++ resources/views/pages/weather.blade.php | 19 ++++++++++++++++--- 6 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 resources/views/components/errors/api-error.blade.php create mode 100644 resources/views/components/errors/db-error.blade.php (limited to 'resources') diff --git a/resources/views/components/errors/api-error.blade.php b/resources/views/components/errors/api-error.blade.php new file mode 100644 index 0000000..1d4609a --- /dev/null +++ b/resources/views/components/errors/api-error.blade.php @@ -0,0 +1,4 @@ +
+

API Error: There was an error connecting to the API.

+

If this error persists, please notify me via e-mail.

+
diff --git a/resources/views/components/errors/db-error.blade.php b/resources/views/components/errors/db-error.blade.php new file mode 100644 index 0000000..45f6157 --- /dev/null +++ b/resources/views/components/errors/db-error.blade.php @@ -0,0 +1,4 @@ +
+

DB Error: There was an error connecting to the database.

+

If this error persists, please notify me via e-mail.

+
diff --git a/resources/views/pages/bookmarks.blade.php b/resources/views/pages/bookmarks.blade.php index 54d464d..d7d8283 100644 --- a/resources/views/pages/bookmarks.blade.php +++ b/resources/views/pages/bookmarks.blade.php @@ -3,7 +3,18 @@ @section('description', 'This is the personal homepage of floppydisk.') @section('content') @php - $categories = DB::select(' + $db_alive = true; + try { + DB::connection()->getPdo(); + } catch (Exception $e) { + $db_alive = false; + } + @endphp + @if (!$db_alive) + @include('components.errors.db-error') + @else + @php + $categories = DB::select(' SELECT id, name FROM bookmark__categories ORDER BY priority ASC @@ -37,4 +48,5 @@
@endforeach + @endif @stop diff --git a/resources/views/pages/guestbook.blade.php b/resources/views/pages/guestbook.blade.php index 08bc7cb..13415b4 100644 --- a/resources/views/pages/guestbook.blade.php +++ b/resources/views/pages/guestbook.blade.php @@ -1,13 +1,24 @@ @extends('layouts.default') @section('title', 'Guestbook') @section('content') + @php + $db_alive = true; + try { + DB::connection()->getPdo(); + } catch (Exception $e) { + $db_alive = false; + } + @endphp + @if (!$db_alive) + @include('components.errors.db-error') + @else
@endforeach
@csrf - + @@ -74,4 +85,5 @@
@@ -44,7 +55,7 @@

A few things to note:

  • You can submit an entry once every hour.
  • -
  • Your IP address is logged but not publically displayed.
  • +
  • Your IP address is logged but not publicly displayed.
  • Any entries that appear to be spam will be removed.

@endforeach + @endif @stop diff --git a/resources/views/pages/music.blade.php b/resources/views/pages/music.blade.php index 3e97daa..775157a 100644 --- a/resources/views/pages/music.blade.php +++ b/resources/views/pages/music.blade.php @@ -7,6 +7,19 @@ $cfg = app('config')->get('services')['lastfm']; $api_root = app('config')->get('app')['api_root']; + $api_alive = true; + + try { + $data = file_get_contents($api_root.'/lastfm/current'); + } catch (Exception $e) { + $api_alive = false; + } + @endphp + @if (!$api_alive) + @include('components.errors.api-error') + @else + + @php $current_track = json_decode(file_get_contents($api_root . '/lastfm/current')); $top_tracks = json_decode(file_get_contents($api_root . '/lastfm/top')); $count = 0; @@ -51,4 +64,5 @@
+ @endif @stop diff --git a/resources/views/pages/weather.blade.php b/resources/views/pages/weather.blade.php index 823c448..369927f 100644 --- a/resources/views/pages/weather.blade.php +++ b/resources/views/pages/weather.blade.php @@ -13,10 +13,22 @@ function degreesToCompassDirection($degrees) { return $cardinalDirections[round($degrees*16/360)]; } -$data = json_decode(file_get_contents($api_root.'/weather')); -$updated = gmdate('H:i Y-m-d', $data->updated); -$data = $data->current; +$api_alive = true; + +try { + $data = file_get_contents($api_root.'/weather'); +} catch (Exception $e) { + $api_alive = false; +} @endphp +@if (!$api_alive) + @include('components.errors.api-error') +@else + @php + $data = json_decode(file_get_contents($api_root.'/weather')); + $updated = gmdate('H:i Y-m-d', $data->updated); + $data = $data->current; + @endphp

Local Weather

@@ -45,4 +57,5 @@ $data = $data->current;

(Last Update: {{ $updated }}) +@endif @stop -- cgit v1.2.3-54-g00ecf