package com.shahul3d.indiasatelliteweather.utils;

import android.content.Context;
import android.os.Environment;
import android.support.v4.content.ContextCompat;

import com.shahul3d.indiasatelliteweather.controllers.WeatherApplication;

import java.io.File;

public class StorageUtils {
    public static File getAppSpecificFolder() {
        Context context = WeatherApplication.getContext();
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            // External directory
            File[] files = ContextCompat.getExternalFilesDirs(context, null);

            for (File file : files) {
                if (file != null && file.exists() && file.canRead() && file.canWrite()) {
                    return file;
                }
            }
            return context.getFilesDir();
        } else {
            // Internal directory
            return context.getFilesDir();
        }
    }

    public static File getAppSpecificCacheFolder() {
        Context context = WeatherApplication.getContext();
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            // External cache directory
            File[] files = ContextCompat.getExternalCacheDirs(context);
            for (File file : files) {
                if (file != null && file.exists() && file.canRead() && file.canWrite()) {
                    return file;
                }
            }
            return context.getCacheDir();
        } else {
            // Internal cache directory
            return context.getCacheDir();
        }
    }

    public static void createNoMediaFile() {
        final String NOMEDIA = " .nomedia";
        try {
            File storageLocation = getAppSpecificFolder();
//            if (storageLocation.mkdir()) {
            if (storageLocation.exists()) {
                File nomediaFile = new File(getAppSpecificFolder() + File.separator + NOMEDIA);
                if (!nomediaFile.exists()) {
                    nomediaFile.createNewFile();
                }
            }
//            }
        } catch (Exception e) {
            CrashUtils.trackException("Error while creating noMedia file", e);
        }

    }

    public static boolean fileExists(String filename) {
        File file = new File(filename);
        if (file == null || !file.exists()) {
            return false;
        }
        return true;
    }
}