package com.malmstein.yahnac.data.updater; import android.content.Context; import android.content.SharedPreferences; import com.malmstein.yahnac.BuildConfig; import com.malmstein.yahnac.HNewsApplication; import com.malmstein.yahnac.model.Story; public class RefreshSharedPreferences { private static final String PREFERENCE_NAME = BuildConfig.APPLICATION_ID + ".REFRESH_PREFERENCES"; private static final String KEY_REFRESH_TIME_TOP_STORY = BuildConfig.APPLICATION_ID + ".KEY_REFRESH_TIME_TOP_STORY"; private static final String KEY_REFRESH_TIME_NEW_STORY = BuildConfig.APPLICATION_ID + ".KEY_REFRESH_TIME_NEW_STORY"; private static final String KEY_REFRESH_TIME_BEST_STORY = BuildConfig.APPLICATION_ID + ".KEY_REFRESH_TIME_BEST_STORY"; private static final String KEY_REFRESH_TIME_SHOW_STORY = BuildConfig.APPLICATION_ID + ".KEY_REFRESH_TIME_SHOW_STORY"; private static final String KEY_REFRESH_TIME_ASK_STORY = BuildConfig.APPLICATION_ID + ".KEY_REFRESH_TIME_ASK_STORY"; private static final String KEY_REFRESH_TIME_JOB_STORY = BuildConfig.APPLICATION_ID + ".KEY_REFRESH_TIME_JOB_STORY"; private final SharedPreferences preferences; private RefreshSharedPreferences(SharedPreferences preferences) { this.preferences = preferences; } public static RefreshSharedPreferences newInstance() { SharedPreferences preferences = HNewsApplication.context().getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE); return new RefreshSharedPreferences(preferences); } public void saveRefreshTick(Story.FILTER FILTER) { switch (FILTER) { case top_story: preferences.edit().putLong(KEY_REFRESH_TIME_TOP_STORY, RefreshTimestamp.now().getMillis()).apply(); break; case new_story: preferences.edit().putLong(KEY_REFRESH_TIME_NEW_STORY, RefreshTimestamp.now().getMillis()).apply(); break; case best_story: preferences.edit().putLong(KEY_REFRESH_TIME_BEST_STORY, RefreshTimestamp.now().getMillis()).apply(); break; case show: preferences.edit().putLong(KEY_REFRESH_TIME_SHOW_STORY, RefreshTimestamp.now().getMillis()).apply(); break; case ask: preferences.edit().putLong(KEY_REFRESH_TIME_ASK_STORY, RefreshTimestamp.now().getMillis()).apply(); break; case jobs: preferences.edit().putLong(KEY_REFRESH_TIME_JOB_STORY, RefreshTimestamp.now().getMillis()).apply(); break; } } public RefreshTimestamp getLastRefresh(Story.FILTER FILTER) { switch (FILTER) { case top_story: return RefreshTimestamp.from(preferences.getLong(KEY_REFRESH_TIME_TOP_STORY, 0)); case new_story: return RefreshTimestamp.from(preferences.getLong(KEY_REFRESH_TIME_NEW_STORY, 0)); case best_story: return RefreshTimestamp.from(preferences.getLong(KEY_REFRESH_TIME_BEST_STORY, 0)); case show: return RefreshTimestamp.from(preferences.getLong(KEY_REFRESH_TIME_SHOW_STORY, 0)); case ask: return RefreshTimestamp.from(preferences.getLong(KEY_REFRESH_TIME_ASK_STORY, 0)); case jobs: return RefreshTimestamp.from(preferences.getLong(KEY_REFRESH_TIME_JOB_STORY, 0)); default: return RefreshTimestamp.now(); } } }