// stores/content.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { wordpressService, type WpPost } from '@/services/wordpress'
import { apiClient } from '@/services/api-client'

// Расширяем тип WpPost, если нужно добавить поля
interface ExtendedWpPost extends WpPost {
  _embedded?: {
    'wp:featuredmedia'?: Array<{
      source_url: string
    }>
  }
}

// Локальные данные для примера
const localTrainings = [
  { id: 1, title: 'Тренировка 1', slug: 'training-1', content: 'Описание тренировки 1' },
  { id: 2, title: 'Тренировка 2', slug: 'training-2', content: 'Описание тренировки 2' },
]

export const useContentStore = defineStore('content', () => {
  const trainings = ref<any[]>([])
  const anatomy = ref<any[]>([])
  const loading = ref(false)

  // Загрузка локальных данных с имитацией задержки
  async function loadLocalData() {
    loading.value = true
    try {
      // Имитируем загрузку данных с сервера
      trainings.value = await apiClient.simulateLoading(localTrainings, 800)
    } finally {
      loading.value = false
    }
  }

  // Загрузка данных из WordPress
  async function loadWordPressPosts() {
    loading.value = true
    try {
      const posts = await wordpressService.getPosts({
        categories: 'training', // предполагаемая категория
        per_page: '10'
      }) as ExtendedWpPost[]

      // Преобразуем WordPress посты в нужный формат
      trainings.value = posts.map(post => ({
        id: post.id,
        title: post.title?.rendered || '',
        slug: post.slug || '', // Убедимся, что slug существует
        content: post.content?.rendered || '',
        excerpt: post.excerpt?.rendered || '',
        image: post._embedded?.['wp:featuredmedia']?.[0]?.source_url
      }))
    } catch (error) {
      console.error('Error loading WordPress posts:', error)
    } finally {
      loading.value = false
    }
  }

  return {
    trainings,
    anatomy,
    loading,
    loadLocalData,
    loadWordPressPosts
  }
})
