mirror of
https://github.com/usetrmnl/byos_laravel.git
synced 2026-01-13 23:18:10 +00:00
101 lines
3.5 KiB
PHP
101 lines
3.5 KiB
PHP
<?php
|
|
|
|
use Livewire\Volt\Component;
|
|
use Illuminate\Support\Collection;
|
|
|
|
|
|
new class extends Component {
|
|
public $token;
|
|
public $devices;
|
|
public $selected_device;
|
|
|
|
public function mount(): void
|
|
{
|
|
$token = Auth::user()?->tokens()?->first();
|
|
if ($token === null) {
|
|
$token = Auth::user()->createToken('api-token', ['update-screen']);
|
|
}
|
|
$this->token = $token->plainTextToken;
|
|
|
|
$this->devices = auth()->user()->devices?->pluck('id', 'name');
|
|
$this->selected_device = $this->devices->first();
|
|
}
|
|
|
|
public function regenerateToken()
|
|
{
|
|
Auth::user()->tokens()?->first()?->delete();
|
|
$token = Auth::user()->createToken('api-token', ['update-screen']);
|
|
$this->token = $token->plainTextToken;
|
|
}
|
|
};
|
|
?>
|
|
|
|
<div class="py-12">
|
|
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
|
<div class="flex justify-between items-center mb-6">
|
|
<h2 class="text-2xl font-semibold dark:text-gray-100">API
|
|
<flux:badge size="sm" class="ml-2">Plugin</flux:badge>
|
|
</h2>
|
|
|
|
</div>
|
|
|
|
<div class="mb-6 max-w-md">
|
|
@if(isset($devices))
|
|
<flux:select wire:model.live="selected_device" label="Select Device">
|
|
@foreach($devices as $id => $name)
|
|
<flux:select.option value="{{$name}}">
|
|
{{ $id }}
|
|
</flux:select.option>
|
|
@endforeach
|
|
</flux:select>
|
|
@endif
|
|
</div>
|
|
|
|
<div>
|
|
<p>
|
|
<flux:badge>POST</flux:badge>
|
|
<span class="ml-2 font-mono">{{ route('display.update') }}?device_id={{ $selected_device }}</span>
|
|
</p>
|
|
<div class="mt-4">
|
|
<h3 class="text-lg">Headers</h3>
|
|
<div>Authorization <span class="ml-2 font-mono">Bearer {{$token ?? '**********'}}</span>
|
|
<flux:button variant="subtle" size="xs" class="mt-2" wire:click="regenerateToken()">
|
|
Regenerate Token
|
|
</flux:button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-4">
|
|
<h3 class="text-lg">Body</h3>
|
|
<div class="font-mono">
|
|
<pre>
|
|
{"markup":"<h1>Hello World</h1>"}
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="mt-6">
|
|
<p>
|
|
<flux:badge>GET</flux:badge><flux:badge>POST</flux:badge>
|
|
<span class="ml-2 font-mono">{{ route('display.status') }}?device_id={{ $selected_device }}</span>
|
|
</p>
|
|
<div class="mt-4">
|
|
<h3 class="text-lg">Headers</h3>
|
|
<div>Authorization <span class="ml-2 font-mono">Bearer {{$token ?? '**********'}}</span>
|
|
<flux:button variant="subtle" size="xs" class="mt-2" wire:click="regenerateToken()">
|
|
Regenerate Token
|
|
</flux:button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-4">
|
|
<h3 class="text-lg">Body <flux:badge size="sm">POST</flux:badge></h3>
|
|
<div class="font-mono">
|
|
<pre>
|
|
{"default_refresh_interval": 900, "sleep_mode_enabled": true, "pause_until": "2025-07-10T22:00:00+02:00"}
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|