import { Server, DirectMessage, ChatMessage } from '../types';

const MOCK_SERVERS: any[] = [
  {
    id: 's1',
    name: 'Veza Official',
    icon: 'https://picsum.photos/id/50/200/200',
    categories: [
      {
        id: 'cat1',
        name: 'Information',
        channels: [
          {
            id: 'c1',
            name: 'announcements',
            type: 'text',
            unread: 2,
            isLocked: true,
          },
          { id: 'c2', name: 'rules', type: 'text', isLocked: true },
        ],
      },
      {
        id: 'cat2',
        name: 'Community',
        channels: [
          {
            id: 'c3',
            name: 'general',
            type: 'text',
            topic: 'Main lobby for producers',
          },
          {
            id: 'c4',
            name: 'showcase',
            type: 'text',
            topic: 'Post your tracks here',
          },
          {
            id: 'c5',
            name: 'Lounge',
            type: 'voice',
            activeParticipants: [
              {
                id: 'u1',
                name: 'Skrillex',
                avatar: 'https://picsum.photos/id/101/50/50',
                isMuted: false,
                isSpeaking: true,
                isScreenSharing: false,
                roleColor: 'text-kodo-gold',
              },
            ],
          },
        ],
      },
    ],
  },
  {
    id: 's2',
    name: 'Dubstep Producers',
    icon: 'https://picsum.photos/id/60/200/200',
    categories: [
      {
        id: 'cat3',
        name: 'Production',
        channels: [
          { id: 'c6', name: 'serum-presets', type: 'text' },
          { id: 'c7', name: 'Collab Room', type: 'voice' },
        ],
      },
    ],
  },
];

const MOCK_DMS: any[] = [
  {
    id: 'dm1',
    user: {
      name: 'Deadmau5',
      avatar: 'https://picsum.photos/id/77/50/50',
      status: 'online',
    },
    lastMessage: 'Sent you the stems.',
    unread: 1,
    timestamp: '2m',
  },
  {
    id: 'dm2',
    user: {
      name: 'Grimes',
      avatar: 'https://picsum.photos/id/88/50/50',
      status: 'idle',
    },
    lastMessage: 'That AI vocal is crazy!',
    unread: 0,
    timestamp: '1h',
  },
  {
    id: 'dm3',
    user: {
      name: 'Support',
      avatar: 'https://picsum.photos/id/99/50/50',
      status: 'offline',
    },
    lastMessage: 'Ticket #492 resolved.',
    unread: 0,
    timestamp: '1d',
  },
];

const INITIAL_MESSAGES: any[] = [
  {
    id: '1',
    sender: 'Neon_Dev',
    senderRole: 'Admin',
    roleColor: 'text-kodo-magenta',
    avatar: 'https://picsum.photos/id/10/50/50',
    content: 'Welcome to the new server architecture! 🚀',
    timestamp: '10:42 AM',
    isMe: false,
    type: 'text',
    reactions: [{ emoji: '🔥', count: 12, active: true }],
  },
  {
    id: '2',
    sender: 'BassHead',
    senderRole: 'Producer',
    roleColor: 'text-kodo-gold',
    avatar: 'https://picsum.photos/id/30/50/50',
    content: 'The new audio engine in Veza is insane. Zero latency.',
    timestamp: '10:45 AM',
    isMe: false,
    type: 'text',
  },
  {
    id: '3',
    sender: 'You',
    senderRole: 'Artist',
    roleColor: 'text-kodo-cyan',
    avatar: 'https://picsum.photos/id/20/50/50',
    content: 'Yeah, I just tested the collaborative mixer. Works flawlessly.',
    timestamp: '10:46 AM',
    isMe: true,
    type: 'text',
  },
];

export const chatService = {
  getServers: async () => {
    await new Promise((resolve) => setTimeout(resolve, 500));
    return MOCK_SERVERS as Server[];
  },

  getDMs: async () => {
    await new Promise((resolve) => setTimeout(resolve, 400));
    return MOCK_DMS as DirectMessage[];
  },

  getMessages: async (_channelId: string) => {
    await new Promise((resolve) => setTimeout(resolve, 300));
    return INITIAL_MESSAGES as ChatMessage[];
  },

  sendMessage: async (
    _channelId: string,
    content: { text?: string; type?: string; attachment?: string },
  ) => {
    await new Promise((resolve) => setTimeout(resolve, 200));
    return {
      id: Date.now().toString(),
      conversation_id: _channelId,
      sender_id: 'current_user',
      sender: 'You',
      senderRole: 'Artist',
      roleColor: 'text-kodo-cyan',
      avatar: 'https://picsum.photos/id/20/50/50',
      content: content.text || '',
      created_at: new Date().toISOString(),
      timestamp: new Date().toLocaleTimeString([], {
        hour: '2-digit',
        minute: '2-digit',
      }),
      isMe: true,
      type: content.type || 'text',
      attachmentUrl: content.attachment,
      updated_at: new Date().toISOString(),
    } as unknown as ChatMessage;
  },
};
