package cottonwoodic.proprietoric.gutic

import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.drawable.Icon
import android.os.Build
import android.widget.RemoteViews
import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat
import com.easy.clean.R
import tooic.fatalityic.corroborateic.Protegeic.Companion.BATTERY_INFO
import tooic.fatalityic.corroborateic.Protegeic.Companion.JUNK_CLEAN
import tooic.fatalityic.corroborateic.Protegeic.Companion.LARGE_FILE_CLEAN
import tooic.fatalityic.corroborateic.Protegeic.Companion.SCREENSHOT_CLEAN
import waific.Teflonic.therapistic.Hauntingic
import astonishic.chandelieric.Jostleic
import kotlin.random.Random

object Repairic {


    private fun customRemoteViews(
        context: Context,
        contentView: RemoteViews,
        expendView: RemoteViews,
    ) {

        arrayOf(R.id.overshotic, R.id.ravageic, R.id.pulleyic, R.id.clotheslineic).forEach {
            val requestCode = Random.nextInt(1800)
            val intent = Intent(context, Jostleic::class.java).apply {
                if (it == R.id.overshotic) {
                    putExtra("actionId", JUNK_CLEAN)
                }
                if (it == R.id.ravageic) {
                    putExtra("actionId", BATTERY_INFO)
                }
                if (it == R.id.pulleyic) {
                    putExtra("actionId", LARGE_FILE_CLEAN)
                }
                if (it == R.id.clotheslineic) {
                    putExtra("actionId", SCREENSHOT_CLEAN)
                }
            }
            val pendingIntent =
                PendingIntent.getActivity(
                    context,
                    requestCode,
                    intent,
                    PendingIntent.FLAG_IMMUTABLE
                )
            contentView.setOnClickPendingIntent(it, pendingIntent)
            expendView.setOnClickPendingIntent(it, pendingIntent)
        }
    }


    fun createPermanentNotification(context: Context): Notification {

        val channelName = "Permanent Foreground Service Channel"
        val channelId = "permanent_channel"
        val contentView = RemoteViews(context.packageName, R.layout.scrapbookic)
        val expendView = RemoteViews(context.packageName, R.layout.idiomic)

        customRemoteViews(context, contentView, expendView)

        val builder = NotificationCompat.Builder(context, channelId)
        val smallIcon = IconCompat.createFromIcon(
            context, Icon.createWithResource(
                context, R.mipmap.meccaic
            )
        )

        smallIcon?.let {
            builder.setSmallIcon(smallIcon) //设置状态栏内的小图标
        }

        val nfIntent = Intent(context, Hauntingic::class.java)
        val pendingIntent =
            PendingIntent.getActivity(context, 0, nfIntent, PendingIntent.FLAG_IMMUTABLE)

        builder.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.meccaic))
        builder.setContentTitle(context.resources.getString(R.string.overrodeic))
        builder.setContentIntent(pendingIntent) //设置PendingIntent
        builder.setVisibility(NotificationCompat.VISIBILITY_PRIVATE) //设置通知公开可见
        builder.setAutoCancel(false)
        builder.setOngoing(true)
        builder.setPriority(NotificationCompat.PRIORITY_MAX) //优先级为：重要通知
        builder.setWhen(System.currentTimeMillis())
        builder.setCustomContentView(contentView)
        builder.setCustomBigContentView(expendView)
        builder.setCustomHeadsUpContentView(expendView)
        builder.setNumber(0)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val channel =
                NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_LOW)
            channel.lockscreenVisibility = 1
            channel.setShowBadge(false)
            val notificationManager =
                context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            notificationManager.createNotificationChannel(channel)
            builder.setChannelId(channelId)
        }
        return builder.build()
    }


}