diff options
Diffstat (limited to 'app/View/Components')
-rw-r--r-- | app/View/Components/CurrentTrack.php | 27 | ||||
-rw-r--r-- | app/View/Components/DiscordStatus.php | 68 | ||||
-rw-r--r-- | app/View/Components/Layout.php | 26 | ||||
-rw-r--r-- | app/View/Components/Navbar.php | 27 | ||||
-rw-r--r-- | app/View/Components/NeverSaid.php | 34 | ||||
-rw-r--r-- | app/View/Components/TohQuote.php | 35 | ||||
-rw-r--r-- | app/View/Components/TopTracks.php | 27 | ||||
-rw-r--r-- | app/View/Components/Track.php | 29 | ||||
-rw-r--r-- | app/View/Components/Weather.php | 50 |
9 files changed, 323 insertions, 0 deletions
diff --git a/app/View/Components/CurrentTrack.php b/app/View/Components/CurrentTrack.php new file mode 100644 index 0000000..337809a --- /dev/null +++ b/app/View/Components/CurrentTrack.php @@ -0,0 +1,27 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class CurrentTrack extends Component +{ + public $track; + /** + * Create a new component instance. + */ + public function __construct($track) + { + $this->track = $track; + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.current-track'); + } +} diff --git a/app/View/Components/DiscordStatus.php b/app/View/Components/DiscordStatus.php new file mode 100644 index 0000000..3ad3a3b --- /dev/null +++ b/app/View/Components/DiscordStatus.php @@ -0,0 +1,68 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\Http; +use Illuminate\View\Component; + +class DiscordStatus extends Component +{ + /** + * Create a new component instance. + */ + public function __construct() + { + // + } + + /** + * Returns current Discord presence from Lanyard API + * @return array|mixed + */ + public function getDiscordPresence(): mixed { + // If it's already cached just return that + if (Cache::has('discord_presence')) { + return Cache::get('discord_presence'); + } + + $response = Http::get('https://api.lanyard.rest/v1/users/' . Config::get('services.lanyard.user_id')); + $data = $response->json(); + if (!isset($data["data"])) return null; + $presence = $data["data"]; + Cache::put('discord_presence', $presence, now()->addSeconds(60)); + return $presence; + } + + public function getOnlineStatus(): ?array { + $presence = $this->getDiscordPresence(); + if ($presence == null) return null; + return match ($presence["discord_status"]) { + "online", "dnd" => [ + "text" => "online", + "color" => "#02c83a" + ], + "idle" => [ + "text" => "away", + "color" => "#d77c20" + ], + default => [ + "text" => "offline", + "color" => "#ca3329" + ], + }; + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.discord-status', [ + 'status' => $this->getOnlineStatus(), + ]); + } +} diff --git a/app/View/Components/Layout.php b/app/View/Components/Layout.php new file mode 100644 index 0000000..576d1a0 --- /dev/null +++ b/app/View/Components/Layout.php @@ -0,0 +1,26 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class Layout extends Component +{ + /** + * Create a new component instance. + */ + public function __construct() + { + // + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.layout'); + } +} diff --git a/app/View/Components/Navbar.php b/app/View/Components/Navbar.php new file mode 100644 index 0000000..7f119fe --- /dev/null +++ b/app/View/Components/Navbar.php @@ -0,0 +1,27 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class Navbar extends Component +{ + public $title; + /** + * Create a new component instance. + */ + public function __construct($title) + { + $this->title = $title; + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.navigation'); + } +} diff --git a/app/View/Components/NeverSaid.php b/app/View/Components/NeverSaid.php new file mode 100644 index 0000000..c9e1006 --- /dev/null +++ b/app/View/Components/NeverSaid.php @@ -0,0 +1,34 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class NeverSaid extends Component +{ + /** + * Create a new component instance. + */ + public function __construct() + { + // + } + + function returnQuote(): array { + $quotes = config('quotes.neversaid'); + $index = rand(0, count($quotes) - 1); + return $quotes[$index]; + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.never-said', [ + "quote" => $this->returnQuote() + ]); + } +} diff --git a/app/View/Components/TohQuote.php b/app/View/Components/TohQuote.php new file mode 100644 index 0000000..a53d713 --- /dev/null +++ b/app/View/Components/TohQuote.php @@ -0,0 +1,35 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class TohQuote extends Component +{ + /** + * Create a new component instance. + */ + public function __construct() + { + // + } + + function returnQuote(): array { + $quotes = config('quotes.toh'); + $index = rand(0, count($quotes) - 1); + return $quotes[$index]; + } + + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.toh-quote',[ + 'quote' => $this->returnQuote() + ]); + } +} diff --git a/app/View/Components/TopTracks.php b/app/View/Components/TopTracks.php new file mode 100644 index 0000000..768ce33 --- /dev/null +++ b/app/View/Components/TopTracks.php @@ -0,0 +1,27 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class TopTracks extends Component +{ + public $tracks; + /** + * Create a new component instance. + */ + public function __construct($tracks) + { + $this->tracks = $tracks; + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.top-tracks'); + } +} diff --git a/app/View/Components/Track.php b/app/View/Components/Track.php new file mode 100644 index 0000000..b9f628f --- /dev/null +++ b/app/View/Components/Track.php @@ -0,0 +1,29 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class Track extends Component +{ + public $track; + public $count; + /** + * Create a new component instance. + */ + public function __construct($track, $count) + { + $this->track = $track; + $this->count = $count; + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.track'); + } +} diff --git a/app/View/Components/Weather.php b/app/View/Components/Weather.php new file mode 100644 index 0000000..dcf3ff7 --- /dev/null +++ b/app/View/Components/Weather.php @@ -0,0 +1,50 @@ +<?php + +namespace App\View\Components; + +use Closure; +use Exception; +use Illuminate\Contracts\View\View; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\Http; +use Illuminate\View\Component; + +class Weather extends Component +{ + /** + * Create a new component instance. + */ + public function __construct() + { + // + } + + public function getWeatherData(): mixed { + // If it's already cached just return that + if (Cache::has('weather_data')) { + return Cache::get('weather_data'); + } + + try { + $response = Http::get('http://' . Config::get('services.weatherlink') . '/v1/current_conditions'); + $data = $response->json(); + $conditions = $data["data"]["conditions"]; + Cache::put('weather_data', $conditions, now()->addSeconds(60)); + return $conditions; + } catch (Exception $ex) { + return null; + } + + } + + /** + * Get the view / contents that represent the component. + */ + public function render(): View|Closure|string + { + return view('components.weather', [ + 'conditions' => $this->getWeatherData(), + ]); + } +} |