package org.wikipedia.analytics;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.json.JSONObject;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
import org.wikipedia.login.User;
import org.wikipedia.page.PageTitle;
public class EditFunnel extends Funnel {
private static final String SCHEMA_NAME = "MobileWikiAppEdit";
private static final int REV_ID = 16256587;
private final PageTitle title;
public EditFunnel(@NonNull WikipediaApp app, @NonNull PageTitle title) {
super(app, SCHEMA_NAME, REV_ID, title.getWikiSite());
this.title = title;
}
@Nullable
@Override
public String getSessionToken() {
return super.getSessionToken();
}
public void logStart() {
log(
"action", "start"
);
}
public void logPreview() {
log(
"action", "preview"
);
}
public void logSaved(int revID) {
log(
"action", "saved",
"revID", revID
);
}
public void logLoginAttempt() {
log(
"action", "loginAttempt"
);
}
public void logLoginSuccess() {
log(
"action", "loginSuccess"
);
}
public void logLoginFailure() {
log(
"action", "loginFailure"
);
}
public void logCaptchaShown() {
log(
"action", "captchaShown"
);
}
public void logCaptchaFailure() {
log(
"action", "captchaFailure"
);
}
public void logAbuseFilterWarning(String code) {
log(
"action", "abuseFilterWarning",
"abuseFilterName", code
);
}
public void logAbuseFilterWarningIgnore(String code) {
log(
"action", "abuseFilterWarningIgnore",
"abuseFilterName", code
);
}
public void logAbuseFilterWarningBack(String code) {
log(
"action", "abuseFilterWarningBack",
"abuseFilterName", code
);
}
public void logAbuseFilterError(String code) {
log(
"action", "abuseFilterError",
"abuseFilterName", code
);
}
public void logError(String code) {
log(
"action", "error",
"errorText", code
);
}
/**
* Log a summary being tapped.
*
* @param summaryTagStringID String resource id of the summary tag tapped
*/
public void logEditSummaryTap(int summaryTagStringID) {
String summaryTag;
switch (summaryTagStringID) {
case R.string.edit_summary_tag_typo:
summaryTag = "typo";
break;
case R.string.edit_summary_tag_grammar:
summaryTag = "grammar";
break;
case R.string.edit_summary_tag_links:
summaryTag = "links";
break;
case R.string.edit_summary_tag_other:
summaryTag = "other";
break;
default:
// Unknown summary tag. Must throw exception so whoever is testing
// can add the entry here
throw new RuntimeException("Need to add new summary tags to EditFunnel");
}
log(
"action", "editSummaryTap",
"editSummaryTapped", summaryTag
);
}
public void logSaveAttempt() {
log(
"action", "saveAttempt"
);
}
@Override
protected JSONObject preprocessData(@NonNull JSONObject eventData) {
if (User.isLoggedIn()) {
// noinspection ConstantConditions
preprocessData(eventData, "userID",
User.getUser().getIdForLanguage(title.getWikiSite().languageCode()));
}
preprocessData(eventData, "pageNS", title.getNamespace());
return super.preprocessData(eventData);
}
@Override protected void preprocessAppInstallID(@NonNull JSONObject eventData) { }
@NonNull
@Override
protected String getSessionTokenField() {
return "editSessionToken";
}
}