package com.lemenzo.messenger.sms;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.lemenzo.messenger.data.DeliveryReportStore;
import com.lemenzo.messenger.util.ReceiverAsync;

public final class SendStatusReceiver extends BroadcastReceiver {
    public static final String ACTION_SENT = "com.lemenzo.messenger.SMS_SENT";
    public static final String ACTION_DELIVERED = "com.lemenzo.messenger.SMS_DELIVERED";

    @Override
    public void onReceive(Context context, Intent intent) {
        final String token = intent.getStringExtra("token");
        if (token == null) return;
        final String action = intent.getAction();
        final int resultCode = getResultCode();
        final int part = intent.getIntExtra("part", -1);
        final Context appContext = context.getApplicationContext();

        if (ACTION_SENT.equals(action)) {
            ReceiverAsync.run(this, () -> MultipartSendTracker.recordSentPart(
                    appContext,
                    token,
                    resultCode == Activity.RESULT_OK));
            return;
        }

        if (ACTION_DELIVERED.equals(action) && part >= 0 && resultCode == Activity.RESULT_OK) {
            ReceiverAsync.run(this, () ->
                    new DeliveryReportStore(appContext).markDelivered(token, part));
        }
    }
}
