package com.gh.gamecenter.core.provider

import android.app.Activity
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView

import io.reactivex.disposables.Disposable

interface IFloatingWindowProvider {

    fun getAndShowFloatingWindow(
        gameId: String,
        gameName: String,
        location: String,
        fragment: Fragment,
        recyclerView: RecyclerView,
        welcomeDialogCallback: ((entity: Any) -> Unit)? = null
    ): Disposable

    fun getFloatingWindowOnly(callback: (ArrayList<*>?, Throwable?) -> Unit): Disposable

    fun showFloatingWindowOnly(
        fragment: Fragment,
        recyclerView: RecyclerView,
        windowEntityList: java.util.ArrayList<*>,
        welcomeDialogCallback: ((entity: Any) -> Unit)? = null
    )

    fun showHiddenWindow(activity: Activity)

    fun logWindowClicked(
        action: String,
        windowId: String,
        source: String,
        gameId: String,
        gameName: String,
        linkId: String,
        linkType: String,
        linkText: String,
    )

    fun hideWindow(activity: Activity)

}