/* * Copyright (C) 2013 Simon Vig Therkildsen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.simonvt.cathode.settings; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import net.simonvt.cathode.api.entity.LastActivity; import net.simonvt.cathode.settings.Settings.ActivityTimestamp; import net.simonvt.cathode.util.DateUtils; public final class TraktTimestamps { private TraktTimestamps() { } public static boolean episodeWatchedNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.EPISODE_WATCHED, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean episodeCollectedNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.EPISODE_COLLECTION, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean episodeWatchlistNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.EPISODE_WATCHLIST, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean episodeRatingsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.EPISODE_RATING, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean episodeCommentsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.EPISODE_COMMENT, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean seasonRatingsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.SEASON_RATING, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean seasonCommentsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.SEASON_COMMENT, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean showWatchlistNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.SHOW_WATCHLIST, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean showRatingsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.SEASON_RATING, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean showCommentsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.SHOW_COMMENT, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean movieWatchedNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.MOVIE_WATCHED, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean movieCollectedNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.MOVIE_COLLECTION, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean movieWatchlistNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.MOVIE_WATCHLIST, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean movieRatingsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.MOVIE_RATING, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean movieCommentsNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.MOVIE_COMMENT, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean commentLikedNeedsUpdate(Context context, long lastLiked) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.COMMENT_LIKED_AT, -1); return lastActivity == -1 || lastLiked > lastActivity; } public static boolean listNeedsUpdate(Context context, long lastUpdated) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); long lastActivity = settings.getLong(ActivityTimestamp.LIST_UPDATED_AT, -1); return lastActivity == -1 || lastUpdated > lastActivity; } public static boolean suggestionsNeedsUpdate(Context context) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); final long lastActivity = settings.getLong(Settings.SUGGESTIONS, -1); return System.currentTimeMillis() > lastActivity + 3 * DateUtils.HOUR_IN_MILLIS; } public static boolean hiddenNeedsUpdate(Context context) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); final long lastActivity = settings.getLong(Settings.LAST_SYNC_HIDDEN, -1); return System.currentTimeMillis() > lastActivity + 3 * DateUtils.HOUR_IN_MILLIS; } public static boolean shouldSyncComments(long lastSync) { return System.currentTimeMillis() > lastSync + 3 * DateUtils.HOUR_IN_MILLIS; } public static boolean shouldSyncPerson(long lastSync) { return System.currentTimeMillis() > lastSync + 24 * DateUtils.HOUR_IN_MILLIS; } public static boolean shouldPurge(Context context) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); final long lastPurge = settings.getLong(Settings.LAST_PURGE, 0); if (lastPurge == 0) { return true; } final boolean shouldPurge = System.currentTimeMillis() > lastPurge + 7 * DateUtils.DAY_IN_MILLIS; if (shouldPurge) { settings.edit().putLong(Settings.LAST_PURGE, System.currentTimeMillis()).apply(); } return shouldPurge; } public static void update(Context context, LastActivity lastActivity) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = settings.edit(); editor.putLong(ActivityTimestamp.SHOW_RATING, lastActivity.getShows().getRatedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.SHOW_WATCHLIST, lastActivity.getShows().getWatchlistedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.SHOW_COMMENT, lastActivity.getShows().getCommentedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.SEASON_COMMENT, lastActivity.getSeasons().getCommentedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.SEASON_RATING, lastActivity.getSeasons().getRatedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.EPISODE_WATCHED, lastActivity.getEpisodes().getWatchedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.EPISODE_COLLECTION, lastActivity.getEpisodes().getCollectedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.EPISODE_RATING, lastActivity.getEpisodes().getRatedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.EPISODE_WATCHLIST, lastActivity.getEpisodes().getWatchlistedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.EPISODE_COMMENT, lastActivity.getEpisodes().getCommentedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.MOVIE_WATCHED, lastActivity.getMovies().getWatchedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.MOVIE_COLLECTION, lastActivity.getMovies().getCollectedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.MOVIE_RATING, lastActivity.getMovies().getRatedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.MOVIE_WATCHLIST, lastActivity.getMovies().getWatchlistedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.MOVIE_COMMENT, lastActivity.getMovies().getCommentedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.COMMENT_LIKED_AT, lastActivity.getComments().getLikedAt().getTimeInMillis()); editor.putLong(ActivityTimestamp.LIST_UPDATED_AT, lastActivity.getLists().getUpdatedAt().getTimeInMillis()); editor.apply(); } public static void updateSuggestions(Context context) { final long currentTimeMillis = System.currentTimeMillis(); PreferenceManager.getDefaultSharedPreferences(context) .edit() .putLong(Settings.SUGGESTIONS, currentTimeMillis) .apply(); } public static void updateHidden(Context context) { final long currentTimeMillis = System.currentTimeMillis(); PreferenceManager.getDefaultSharedPreferences(context) .edit() .putLong(Settings.LAST_SYNC_HIDDEN, currentTimeMillis) .apply(); } public static void clear(Context context) { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = settings.edit(); editor.remove(ActivityTimestamp.EPISODE_WATCHED); editor.remove(ActivityTimestamp.EPISODE_COLLECTION); editor.remove(ActivityTimestamp.EPISODE_RATING); editor.remove(ActivityTimestamp.EPISODE_WATCHLIST); editor.remove(ActivityTimestamp.EPISODE_COMMENT); editor.remove(ActivityTimestamp.SHOW_RATING); editor.remove(ActivityTimestamp.SHOW_WATCHLIST); editor.remove(ActivityTimestamp.SHOW_COMMENT); editor.remove(ActivityTimestamp.SEASON_COMMENT); editor.remove(ActivityTimestamp.SEASON_RATING); editor.remove(ActivityTimestamp.MOVIE_WATCHED); editor.remove(ActivityTimestamp.MOVIE_COLLECTION); editor.remove(ActivityTimestamp.MOVIE_RATING); editor.remove(ActivityTimestamp.MOVIE_WATCHLIST); editor.remove(ActivityTimestamp.MOVIE_COMMENT); editor.remove(ActivityTimestamp.COMMENT_LIKED_AT); editor.remove(ActivityTimestamp.LIST_UPDATED_AT); editor.apply(); } }