-
+
diff --git a/resources/js/pages/admin/dashboard.tsx b/resources/js/pages/admin/dashboard.tsx
index 39122cc..d99ed80 100644
--- a/resources/js/pages/admin/dashboard.tsx
+++ b/resources/js/pages/admin/dashboard.tsx
@@ -1,6 +1,10 @@
import { Head, Link, router } from '@inertiajs/react';
import { Ban, Radio, Shield, StopCircle, Undo2 } from 'lucide-react';
import { Button } from '@/components/ui/button';
+import { dashboard as adminDashboard } from '@/routes/admin';
+import { stop as stopBroadcast } from '@/routes/admin/broadcasts';
+import { restore, suspend } from '@/routes/admin/channels';
+import { show as showChannel } from '@/routes/channels';
type LiveBroadcast = {
id: number;
@@ -89,7 +93,9 @@ export default function AdminDashboard({
@@ -148,7 +152,7 @@ export default function AdminDashboard({
size="sm"
onClick={() =>
router.post(
- `/admin/channels/${channel.slug}/restore`,
+ restore(channel.slug),
)
}
>
@@ -161,7 +165,7 @@ export default function AdminDashboard({
size="sm"
onClick={() =>
router.post(
- `/admin/channels/${channel.slug}/suspend`,
+ suspend(channel.slug),
)
}
>
@@ -183,7 +187,7 @@ AdminDashboard.layout = {
breadcrumbs: [
{
title: 'Admin',
- href: '/admin',
+ href: adminDashboard(),
},
],
};
diff --git a/resources/js/pages/channels/show.tsx b/resources/js/pages/channels/show.tsx
index 6b897e3..b8ab8f1 100644
--- a/resources/js/pages/channels/show.tsx
+++ b/resources/js/pages/channels/show.tsx
@@ -12,6 +12,9 @@ import type { FormEvent } from 'react';
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { VideoPlayer } from '@/components/video-player';
+import { home, login } from '@/routes';
+import { follow, unfollow } from '@/routes/channels';
+import { store as storeChat } from '@/routes/channels/chat';
import type {
BroadcastSummary,
ChannelDetail,
@@ -39,7 +42,7 @@ export default function ChannelShow({
function submitChat(event: FormEvent) {
event.preventDefault();
- chatForm.post(`/channels/${channel.slug}/chat`, {
+ chatForm.submit(storeChat(channel.slug), {
preserveScroll: true,
onSuccess: () => chatForm.reset('body'),
});
@@ -108,13 +111,13 @@ export default function ChannelShow({
onClick={() =>
isFollowing
? router.delete(
- `/channels/${channel.slug}/follow`,
+ unfollow(channel.slug),
{
preserveScroll: true,
},
)
: router.post(
- `/channels/${channel.slug}/follow`,
+ follow(channel.slug),
undefined,
{
preserveScroll: true,
@@ -127,7 +130,7 @@ export default function ChannelShow({
) : (
)}
@@ -258,7 +261,7 @@ ChannelShow.layout = {
breadcrumbs: [
{
title: 'Channel',
- href: '/',
+ href: home(),
},
],
};
diff --git a/resources/js/pages/dashboard.tsx b/resources/js/pages/dashboard.tsx
index 057576f..71d0695 100644
--- a/resources/js/pages/dashboard.tsx
+++ b/resources/js/pages/dashboard.tsx
@@ -1,4 +1,4 @@
-import { Head, router, useForm } from '@inertiajs/react';
+import { Head, Link, router, useForm } from '@inertiajs/react';
import {
Copy,
KeyRound,
@@ -13,6 +13,17 @@ import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { useClipboard } from '@/hooks/use-clipboard';
+import { dashboard as dashboardRoute } from '@/routes';
+import { show as showChannel } from '@/routes/channels';
+import {
+ stop as stopBroadcastRoute,
+ store as storeBroadcastRoute,
+} from '@/routes/creator/broadcasts';
+import {
+ store as storeChannelRoute,
+ update as updateChannelRoute,
+} from '@/routes/creator/channel';
+import { rotate as rotateStreamKeyRoute } from '@/routes/creator/stream-key';
import type { BroadcastSummary, Category } from '@/types';
type CreatorChannel = {
@@ -46,6 +57,7 @@ export default function Dashboard({
recentBroadcasts,
}: Props) {
const [, copy] = useClipboard();
+ const liveBroadcast = channel?.live_broadcast ?? null;
const createForm = useForm({
display_name: '',
slug: '',
@@ -65,17 +77,17 @@ export default function Dashboard({
function createChannel(event: FormEvent) {
event.preventDefault();
- createForm.post('/creator/channel');
+ createForm.submit(storeChannelRoute());
}
function updateChannel(event: FormEvent) {
event.preventDefault();
- channelForm.patch('/creator/channel');
+ channelForm.submit(updateChannelRoute());
}
function createBroadcast(event: FormEvent) {
event.preventDefault();
- broadcastForm.post('/creator/broadcasts', {
+ broadcastForm.submit(storeBroadcastRoute(), {
onSuccess: () => broadcastForm.reset('title', 'recording_enabled'),
});
}
@@ -96,10 +108,10 @@ export default function Dashboard({
{channel && (
)}
@@ -353,7 +365,9 @@ export default function Dashboard({
size="sm"
onClick={() =>
router.post(
- `/creator/broadcasts/${broadcast.id}/stop`,
+ stopBroadcastRoute(
+ broadcast.id,
+ ),
)
}
>
@@ -404,9 +418,7 @@ export default function Dashboard({