package kr.co.tadadang.user.sms

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.google.android.gms.auth.api.phone.SmsRetriever
import com.google.android.gms.common.api.CommonStatusCodes
import com.google.android.gms.common.api.Status

class SmsRetrieverReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        if (SmsRetriever.SMS_RETRIEVED_ACTION == intent?.action) {
            val extras = intent.extras
            val status = extras?.get(SmsRetriever.EXTRA_STATUS) as Status

            when (status.statusCode) {
                CommonStatusCodes.SUCCESS -> {
                    val message = extras.get(SmsRetriever.EXTRA_SMS_MESSAGE) as String
                    val smsCode = parseSmsCode(message)
                    val localIntent = Intent("SMS_CODE_RECEIVED")
                    localIntent.putExtra("smsCode", smsCode)
                    LocalBroadcastManager.getInstance(context!!).sendBroadcast(localIntent)
                }

                CommonStatusCodes.TIMEOUT -> {
                    Log.d("song", "CommonStatusCodes TIMEOUT")
                }
            }
        }
    }

    private fun parseSmsCode(message: String): String {
        val pattern = "\\d{4}".toRegex()
        val matchResult = pattern.find(message)
        return matchResult?.value ?: ""
    }
}