Skip to content
This repository has been archived by the owner on Jan 11, 2021. It is now read-only.

Additional Analytics #30

Merged
merged 5 commits into from
Sep 6, 2016
Merged
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ public void onStartAction(Context context) throws ActivityNotFoundException {
startActivity(intent);

}

@Override
public String getName() {
return "date debug";
}
};
Utils.openIntentSafely(getActivity(), i);
}
Expand Down
5 changes: 5 additions & 0 deletions mobile/src/main/java/com/alexstyl/specialdates/Navigator.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ public void onStartAction(Context context) throws ActivityNotFoundException {
Intent intent = Utils.getSupportEmailIntent(context);
context.startActivity(intent);
}

@Override
public String getName() {
return "email support";
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
import com.alexstyl.specialdates.R;
import com.alexstyl.specialdates.addevent.ui.ContactHeroView;
import com.alexstyl.specialdates.addevent.ui.ContactsAutoCompleteView;
import com.alexstyl.specialdates.analytics.Action;
import com.alexstyl.specialdates.analytics.Analytics;
import com.alexstyl.specialdates.analytics.AnalyticsEvent;
import com.alexstyl.specialdates.analytics.ActionWithParameters;
import com.alexstyl.specialdates.analytics.Firebase;
import com.alexstyl.specialdates.analytics.Screen;
import com.alexstyl.specialdates.contact.Birthday;
import com.alexstyl.specialdates.contact.Contact;
Expand All @@ -33,7 +35,7 @@ public class AddBirthdayActivity extends ThemedActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

analytics = Analytics.get(this);
analytics = Firebase.get(this);
analytics.trackScreen(Screen.ADD_BIRTHDAY);
MementoTheme theme = Themer.get().getCurrentTheme();
setContentView(R.layout.activity_add_birthday, theme);
Expand Down Expand Up @@ -98,21 +100,21 @@ protected void onDestroy() {
}

private void trackEventCreation() {
AnalyticsEvent analyticsEvent;
ActionWithParameters actionWithParameters;
if (eventCreated) {
analyticsEvent = birthdayCreationSuccess();
actionWithParameters = birthdayCreationSuccess();
} else {
analyticsEvent = birthdayCreationFailed();
actionWithParameters = birthdayCreationFailed();
}
analytics.track(analyticsEvent);
analytics.trackAction(actionWithParameters);
}

private AnalyticsEvent birthdayCreationSuccess() {
return new AnalyticsEvent(AnalyticsEvent.Events.ADD_BIRTHDAY).asSuccess(true);
private ActionWithParameters birthdayCreationSuccess() {
return new ActionWithParameters(Action.ADD_BIRTHDAY, "success", "true");
}

private AnalyticsEvent birthdayCreationFailed() {
return new AnalyticsEvent(AnalyticsEvent.Events.ADD_BIRTHDAY).asSuccess(false);
private ActionWithParameters birthdayCreationFailed() {
return new ActionWithParameters(Action.ADD_BIRTHDAY, "success", "false");
}

private final BirthdayLabelView.OnEditListener onBirthdayLabelClicked = new BirthdayLabelView.OnEditListener() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.alexstyl.specialdates.analytics;

public enum Action {
ADD_BIRTHDAY("add birthday"),
DAILY_REMINDER("enable daily reminder"),
DONATION("donate"),
INTERACT_CONTACT("interact contact"),
SELECT_THEME("select theme"),
GO_TO_TODAY("go to today");

private final String name;

Action(String name) {
this.name = name;
}

public String getName() {
return name;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.alexstyl.specialdates.analytics;

public final class ActionWithParameters {

private final Action actionName;
private final String label;
private final String value;

public ActionWithParameters(Action actionName, String label, String value) {
this.actionName = actionName;
this.label = label;
this.value = value;
}

public ActionWithParameters(Action action, String label, boolean value) {
this.actionName = action;
this.label = label;
this.value = value ? "true" : "false";
}

public String getName() {
return actionName.getName();
}

public String getLabel() {
return label;
}

public String getValue() {
return value;
}

}
Original file line number Diff line number Diff line change
@@ -1,31 +1,9 @@
package com.alexstyl.specialdates.analytics;

import android.content.Context;
public interface Analytics {
void trackAction(Action goToToday);

import com.google.firebase.analytics.FirebaseAnalytics;
void trackAction(ActionWithParameters event);

public class Analytics {

private final FirebaseAnalytics firebaseAnalytics;

private static Analytics INSTANCE;

public static Analytics get(Context context) {
if (INSTANCE == null) {
INSTANCE = new Analytics(FirebaseAnalytics.getInstance(context));
}
return INSTANCE;
}

public Analytics(FirebaseAnalytics firebaseAnalytics) {
this.firebaseAnalytics = firebaseAnalytics;
}

public void track(AnalyticsEvent event) {
firebaseAnalytics.logEvent(event.getName(), event.data());
}

public void trackScreen(Screen screen) {
firebaseAnalytics.logEvent("screen_view", screen.getData());
}
void trackScreen(Screen screen);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.alexstyl.specialdates.analytics;

import android.content.Context;
import android.os.Bundle;

import com.google.firebase.analytics.FirebaseAnalytics;
import com.novoda.notils.logger.simple.Log;

import java.util.Locale;

public class Firebase implements Analytics {

private static final Bundle NO_DATA = null;

private final FirebaseAnalytics firebaseAnalytics;

private static Firebase INSTANCE;

public static Firebase get(Context context) {
if (INSTANCE == null) {
INSTANCE = new Firebase(FirebaseAnalytics.getInstance(context));
}
return INSTANCE;
}

private Firebase(FirebaseAnalytics firebaseAnalytics) {
this.firebaseAnalytics = firebaseAnalytics;
}

@Override
public void trackAction(Action goToToday) {
String actionName = goToToday.getName();
firebaseAnalytics.logEvent(actionName, NO_DATA);
Log.d("Tracking event:" + actionName);
}

@Override
public void trackAction(ActionWithParameters action) {
String formattedAction = format(action);
firebaseAnalytics.logEvent(formattedAction, NO_DATA);
Log.d("Tracking event:" + formattedAction);
}

@Override
public void trackScreen(Screen screen) {
firebaseAnalytics.logEvent("screen_view:" + screen.screenName(), NO_DATA);
Log.d("Tracking screen_view:" + screen);
}

private String format(ActionWithParameters action) {
return String.format(Locale.US, "%s:%s:%s", action.getName(), action.getLabel(), action.getValue());
}
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
package com.alexstyl.specialdates.analytics;

import android.os.Bundle;

public enum Screen {
HOME("home"),
ADD_BIRTHDAY("add birthday"),
SEARCH("search"),
SETTINGS("settings"),
DATE_DETAILS("date details"),
DONATE("donate");
DONATE("donate"),
ABOUT("about");

private final Bundle data;
private final String screenName;

Screen(String screenName) {
data = new Bundle(1);
data.putString("screen", screenName);
this.screenName = screenName;
}

public String screenName() {
return screenName;
}

public Bundle getData() {
return data;
@Override
public String toString() {
return screenName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,9 @@ public void onStartAction(Context context) throws ActivityNotFoundException {

}

@Override
public String getName() {
return "call";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,9 @@ public void onStartAction(Context context) throws ActivityNotFoundException {

}

@Override
public String getName() {
return "email";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@

public interface IntentAction {
void onStartAction(Context context) throws ActivityNotFoundException;

String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,9 @@ public void onStartAction(Context context) throws ActivityNotFoundException {

}

@Override
public String getName() {
return "SMS";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
import com.alexstyl.specialdates.ErrorTracker;
import com.alexstyl.specialdates.Optional;
import com.alexstyl.specialdates.R;
import com.alexstyl.specialdates.analytics.Analytics;
import com.alexstyl.specialdates.analytics.Screen;
import com.alexstyl.specialdates.date.DateFormatUtils;
import com.alexstyl.specialdates.date.DayDate;
import com.alexstyl.specialdates.support.AskForSupport;
Expand Down Expand Up @@ -46,7 +44,6 @@ public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_date_details);
MementoToolbar toolbar = Views.findById(this, R.id.memento_toolbar);

Analytics.get(this).trackScreen(Screen.DATE_DETAILS);
toolbar.displayAsUp();
setSupportActionBar(toolbar);

Expand Down
Loading