package com.radiola.deeplink

import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.widget.Toast
import com.radiola.domain.model.DeeplinkService
import com.radiola.domain.model.Track

object DeeplinkNavigator {

    fun openSearch(context: Context, track: Track, service: DeeplinkService) {
        Log.d("DeeplinkNavigator", "openSearch: artist=${track.artist}, song=${track.song}, service=${service.displayName}")
        val url = service.buildSearchUrl(track.artist, track.song)
        Log.d("DeeplinkNavigator", "url=$url")
        val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))

        val pkg = service.packageName
        if (pkg != null) {
            // Сторонний клиент: открыть напрямую в его пакете, если установлен.
            val installed = try {
                context.packageManager.getPackageInfo(pkg, 0)
                true
            } catch (e: Exception) {
                false
            }
            if (installed) {
                intent.setPackage(pkg)
                try {
                    context.startActivity(intent)
                    return
                } catch (e: Exception) {
                    Log.e("DeeplinkNavigator", "Не удалось открыть в $pkg", e)
                    // упадём в общий путь ниже (системный выбор / браузер)
                }
            } else {
                Toast.makeText(context, "${service.displayName} не установлено", Toast.LENGTH_SHORT).show()
                return
            }
        }

        // Обычные сервисы (или фолбэк) — системный выбор приложения.
        try {
            context.startActivity(Intent.createChooser(intent, "Открыть в..."))
        } catch (e: Exception) {
            Log.e("DeeplinkNavigator", "Failed to open deeplink", e)
            Toast.makeText(context, "Не удалось открыть ссылку", Toast.LENGTH_SHORT).show()
        }
    }
}
