322 lines
10 KiB
TypeScript
322 lines
10 KiB
TypeScript
import type { ModelVideo } from "@/api/client";
|
|
|
|
export const mockVideos: ModelVideo[] = [
|
|
{
|
|
id: '1',
|
|
title: 'Getting Started with Stream UI',
|
|
description: 'A comprehensive guide to using the new Stream UI platform for your daily tasks.',
|
|
thumbnail: 'https://picsum.photos/seed/video1/640/360',
|
|
duration: 345, // 5m 45s
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 45, // 45MB
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 24 * 2).toISOString(), // 2 days ago
|
|
views: 12500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '2',
|
|
title: 'Advanced Editing Techniques',
|
|
description: 'Learn how to edit your videos like a pro using our built-in tools.',
|
|
thumbnail: 'https://picsum.photos/seed/video2/640/360',
|
|
duration: 890, // 14m 50s
|
|
status: 'processing',
|
|
processing_status: '75%',
|
|
size: 1024 * 1024 * 128, // 128MB
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 5).toISOString(), // 5 hours ago
|
|
views: 0,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '3',
|
|
title: 'Project Alpha Demo',
|
|
description: 'Internal demonstration of the upcoming Project Alpha features.',
|
|
thumbnail: 'https://picsum.photos/seed/video3/640/360',
|
|
duration: 120, // 2m 00s
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 25, // 25MB
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 24 * 7).toISOString(), // 1 week ago
|
|
views: 340,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '4',
|
|
title: 'Weekly Team Standup',
|
|
description: 'Recording of the weekly engineering team standup meeting.',
|
|
thumbnail: 'https://picsum.photos/seed/video4/640/360',
|
|
duration: 1800, // 30m 00s
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 350, // 350MB
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 24 * 14).toISOString(), // 2 weeks ago
|
|
views: 12,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '5',
|
|
title: 'Funny Cat Compilation',
|
|
description: 'A collection of the funniest cat videos found on the internet.',
|
|
thumbnail: 'https://picsum.photos/seed/video5/640/360',
|
|
duration: 600, // 10m 00s
|
|
status: 'failed',
|
|
size: 1024 * 1024 * 80, // 80MB
|
|
created_at: new Date(Date.now() - 1000 * 60 * 30).toISOString(), // 30 mins ago
|
|
views: 0,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '6',
|
|
title: 'Product Launch Event 2024',
|
|
description: 'Full coverage of our annual product launch event in San Francisco.',
|
|
thumbnail: 'https://picsum.photos/seed/video6/640/360',
|
|
duration: 5400, // 1h 30m
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 1024 * 2.5, // 2.5GB
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 24 * 30).toISOString(), // 1 month ago
|
|
views: 45000,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '7',
|
|
title: 'Tutorial: React vs Vue',
|
|
description: 'Comparing the two most popular frontend frameworks.',
|
|
thumbnail: 'https://picsum.photos/seed/video7/640/360',
|
|
duration: 1540,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 200,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 24 * 3).toISOString(),
|
|
views: 8900,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '8',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '9',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '10',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '11',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '12',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '13',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '14',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '15',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '16',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '17',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '18',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '19',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '20',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '21',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '22',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
{
|
|
id: '23',
|
|
title: 'Nature Documentary - 4K',
|
|
description: 'Breathtaking views of mountains and rivers.',
|
|
thumbnail: 'https://picsum.photos/seed/video8/640/360',
|
|
duration: 3200,
|
|
status: 'ready',
|
|
size: 1024 * 1024 * 800,
|
|
created_at: new Date(Date.now() - 1000 * 60 * 60 * 48).toISOString(),
|
|
views: 1500,
|
|
url: '#'
|
|
},
|
|
]
|
|
|
|
interface FetchVideosParams {
|
|
page: number;
|
|
limit: number;
|
|
searchQuery?: string;
|
|
status?: string;
|
|
}
|
|
|
|
export const fetchMockVideos = async ({ page, limit, searchQuery, status }: FetchVideosParams) => {
|
|
// Simulate API delay
|
|
await new Promise(resolve => setTimeout(resolve, 800));
|
|
|
|
let filtered = [...mockVideos];
|
|
|
|
// Filter by search query
|
|
if (searchQuery) {
|
|
const query = searchQuery.toLowerCase();
|
|
filtered = filtered.filter(v =>
|
|
v.title?.toLowerCase().includes(query) ||
|
|
v.description?.toLowerCase().includes(query)
|
|
);
|
|
}
|
|
|
|
// Filter by status
|
|
if (status && status !== 'all') {
|
|
filtered = filtered.filter(v => v.status?.toLowerCase() === status.toLowerCase());
|
|
}
|
|
|
|
const total = filtered.length;
|
|
|
|
// Pagination
|
|
const start = (page - 1) * limit;
|
|
const end = start + limit;
|
|
const data = filtered.slice(start, end);
|
|
|
|
return {
|
|
data,
|
|
total
|
|
};
|
|
};
|