package com.github.nullptroma.wallenc.ui.navigation

import android.content.Intent

/**
 * URI для входа извне приложения (уведомления, виджеты, шорткаты, другие Activity).
 *
 * Должны совпадать с `<intent-filter><data android:scheme=… android:host=…/></intent-filter>` в манифесте
 * и с [androidx.navigation.navDeepLink] на соответствующих `composable` в [androidx.navigation.compose.NavHost].
 *
 * Для публичных HTTPS-ссылок позже добавляют отдельные хосты и `android:autoVerify`.
 */
object WallencDeepLinks {
    const val SCHEME = "wallenc"

    object Host {
        const val MAIN = "main"
        const val TASKS = "tasks"
        const val SYNC = "sync"
        const val SETTINGS = "settings"
    }

    const val MAIN_URI_PATTERN = "$SCHEME://${Host.MAIN}"
    const val TASKS_URI_PATTERN = "$SCHEME://${Host.TASKS}"
    const val SYNC_URI_PATTERN = "$SCHEME://${Host.SYNC}"
    const val SETTINGS_URI_PATTERN = "$SCHEME://${Host.SETTINGS}"
}

/** `ACTION_VIEW` с URI нашей схемы — обрабатывается [androidx.navigation.NavController.handleDeepLink]. */
fun Intent.matchesWallencDeepLink(): Boolean =
    action == Intent.ACTION_VIEW && data?.scheme == WallencDeepLinks.SCHEME
