Blame | Last modification | View Log | RSS feed
package com.facebook.internal;import android.content.Context;import android.os.Bundle;import com.facebook.widget.FacebookDialog;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.UUID;/*** com.facebook.internal is solely for the use of other packages within the Facebook SDK for Android. Use of* any of the classes in this package is unsupported, and they may be modified or removed without warning at* any time.*/public class PendingCallStore {private static final String CALL_ID_ARRAY_KEY = "com.facebook.internal.PendingCallStore.callIdArrayKey";private static final String CALL_KEY_PREFIX = "com.facebook.internal.PendingCallStore.";private static PendingCallStore mInstance;private Map<String, FacebookDialog.PendingCall> pendingCallMap = new HashMap<String, FacebookDialog.PendingCall>();public static PendingCallStore getInstance() {if (mInstance == null) {createInstance();}return mInstance;}private synchronized static void createInstance() {if (mInstance == null) {mInstance = new PendingCallStore();}}public void trackPendingCall(FacebookDialog.PendingCall pendingCall) {if (pendingCall != null) {pendingCallMap.put(pendingCall.getCallId().toString(), pendingCall);}}public void stopTrackingPendingCall(UUID callId) {if (callId != null) {pendingCallMap.remove(callId.toString());}}public FacebookDialog.PendingCall getPendingCallById(UUID callId) {if (callId == null) {return null;}return pendingCallMap.get(callId.toString());}public void saveInstanceState(Bundle outState) {ArrayList<String> callIds = new ArrayList<String>(pendingCallMap.keySet());outState.putStringArrayList(CALL_ID_ARRAY_KEY, callIds);for(FacebookDialog.PendingCall pendingCall : pendingCallMap.values()) {String stateKey = getSavedStateKeyForPendingCallId(pendingCall.getCallId().toString());outState.putParcelable(stateKey, pendingCall);}}public void restoreFromSavedInstanceState(Bundle savedInstanceState) {ArrayList<String> callIds = savedInstanceState.getStringArrayList(CALL_ID_ARRAY_KEY);if (callIds != null) {for (String callId : callIds) {String stateKey = getSavedStateKeyForPendingCallId(callId);FacebookDialog.PendingCall pendingCall = savedInstanceState.getParcelable(stateKey);if (pendingCall != null) {pendingCallMap.put(pendingCall.getCallId().toString(), pendingCall);}}}}private String getSavedStateKeyForPendingCallId(String pendingCallId) {return CALL_KEY_PREFIX + pendingCallId;}}