package co.smartreceipts.android.persistence;
import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.util.List;
import co.smartreceipts.android.model.Trip;
public class LastTripController {
private static final String PREFERENCES_FILENAME = SharedPreferenceDefinitions.LastTripTracker.toString();
private static final String PREFERENCE_TRIP_NAME = "tripName";
private final Context mContext;
private Trip mTrip;
public LastTripController(@NonNull Context context) {
mContext = context.getApplicationContext();
}
/**
* Retrieves the last trip that was saved via {@link #setLastTrip(Trip)}
* from a list of known database entries
*
* @return the last {@link Trip} or {@code null} if none was ever saved
*/
@Nullable
public synchronized Trip getLastTrip(@NonNull List<Trip> trips) {
if (mTrip == null) {
final SharedPreferences preferences = mContext.getSharedPreferences(PREFERENCES_FILENAME, 0);
final String tripName = preferences.getString(PREFERENCE_TRIP_NAME, "");
for (final Trip trip : trips) {
if (tripName.equals(trip.getName())) {
mTrip = trip;
return mTrip;
}
}
}
return mTrip;
}
/**
* Sets the last trip, which we can retrieve at a later point
*
* @param trip the last {@link Trip} to persist
*/
public synchronized void setLastTrip(@NonNull Trip trip) {
final SharedPreferences preferences = mContext.getSharedPreferences(PREFERENCES_FILENAME, 0);
final SharedPreferences.Editor editor = preferences.edit();
editor.putString(PREFERENCE_TRIP_NAME, trip.getName());
editor.apply();
mTrip = trip;
}
}