co.easimart.EasimartAnonymousUtils Maven / Gradle / Ivy
package co.easimart;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import bolts.Task;
/**
* Provides utility functions for working with Anonymously logged-in users. Anonymous users have
* some unique characteristics:
*
* - Anonymous users don't need a user name or password.
* - Once logged out, an anonymous user cannot be recovered.
* - When the current user is anonymous, the following methods can be used to switch to a
* different user or convert the anonymous user into a regular one:
*
* - signUp converts an anonymous user to a standard user with the given username and password.
* Data associated with the anonymous user is retained.
* - logIn switches users without converting the anonymous user. Data associated with the
* anonymous user will be lost.
* - Service logIn (e.g. Facebook, Twitter) will attempt to convert the anonymous user into a
* standard user by linking it to the service. If a user already exists that is linked to the
* service, it will instead switch to the existing user.
* - Service linking (e.g. Facebook, Twitter) will convert the anonymous user into a standard user
* by linking it to the service.
*
*
*/
public final class EasimartAnonymousUtils {
/* package */ static final String AUTH_TYPE = "anonymous";
/**
* Whether the user is logged in anonymously.
*
* @param user
* User to check for anonymity. The user must be logged in on this device.
* @return True if the user is anonymous. False if the user is not the current user or is not
* anonymous.
*/
public static boolean isLinked(EasimartUser user) {
return user.isLinked(AUTH_TYPE);
}
/**
* Creates an anonymous user in the background.
*
* @return A Task that will be resolved when logging in is completed.
*/
public static Task logInInBackground() {
return EasimartUser.logInWithInBackground(AUTH_TYPE, getAuthData());
}
/**
* Creates an anonymous user in the background.
*
* @param callback
* The callback to execute when anonymous user creation is complete.
*/
public static void logIn(LogInCallback callback) {
EasimartTaskUtils.callbackOnMainThreadAsync(logInInBackground(), callback);
}
/* package */ static Map getAuthData() {
Map authData = new HashMap<>();
authData.put("id", UUID.randomUUID().toString());
return authData;
}
private EasimartAnonymousUtils() {
// do nothing
}
}