Skip to content

Fix AssertionError for some devices running Android 8.X #652

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Nov 22, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 36 additions & 27 deletions src/main/java/com/mixpanel/android/mpmetrics/AnalyticsMessages.java
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ protected RemoteService getPoster() {

////////////////////////////////////////////////////

static class EventDescription extends MixpanelDescription {
static class EventDescription extends MixpanelMessageDescription {
public EventDescription(String eventName,
JSONObject properties,
String token) {
Expand All @@ -181,9 +181,8 @@ public EventDescription(String eventName,
String token,
boolean isAutomatic,
JSONObject sessionMetada) {
super(token);
super(token, properties);
mEventName = eventName;
mProperties = properties;
mIsAutomatic = isAutomatic;
mSessionMetadata = sessionMetada;
}
Expand All @@ -193,7 +192,7 @@ public String getEventName() {
}

public JSONObject getProperties() {
return mProperties;
return getMessage();
}

public JSONObject getSessionMetadata() {
Expand All @@ -205,49 +204,34 @@ public boolean isAutomatic() {
}

private final String mEventName;
private final JSONObject mProperties;
private final JSONObject mSessionMetadata;
private final boolean mIsAutomatic;
}

static class PeopleDescription extends MixpanelDescription {
static class PeopleDescription extends MixpanelMessageDescription {
public PeopleDescription(JSONObject message, String token) {
super(token);
this.message = message;
super(token, message);
}

@Override
public String toString() {
return message.toString();
}

public JSONObject getMessage() {
return message;
return getMessage().toString();
}

public boolean isAnonymous() {
return !message.has("$distinct_id");
return !getMessage().has("$distinct_id");
}

private final JSONObject message;
}

static class GroupDescription extends MixpanelDescription {
static class GroupDescription extends MixpanelMessageDescription {
public GroupDescription(JSONObject message, String token) {
super(token);
this.message = message;
super(token, message);
}

@Override
public String toString() {
return message.toString();
}

public JSONObject getMessage() {
return message;
return getMessage().toString();
}

private final JSONObject message;
}

static class PushAnonymousPeopleDescription extends MixpanelDescription {
Expand Down Expand Up @@ -278,14 +262,39 @@ protected FlushDescription(String token, boolean checkDecide) {
this.checkDecide = checkDecide;
}


public boolean shouldCheckDecide() {
return checkDecide;
}

private final boolean checkDecide;
}

static class MixpanelMessageDescription extends MixpanelDescription {
public MixpanelMessageDescription(String token, JSONObject message) {
super(token);
if (message != null && message.length() > 0) {
Iterator<String> it = message.keys();
while (it.hasNext()) {
String jsonKey = it.next();
try {
message.get(jsonKey).toString();
} catch (AssertionError e) {
// see https://github.com/mixpanel/mixpanel-android/issues/567
message.remove(jsonKey);
MPLog.e(LOGTAG, "Removing people profile property from update (see https://github.com/mixpanel/mixpanel-android/issues/567)", e);
} catch (JSONException e) {}
}
}
this.mMessage = message;
}

public JSONObject getMessage() {
return mMessage;
}

private final JSONObject mMessage;
}

static class MixpanelDescription {
public MixpanelDescription(String token) {
this.mToken = token;
Expand Down