package com.lemenzo.messenger.mms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SubscriptionManager;
import android.util.Log;
import com.lemenzo.messenger.util.ReceiverAsync;

public final class MmsWapPushDeliverReceiver extends BroadcastReceiver {
    private static final String TAG = "LemenzoMessengerMms";
    private static final String EXTRA_SUBSCRIPTION_INDEX =
            "android.telephony.extra.SUBSCRIPTION_INDEX";

    @Override
    public void onReceive(Context context, Intent intent) {
        final byte[] sourcePdu = intent.getByteArrayExtra("data");
        final int subscriptionId = intent.getIntExtra(
                EXTRA_SUBSCRIPTION_INDEX,
                SubscriptionManager.INVALID_SUBSCRIPTION_ID);

        if (sourcePdu == null || sourcePdu.length == 0) {
            Log.w(TAG, "WAP_PUSH_DELIVER contained no MMS PDU data");
            return;
        }

        // Own a private copy before leaving onReceive; the durable per-SIM MMS pipeline
        // performs PDU parsing and provider/file work away from the receiver main thread.
        final byte[] pdu = sourcePdu.clone();
        final Context appContext = context.getApplicationContext();
        ReceiverAsync.run(this, () ->
                MmsPduBridge.onIncomingNotification(appContext, subscriptionId, pdu));
    }
}
