1ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak/* 2ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Copyright (c) 2015, Motorola Mobility LLC 3ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * All rights reserved. 4ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * 5ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Redistribution and use in source and binary forms, with or without 6ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * modification, are permitted provided that the following conditions are met: 7ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Redistributions of source code must retain the above copyright 8ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * notice, this list of conditions and the following disclaimer. 9ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Redistributions in binary form must reproduce the above copyright 10ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * notice, this list of conditions and the following disclaimer in the 11ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * documentation and/or other materials provided with the distribution. 12ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * - Neither the name of Motorola Mobility nor the 13ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * names of its contributors may be used to endorse or promote products 14ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * derived from this software without specific prior written permission. 15ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * 16ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MOTOROLA MOBILITY LLC BE LIABLE 20ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 26ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGE. 27ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak */ 28ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 29ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpackage com.android.service.ims.presence; 30ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 31ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.Context; 32ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.SharedPreferences; 33ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 34ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpublic class SharedPrefUtil { 35ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static final String EAB_SHARED_PREF = "com.android.vt.eab"; 36ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static final String INIT_DONE = "init_done"; 37ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String CONTACT_CHANGED_PREF_KEY = "timestamp_change"; 38ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String CONTACT_DELETE_PREF_KEY = "timestamp_delete"; 39ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak private static final String CONTACT_PROFILE_CHANGED_PREF_KEY = "profile_timestamp_change"; 40ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 41ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static boolean isInitDone(Context context) { 42ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences eabPref = context.getSharedPreferences( 43ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak EAB_SHARED_PREF, Context.MODE_PRIVATE); 44ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak return eabPref.getBoolean(INIT_DONE, false); 45ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 46ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 47ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static void setInitDone(Context context, boolean initDone){ 48ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences.Editor eabPref = context.getSharedPreferences( 49ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak EAB_SHARED_PREF, Context.MODE_PRIVATE).edit(); 50ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putBoolean(INIT_DONE, initDone).commit(); 51ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 52ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 53ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static long getLastContactChangedTimestamp(Context context, long time) { 548e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing long contactModifySyncTime = 0; 55ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences pref = context.getSharedPreferences(EAB_SHARED_PREF, 56ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Context.MODE_PRIVATE); 578e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing contactModifySyncTime = pref.getLong(CONTACT_CHANGED_PREF_KEY, time); 588e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing return validateDeviceTimestamp(context, contactModifySyncTime); 59ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 60ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 61ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static void saveLastContactChangedTimestamp(Context context, long time) { 62ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences.Editor eabPref = context.getSharedPreferences( 63ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak EAB_SHARED_PREF, Context.MODE_PRIVATE).edit(); 64ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putLong(CONTACT_CHANGED_PREF_KEY, time).commit(); 65ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 66ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 67ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static long getLastProfileContactChangedTimestamp(Context context, long time) { 688e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing long profileModifySyncTime = 0; 69ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences pref = context.getSharedPreferences(EAB_SHARED_PREF, 70ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Context.MODE_PRIVATE); 718e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing profileModifySyncTime = pref.getLong(CONTACT_PROFILE_CHANGED_PREF_KEY, time); 728e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing return validateDeviceTimestamp(context, profileModifySyncTime); 73ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 74ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 75ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static void saveLastProfileContactChangedTimestamp(Context context, long time) { 76ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences.Editor eabPref = context.getSharedPreferences( 77ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak EAB_SHARED_PREF, Context.MODE_PRIVATE).edit(); 78ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putLong(CONTACT_PROFILE_CHANGED_PREF_KEY, time).commit(); 79ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 80ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 81ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static long getLastContactDeletedTimestamp(Context context, long time) { 828e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing long contactDeleteSyncTime = 0; 83ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences pref = context.getSharedPreferences(EAB_SHARED_PREF, 84ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak Context.MODE_PRIVATE); 858e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing contactDeleteSyncTime = pref.getLong(CONTACT_DELETE_PREF_KEY, time); 868e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing return validateDeviceTimestamp(context, contactDeleteSyncTime); 87ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 88ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 89ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static void saveLastContactDeletedTimestamp(Context context, long time) { 90ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences.Editor eabPref = context.getSharedPreferences( 91ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak EAB_SHARED_PREF, Context.MODE_PRIVATE).edit(); 92ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putLong(CONTACT_DELETE_PREF_KEY, time).commit(); 93ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 94ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 958e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing private static long validateDeviceTimestamp(Context context, long lastSyncedTimestamp) { 968e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing long deviceCurrentTimeMillis = System.currentTimeMillis(); 978e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing if((lastSyncedTimestamp != 0) && lastSyncedTimestamp > deviceCurrentTimeMillis) { 988e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing SharedPreferences.Editor eabPref = context.getSharedPreferences( 998e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing EAB_SHARED_PREF, Context.MODE_PRIVATE).edit(); 1008e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing eabPref.putLong(CONTACT_CHANGED_PREF_KEY, 0); 1018e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing eabPref.putLong(CONTACT_DELETE_PREF_KEY, 0); 1028e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing eabPref.putLong(CONTACT_PROFILE_CHANGED_PREF_KEY, 0); 1038e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing eabPref.commit(); 1048e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing lastSyncedTimestamp = 0; 1058e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing } 1068e4834fa676fce0101da34950279b1a2bf8eb81cGao Bing return lastSyncedTimestamp; 107ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 108ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak 109ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak public static void resetEABSharedPref(Context context) { 110ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak SharedPreferences.Editor eabPref = context.getSharedPreferences( 111ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak EAB_SHARED_PREF, Context.MODE_PRIVATE).edit(); 112ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putBoolean(INIT_DONE, false); 113ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putLong(CONTACT_CHANGED_PREF_KEY, 0); 114ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putLong(CONTACT_DELETE_PREF_KEY, 0); 115ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.putLong(CONTACT_PROFILE_CHANGED_PREF_KEY, 0); 116ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak eabPref.commit(); 117ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak } 118ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak} 119