package com.lemenzo.gallery.data;

import android.database.ContentObserver;
import android.os.Handler;

/** Coalesces MediaStore bursts so rapid camera/import operations do not repeatedly rebuild the UI. */
public final class MediaObserver extends ContentObserver {
    private static final long DEBOUNCE_MS = 320L;
    private final Handler handler;
    private final Runnable callback;
    private final Runnable dispatch;

    public MediaObserver(Handler handler, Runnable callback) {
        super(handler);
        this.handler = handler;
        this.callback = callback;
        this.dispatch = () -> this.callback.run();
    }

    @Override
    public void onChange(boolean selfChange) {
        handler.removeCallbacks(dispatch);
        handler.postDelayed(dispatch, DEBOUNCE_MS);
    }

    public void close() {
        handler.removeCallbacks(dispatch);
    }
}
