package com.remax.visualnovel.ui.chat.message.call.manager

import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch


/**
 * 防抖函数，在指定时间内只执行最后一次调用
 * @param delayMs 防抖时间（毫秒）
 * @param scope 协程作用域
 * @param action 要执行的操作
 */
fun <T1, T2> debounce(
    delayMs: Long = 0L,
    scope: CoroutineScope,
    action: (T1, T2?) -> Unit
): (T1, T2?) -> Unit {
    var debounceJob: Job? = null

    return { p1, p2 ->
        // 取消之前的任务
        debounceJob?.cancel()
        // 创建新的协程任务
        debounceJob = scope.launch {
            delay(delayMs)
            action(p1, p2)
        }
    }
}