package com.lemenzo.gallery.manage;

import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;

/** Reads existing shared-media destinations through MediaStore only. No broad filesystem access. */
public final class FolderDestinationRepository {
    private FolderDestinationRepository() {}

    public static List<String> list(Context context, int limit) {
        LinkedHashSet<String> paths = new LinkedHashSet<>();
        String[] projection = { MediaStore.MediaColumns.RELATIVE_PATH };
        String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + " IN (?,?)";
        String[] args = {
                String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE),
                String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO)
        };
        try (Cursor c = context.getContentResolver().query(
                MediaStore.Files.getContentUri("external"), projection, selection, args,
                MediaStore.MediaColumns.RELATIVE_PATH + " COLLATE NOCASE ASC")) {
            if (c != null) {
                while (c.moveToNext() && paths.size() < Math.max(1, limit)) {
                    String normalized = MediaFileManager.normalizeRelativePath(c.getString(0));
                    if (!normalized.isEmpty()) paths.add(normalized);
                }
            }
        } catch (RuntimeException ignored) { }
        ArrayList<String> out = new ArrayList<>(paths);
        Collections.sort(out, String.CASE_INSENSITIVE_ORDER);
        return out;
    }
}
