package com.contactship.plugin;

import android.Manifest;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;

import com.getcapacitor.JSObject;
import com.getcapacitor.NativePlugin;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;

import java.util.ArrayList;
import java.util.List;


@NativePlugin(
        permissions = {
                Manifest.permission.READ_SMS
        }
)
public class SmsaccessPlugin extends Plugin {

    private static final String TAG = "SmsAccessPlugin";

    @PluginMethod()
    public void getAllSms(PluginCall call) {
        Log.e(TAG, "[SMS Plugin Native Android]: sendSMS called.");
        String folderName = call.getString("value");
        Log.i(TAG, "Input got as: " + folderName);
        if (hasRequiredPermissions()) {
            List<String> result = getAllSms(folderName);
            JSObject ret = new JSObject();
            ret.put("value", result);
            call.success(ret);
        } else {
            pluginRequestAllPermissions();
            Log.e(TAG, "Permission accepted");
        }
    }

    public List<String> getAllSms(String folderName) {
        List<String> sms = new ArrayList<String>();
        Uri uriSMSURI = Uri.parse("content://sms/" + folderName);
        Cursor cur = getContext().getContentResolver().query(uriSMSURI, null, null, null, null);
        while (cur != null && cur.moveToNext()) {
            String address = cur.getString(cur.getColumnIndex("address"));
            String body = cur.getString(cur.getColumnIndexOrThrow("body"));
            sms.add("Number: " + address + " .Message: " + body);
        }

        if (cur != null) {
            cur.close();
        }
        return sms;
    }


}
