package com.esoxjem.movieguide.favorites;
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import com.esoxjem.movieguide.Movie;
import com.squareup.moshi.JsonAdapter;
import com.squareup.moshi.Moshi;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* @author arun
*/
@Singleton
public class FavoritesStore
{
private static final String PREF_NAME = "FavoritesStore";
private SharedPreferences pref;
@Inject
public FavoritesStore(Context context)
{
pref = context.getApplicationContext().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
}
public void setFavorite(Movie movie)
{
SharedPreferences.Editor editor = pref.edit();
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<Movie> jsonAdapter = moshi.adapter(Movie.class);
String movieJson = jsonAdapter.toJson(movie);
editor.putString(movie.getId(), movieJson);
editor.apply();
}
public boolean isFavorite(String id)
{
String movieJson = pref.getString(id, null);
if (!TextUtils.isEmpty(movieJson))
{
return true;
} else
{
return false;
}
}
public List<Movie> getFavorites() throws IOException
{
Map<String, ?> allEntries = pref.getAll();
ArrayList<Movie> movies = new ArrayList<>(24);
Moshi moshi = new Moshi.Builder().build();
for (Map.Entry<String, ?> entry : allEntries.entrySet())
{
String movieJson = pref.getString(entry.getKey(), null);
if (!TextUtils.isEmpty(movieJson))
{
JsonAdapter<Movie> jsonAdapter = moshi.adapter(Movie.class);
Movie movie = jsonAdapter.fromJson(movieJson);
movies.add(movie);
} else
{
// Do nothing;
}
}
return movies;
}
public void unfavorite(String id)
{
SharedPreferences.Editor editor = pref.edit();
editor.remove(id);
editor.apply();
}
}