veza/apps/web/src/services/searchService.ts
senke 0faa20d644 fix: resolve ts-ignore directives and unsafe type casts
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 22:21:55 +01:00

92 lines
2.5 KiB
TypeScript

import { Track, User, Course } from '../types';
export const searchService = {
global: async (query: string, _type?: string, _page = 1) => {
await new Promise((resolve) => setTimeout(resolve, 600)); // Simulate latency
// Mock Results -- partial mock data cast to full types for dev/preview
const tracks: Track[] = [
{
id: 't1',
title: 'Neon Nights',
artist: 'Cyber_Producer',
album: 'Night City',
duration: '3:45',
durationSec: 225,
plays: 15200,
likes: 450,
coverUrl: 'https://picsum.photos/id/10/300/300',
genre: 'Synthwave',
status: 'ready',
},
{
id: 't2',
title: 'Digital Rain',
artist: 'Glitch_Mob',
album: 'System',
duration: '4:10',
durationSec: 250,
plays: 8900,
likes: 210,
coverUrl: 'https://picsum.photos/id/20/300/300',
genre: 'Glitch',
status: 'ready',
},
].filter((t) =>
t.title.toLowerCase().includes(query.toLowerCase()),
) as Partial<Track>[] as Track[];
const users: User[] = [
{
id: 'u1',
username: 'Cyber_Producer',
fullName: 'Alex Mercer',
avatar: 'https://picsum.photos/id/237/200/200',
roles: ['PRODUCER'],
status: 'online' as const,
email: '',
joinDate: '',
tier: 'Pro' as const,
bio: '',
stats: { followers: 1200, following: 20, tracks: 10, plays: 5000 },
},
{
id: 'u2',
username: 'SynthLord',
fullName: 'Sarah C',
avatar: 'https://picsum.photos/id/64/200/200',
roles: ['ARTIST'],
status: 'offline' as const,
email: '',
joinDate: '',
tier: 'Free' as const,
bio: '',
stats: { followers: 500, following: 10, tracks: 5, plays: 200 },
},
].filter((u) =>
u.username.toLowerCase().includes(query.toLowerCase()),
) as Partial<User>[] as User[];
const courses: Course[] = [
{
id: 'c1',
title: 'Synthwave Masterclass',
instructor: 'Neon Pulse',
level: 'Advanced' as const,
duration: '4h',
thumbnailUrl: 'https://picsum.photos/id/100/400/250',
progress: 0,
studentCount: 120,
rating: 4.8,
},
].filter((c) => c.title.toLowerCase().includes(query.toLowerCase()));
return {
tracks,
users,
courses,
playlists: [],
total: tracks.length + users.length + courses.length,
};
},
};