import { Notification, toast } from '@/components/ui'
import { generateBackgroundWorkers } from '@/services/background-worker.service'
import { getLocalization } from '@/services/localization.service'
import { store } from '@/store'

export abstract class UiEvalService {
  static Init = () => {
    //console.log('init')
  }

  static ApiGenerateBackgroundWorkers = () => {
    // Get store state directly instead of using hook
    const state = store.getState()
    const { texts, config } = state.abpConfig

    // Create translate function similar to useLocalization hook
    const translate = (localizationKey: string, params?: Record<string, string | number>, defaultResourceName?: string): string => {
      if (!texts) {
        return localizationKey
      }
      return getLocalization(
        texts,
        defaultResourceName ?? config?.localization?.defaultResourceName,
        localizationKey,
        params
      )
    }

    const asyncCall = async () => {
      await generateBackgroundWorkers()
    }

    asyncCall()

    toast.push(
      <Notification type="success" duration={2000}>
        {translate('::App.BackgroundWorkers.Message')}
      </Notification>,
      {
        placement: 'top-center',
      },
    )
  }
}

const _global = (window || global) as any
_global.UiEvalService = UiEvalService
