package io.evercam.androidapp.feedback;
import android.content.Context;
import com.mixpanel.android.mpmetrics.MixpanelAPI;
import org.json.JSONException;
import org.json.JSONObject;
import io.evercam.androidapp.dto.AppData;
import io.evercam.androidapp.dto.AppUser;
import io.evercam.androidapp.utils.PropertyReader;
public class MixpanelHelper
{
private MixpanelAPI mixpanel;
private Context context;
public MixpanelHelper(Context context, PropertyReader propertyReader)
{
this.context = context;
initMixpanel(context, propertyReader);
}
public MixpanelHelper(Context context)
{
this.context = context;
PropertyReader propertyReader = new PropertyReader(context);
initMixpanel(context, propertyReader);
}
private void initMixpanel(Context context, PropertyReader propertyReader)
{
if(propertyReader.isPropertyExist(PropertyReader.KEY_MIXPANEL))
{
final String MIXPANEL_TOKEN = propertyReader.getPropertyStr(PropertyReader
.KEY_MIXPANEL);
mixpanel = MixpanelAPI.getInstance(context, MIXPANEL_TOKEN);
}
}
/**
* Inform Mixpanel library to send whatever events are still unsent
*/
public void flush()
{
if(mixpanel != null)
{
mixpanel.flush();
}
}
public void sendEvent(int eventNameId, JSONObject eventJsonObject)
{
if(mixpanel != null)
{
if(AppData.defaultUser != null)
{
mixpanel.identify(AppData.defaultUser.getUsername());
}
String eventName = context.getString(eventNameId);
mixpanel.track(eventName, eventJsonObject);
}
}
public void identifyUser(String username)
{
if(mixpanel != null)
{
mixpanel.identify(username);
}
}
public void identifyNewUser(AppUser user)
{
if(mixpanel != null)
{
mixpanel.getPeople().identify(user.getUsername());
mixpanel.getPeople().set("$email", user.getEmail());
mixpanel.getPeople().set("$first_name", user.getFirstName());
mixpanel.getPeople().set("$last_name", user.getLastName());
mixpanel.getPeople().set("Username", user.getUsername());
}
}
public void registerSuperProperty(String propertyName, String propertyValue)
{
if(mixpanel != null)
{
JSONObject props = new JSONObject();
try
{
props.put(propertyName, propertyValue);
mixpanel.registerSuperPropertiesOnce(props);
}
catch(JSONException e)
{
e.printStackTrace();
}
}
}
}