package com.github.nullptroma.wallenc.app.navigation

import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.core.net.toUri
import com.github.nullptroma.wallenc.app.MainActivity
import com.github.nullptroma.wallenc.ui.navigation.WallencDeepLinks

/**
 * Запуск [MainActivity] и взаимодействие с foreground-сервисом из **вне** Compose: [android.app.PendingIntent],
 * стабильные action, id канала/нотификации.
 *
 * URI см. [WallencDeepLinks] в `:ui` — тот же контракт, что у [androidx.navigation.navDeepLink] и манифеста.
 */
object WallencExternalLaunch {

    /** Коды [android.app.PendingIntent]: у каждого сценария свой requestCode. */
    object PendingIntentRequestCodes {
        const val NOTIFICATION_TASK_PIPELINE_CANCEL_SERVICE = 0
        const val NOTIFICATION_TASK_PIPELINE_OPEN_TASKS = 2
    }

    /**
     * [Intent.getAction] для [com.github.nullptroma.wallenc.app.tasks.TaskPipelineForegroundService]
     * из кнопки уведомления ([PendingIntent.getService]).
     */
    const val FOREGROUND_SERVICE_ACTION_CANCEL_ALL_TASKS =
        "com.github.nullptroma.wallenc.action.CANCEL_ALL_TASKS"

    object ForegroundTaskPipelineNotification {
        const val CHANNEL_ID = "wallenc_task_pipeline"
        const val NOTIFICATION_ID = 1001
    }

    fun mainActivityViewIntent(context: Context, uri: Uri): Intent =
        Intent(Intent.ACTION_VIEW, uri).apply {
            setClass(context, MainActivity::class.java)
            flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP
        }

    fun mainActivityViewIntentForTasks(context: Context): Intent =
        mainActivityViewIntent(context, WallencDeepLinks.TASKS_URI_PATTERN.toUri())
}
