// Path: PhotoPaper/src/main/java/com/lukekorth/photo_paper/helpers/Settings.java
// public class Settings {
// 
//     private static SharedPreferences getPrefs(Context context) {
//         return PreferenceManager.getDefaultSharedPreferences(context);
//     }
// 
//     public static String getFavoriteGallery(Context context) {
//         return getPrefs(context).getString("favorite_gallery", null);
//     }
// 
//     public static String getFavoriteGalleryId(Context context) {
//         return getPrefs(context).getString("favorite_gallery_id", null);
//     }
// 
//     public static void setFavoriteGallery(Context context, String gallery) {
//         getPrefs(context).edit().putString("favorite_gallery", gallery).apply();
//     }
// 
//     public static void setFavoriteGalleryId(Context context, String id) {
//         getPrefs(context).edit().putString("favorite_gallery_id", id).apply();
//     }
// 
//     public static String getFeature(Context context) {
//         return getPrefs(context).getString("feature", "popular");
//     }
// 
//     public static void setFeature(Context context, String feature) {
//         getPrefs(context).edit().putString("feature", feature).apply();
//     }
// 
//     public static String getSearchQuery(Context context) {
//         return getPrefs(context).getString("search_query", "");
//     }
// 
//     public static void setSearchQuery(Context context, String query) {
//         getPrefs(context).edit().putString("search_query", query).apply();
//     }
// 
//     public static int[] getCategories(Context context) {
//         Set<String> defaultCategory = new HashSet<String>();
//         defaultCategory.add("8");
//         Set<String> prefCategories = getPrefs(context).getStringSet("categories", defaultCategory);
// 
//         int[] categories = new int[prefCategories.size()];
//         int i = 0;
//         for (String category : prefCategories) {
//             categories[i] = Integer.parseInt(category);
//             i++;
//         }
// 
//         return categories;
//     }
// 
//     public static void setCategories(Context context, Set<String> categories) {
//         getPrefs(context).edit().putStringSet("categories", categories).apply();
//     }
// 
//     public static boolean isEnabled(Context context) {
//         return getPrefs(context).getBoolean("enable", false);
//     }
// 
//     public static int getUpdateInterval(Context context) {
//         return Integer.parseInt(getPrefs(context).getString("update_interval", "3600"));
//     }
// 
//     public static void setUpdateInterval(Context context, String interval) {
//         getPrefs(context).edit().putString("update_interval", interval).apply();
//     }
// 
//     public static boolean useParallax(Context context) {
//         return getPrefs(context).getBoolean("use_parallax", false);
//     }
// 
//     public static boolean useOnlyWifi(Context context) {
//         return getPrefs(context).getBoolean("use_only_wifi", true);
//     }
// 
//     public static long getLastUpdated(Context context) {
//         return getPrefs(context).getLong("last_updated", 0);
//     }
// 
//     public static void setUpdated(Context context) {
//         getPrefs(context).edit().putLong("last_updated", System.currentTimeMillis()).apply();
//     }
// 
//     public static void clearUpdated(Context context) {
//         getPrefs(context).edit().putLong("last_updated", 0).apply();
//     }
// }


import android.content.Context;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.lukekorth.photo_paper.helpers.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.RealmResults;
import io.realm.Sort;
import io.realm.annotations.Required;
        } else {
            return photos.first();
        }
    }

    public static Photos getCurrentPhoto(Realm realm) {
        RealmResults<Photos> photos = getRecentlySeenPhotos(realm);
        if (photos.isEmpty()) {
            return null;
        } else {
            return photos.first();
        }
    }

    public static RealmResults<Photos> getRecentlySeenPhotos(Realm realm) {
        return realm.where(Photos.class)
                .equalTo("seen", true)
                .greaterThan("seenAt", System.currentTimeMillis() - TimeUnit.DAYS.toMillis(7))
                .findAllSorted("seenAt", Sort.DESCENDING);
    }

    public static List<Photos> getUnseenPhotos(Context context, Realm realm) {
        return getQuery(context, realm);
    }

    public static int unseenPhotoCount(Context context, Realm realm) {
        return getQuery(context, realm).size();
    }

    private static RealmResults<Photos> getQuery(Context context, Realm realm) {
// Path: PhotoPaper/src/main/java/com/lukekorth/photo_paper/helpers/Settings.java
// public class Settings {
// 
//     private static SharedPreferences getPrefs(Context context) {
//         return PreferenceManager.getDefaultSharedPreferences(context);
//     }
// 
//     public static String getFavoriteGallery(Context context) {
//         return getPrefs(context).getString("favorite_gallery", null);
//     }
// 
//     public static String getFavoriteGalleryId(Context context) {
//         return getPrefs(context).getString("favorite_gallery_id", null);
//     }
// 
//     public static void setFavoriteGallery(Context context, String gallery) {
//         getPrefs(context).edit().putString("favorite_gallery", gallery).apply();
//     }
// 
//     public static void setFavoriteGalleryId(Context context, String id) {
//         getPrefs(context).edit().putString("favorite_gallery_id", id).apply();
//     }
// 
//     public static String getFeature(Context context) {
//         return getPrefs(context).getString("feature", "popular");
//     }
// 
//     public static void setFeature(Context context, String feature) {
//         getPrefs(context).edit().putString("feature", feature).apply();
//     }
// 
//     public static String getSearchQuery(Context context) {
//         return getPrefs(context).getString("search_query", "");
//     }
// 
//     public static void setSearchQuery(Context context, String query) {
//         getPrefs(context).edit().putString("search_query", query).apply();
//     }
// 
//     public static int[] getCategories(Context context) {
//         Set<String> defaultCategory = new HashSet<String>();
//         defaultCategory.add("8");
//         Set<String> prefCategories = getPrefs(context).getStringSet("categories", defaultCategory);
// 
//         int[] categories = new int[prefCategories.size()];
//         int i = 0;
//         for (String category : prefCategories) {
//             categories[i] = Integer.parseInt(category);
//             i++;
//         }
// 
//         return categories;
//     }
// 
//     public static void setCategories(Context context, Set<String> categories) {
//         getPrefs(context).edit().putStringSet("categories", categories).apply();
//     }
// 
//     public static boolean isEnabled(Context context) {
//         return getPrefs(context).getBoolean("enable", false);
//     }
// 
//     public static int getUpdateInterval(Context context) {
//         return Integer.parseInt(getPrefs(context).getString("update_interval", "3600"));
//     }
// 
//     public static void setUpdateInterval(Context context, String interval) {
//         getPrefs(context).edit().putString("update_interval", interval).apply();
//     }
// 
//     public static boolean useParallax(Context context) {
//         return getPrefs(context).getBoolean("use_parallax", false);
//     }
// 
//     public static boolean useOnlyWifi(Context context) {
//         return getPrefs(context).getBoolean("use_only_wifi", true);
//     }
// 
//     public static long getLastUpdated(Context context) {
//         return getPrefs(context).getLong("last_updated", 0);
//     }
// 
//     public static void setUpdated(Context context) {
//         getPrefs(context).edit().putLong("last_updated", System.currentTimeMillis()).apply();
//     }
// 
//     public static void clearUpdated(Context context) {
//         getPrefs(context).edit().putLong("last_updated", 0).apply();
//     }
// }


// Path: PhotoPaper/src/main/java/com/lukekorth/photo_paper/models/Photos.java
import android.content.Context;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.lukekorth.photo_paper.helpers.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.realm.Realm;
import io.realm.RealmObject;
import io.realm.RealmQuery;
import io.realm.RealmResults;
import io.realm.Sort;
import io.realm.annotations.Required;

        } else {
            return photos.first();
        }
    }

    public static Photos getCurrentPhoto(Realm realm) {
        RealmResults<Photos> photos = getRecentlySeenPhotos(realm);
        if (photos.isEmpty()) {
            return null;
        } else {
            return photos.first();
        }
    }

    public static RealmResults<Photos> getRecentlySeenPhotos(Realm realm) {
        return realm.where(Photos.class)
                .equalTo("seen", true)
                .greaterThan("seenAt", System.currentTimeMillis() - TimeUnit.DAYS.toMillis(7))
                .findAllSorted("seenAt", Sort.DESCENDING);
    }

    public static List<Photos> getUnseenPhotos(Context context, Realm realm) {
        return getQuery(context, realm);
    }

    public static int unseenPhotoCount(Context context, Realm realm) {
        return getQuery(context, realm).size();
    }

    private static RealmResults<Photos> getQuery(Context context, Realm realm) {
        String feature = Settings.getFeature(context);