From 99b533e5cd3b1341c32bc2045585d182d4dd4d5a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 26 Mar 2022 10:57:24 -0500 Subject: [PATCH] Add 'addTask' event --- app/src/generic/java/org/tasks/analytics/Firebase.kt | 2 ++ .../googleplay/java/org/tasks/analytics/Firebase.kt | 3 +++ .../java/com/todoroo/astrid/activity/MainActivity.kt | 4 ++++ .../com/todoroo/astrid/activity/ShareLinkActivity.kt | 11 ++++++++++- .../com/todoroo/astrid/activity/TaskListFragment.kt | 2 ++ app/src/main/java/org/tasks/activities/UriHandler.kt | 2 +- app/src/main/java/org/tasks/intents/TaskIntents.java | 7 ++++++- .../org/tasks/locale/receiver/TaskerTaskCreator.kt | 7 +++++-- app/src/main/java/org/tasks/ui/TaskEditViewModel.kt | 3 +++ .../main/java/org/tasks/voice/VoiceCommandActivity.kt | 3 +++ app/src/main/java/org/tasks/widget/TasksWidget.kt | 2 +- app/src/main/java/org/tasks/widget/TileService.kt | 2 +- app/src/main/res/values/keys.xml | 1 + 13 files changed, 42 insertions(+), 7 deletions(-) diff --git a/app/src/generic/java/org/tasks/analytics/Firebase.kt b/app/src/generic/java/org/tasks/analytics/Firebase.kt index 14ee18c1d..b32a9ef5e 100644 --- a/app/src/generic/java/org/tasks/analytics/Firebase.kt +++ b/app/src/generic/java/org/tasks/analytics/Firebase.kt @@ -11,5 +11,7 @@ class Firebase @Inject constructor() { fun logEvent(event: Int, vararg params: Pair) {} + fun addTask(source: String) {} + val subscribeCooldown = false } \ No newline at end of file diff --git a/app/src/googleplay/java/org/tasks/analytics/Firebase.kt b/app/src/googleplay/java/org/tasks/analytics/Firebase.kt index 04627f1e1..a26f3df8b 100644 --- a/app/src/googleplay/java/org/tasks/analytics/Firebase.kt +++ b/app/src/googleplay/java/org/tasks/analytics/Firebase.kt @@ -47,6 +47,9 @@ class Firebase @Inject constructor( } } + fun addTask(source: String) = + logEvent(R.string.event_add_task, R.string.param_type to source) + fun logEvent(@StringRes event: Int, vararg p: Pair) { analytics?.logEvent(context.getString(event), Bundle().apply { p.forEach { diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 6ce220be3..19f588415 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -161,7 +161,10 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl return null } if (intent.hasExtra(CREATE_TASK)) { + val source = intent.getStringExtra(CREATE_SOURCE) + firebase.addTask(source ?: "unknown") intent.removeExtra(CREATE_TASK) + intent.removeExtra(CREATE_SOURCE) return taskCreator.createWithValues(filter, "") } if (intent.hasExtra(OPEN_TASK)) { @@ -493,6 +496,7 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl const val OPEN_FILTER = "open_filter" // $NON-NLS-1$ const val LOAD_FILTER = "load_filter" const val CREATE_TASK = "open_task" // $NON-NLS-1$ + const val CREATE_SOURCE = "create_source" const val OPEN_TASK = "open_new_task" // $NON-NLS-1$ const val REMOVE_TASK = "remove_task" const val FINISH_AFFINITY = "finish_affinity" diff --git a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.kt index ab8e90ee9..e21ac3fca 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/ShareLinkActivity.kt @@ -10,13 +10,13 @@ import com.todoroo.astrid.service.TaskCreator import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import org.tasks.Strings.isNullOrEmpty +import org.tasks.analytics.Firebase import org.tasks.data.TaskAttachment import org.tasks.files.FileHelper import org.tasks.injection.InjectingAppCompatActivity import org.tasks.intents.TaskIntents import org.tasks.preferences.Preferences import timber.log.Timber -import java.util.* import javax.inject.Inject import kotlin.math.min @@ -29,6 +29,7 @@ import kotlin.math.min class ShareLinkActivity : InjectingAppCompatActivity() { @Inject lateinit var taskCreator: TaskCreator @Inject lateinit var preferences: Preferences + @Inject lateinit var firebase: Firebase public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -40,6 +41,7 @@ class ShareLinkActivity : InjectingAppCompatActivity() { if (text != null) { val task = taskCreator.createWithValues(text.toString()) editTask(task) + firebase.addTask("clipboard") } finish() } @@ -49,6 +51,9 @@ class ShareLinkActivity : InjectingAppCompatActivity() { task.notes = intent.getStringExtra(Intent.EXTRA_TEXT) if (hasAttachments(intent)) { task.putTransitory(TaskAttachment.KEY, copyAttachment(intent)) + firebase.addTask("share_attachment") + } else { + firebase.addTask("share_text") } editTask(task) finish() @@ -58,12 +63,16 @@ class ShareLinkActivity : InjectingAppCompatActivity() { task.notes = intent.getStringExtra(Intent.EXTRA_TEXT) if (hasAttachments(intent)) { task.putTransitory(TaskAttachment.KEY, copyMultipleAttachments(intent)) + firebase.addTask("share_multiple_attachments") + } else { + firebase.addTask("share_multiple_text") } editTask(task) finish() } Intent.ACTION_VIEW == action -> lifecycleScope.launch { editTask(taskCreator.createWithValues("")) + firebase.addTask("action_view") finish() } else -> { diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt index 9ef67caf0..2298527b9 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.kt @@ -545,6 +545,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL lifecycleScope.launch { shortcutManager.reportShortcutUsed(ShortcutManager.SHORTCUT_NEW_TASK) onTaskListItemClicked(addTask("")) + firebase.addTask("fab") } } @@ -637,6 +638,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL recognizedSpeech = (recognizedSpeech.substring(0, 1).toUpperCase() + recognizedSpeech.substring(1).toLowerCase()) onTaskListItemClicked(addTask(recognizedSpeech)) + firebase.addTask("voice") } } } diff --git a/app/src/main/java/org/tasks/activities/UriHandler.kt b/app/src/main/java/org/tasks/activities/UriHandler.kt index 219e49d4f..5c5c98c39 100644 --- a/app/src/main/java/org/tasks/activities/UriHandler.kt +++ b/app/src/main/java/org/tasks/activities/UriHandler.kt @@ -49,7 +49,7 @@ class UriHandler : AppCompatActivity() { } private fun newTask() { - val intent = TaskIntents.getNewTaskIntent(this@UriHandler, null) + val intent = TaskIntents.getNewTaskIntent(this@UriHandler, null, "content_provider") intent.flags = TaskIntents.FLAGS startActivity(intent) finish() diff --git a/app/src/main/java/org/tasks/intents/TaskIntents.java b/app/src/main/java/org/tasks/intents/TaskIntents.java index 27312b67d..3cba8f2e2 100644 --- a/app/src/main/java/org/tasks/intents/TaskIntents.java +++ b/app/src/main/java/org/tasks/intents/TaskIntents.java @@ -12,12 +12,17 @@ public class TaskIntents { public static final int FLAGS = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP; - public static Intent getNewTaskIntent(Context context, @Nullable Filter filter) { + public static Intent getNewTaskIntent( + Context context, + @Nullable Filter filter, + String createSource + ) { Intent intent = new Intent(context, MainActivity.class); if (filter != null) { intent.putExtra(MainActivity.OPEN_FILTER, filter); } intent.putExtra(MainActivity.CREATE_TASK, 0L); + intent.putExtra(MainActivity.CREATE_SOURCE, createSource); intent.putExtra(MainActivity.REMOVE_TASK, true); return intent; } diff --git a/app/src/main/java/org/tasks/locale/receiver/TaskerTaskCreator.kt b/app/src/main/java/org/tasks/locale/receiver/TaskerTaskCreator.kt index 9ad296da1..88a02be36 100644 --- a/app/src/main/java/org/tasks/locale/receiver/TaskerTaskCreator.kt +++ b/app/src/main/java/org/tasks/locale/receiver/TaskerTaskCreator.kt @@ -5,6 +5,7 @@ import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task.Companion.createDueDate import com.todoroo.astrid.service.TaskCreator import org.tasks.Strings.isNullOrEmpty +import org.tasks.analytics.Firebase import org.tasks.locale.bundle.TaskCreationBundle import org.tasks.time.DateTime import org.tasks.time.DateTimeUtils @@ -18,8 +19,9 @@ import kotlin.math.min class TaskerTaskCreator @Inject internal constructor( private val taskCreator: TaskCreator, - private val taskDao: TaskDao) { - + private val taskDao: TaskDao, + private val firebase: Firebase, +) { suspend fun handle(bundle: TaskCreationBundle) { val task = taskCreator.basicQuickAddTask(bundle.title) val dueDateString = bundle.dueDate @@ -58,6 +60,7 @@ class TaskerTaskCreator @Inject internal constructor( task.notes = bundle.description taskDao.save(task) taskCreator.createTags(task) + firebase.addTask("tasker") } companion object { diff --git a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt index be9397763..811e33dc5 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt @@ -31,6 +31,7 @@ import kotlinx.coroutines.withContext import net.fortuna.ical4j.model.Recur import org.tasks.R import org.tasks.Strings +import org.tasks.analytics.Firebase import org.tasks.calendars.CalendarEventProvider import org.tasks.data.Alarm import org.tasks.data.Alarm.Companion.TYPE_RANDOM @@ -81,6 +82,7 @@ class TaskEditViewModel @Inject constructor( private val alarmService: AlarmService, private val taskListEvents: TaskListEventBus, private val mainActivityEvents: MainActivityEventBus, + private val firebase: Firebase, ) : ViewModel() { private var cleared = false @@ -384,6 +386,7 @@ class TaskEditViewModel @Inject constructor( subtask.completionDate = task.completionDate } taskDao.createNew(subtask) + firebase.addTask("subtasks") when (selectedList) { is GtasksFilter -> { val googleTask = GoogleTask(subtask.id, (selectedList as GtasksFilter).remoteId) diff --git a/app/src/main/java/org/tasks/voice/VoiceCommandActivity.kt b/app/src/main/java/org/tasks/voice/VoiceCommandActivity.kt index 5d326270f..ad2b6522b 100644 --- a/app/src/main/java/org/tasks/voice/VoiceCommandActivity.kt +++ b/app/src/main/java/org/tasks/voice/VoiceCommandActivity.kt @@ -9,6 +9,7 @@ import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.launch import org.tasks.R +import org.tasks.analytics.Firebase import org.tasks.extensions.Context.toast import org.tasks.injection.InjectingAppCompatActivity import javax.inject.Inject @@ -17,6 +18,7 @@ import javax.inject.Inject class VoiceCommandActivity : InjectingAppCompatActivity() { @Inject lateinit var taskCreator: TaskCreator @Inject @ApplicationContext lateinit var context: Context + @Inject lateinit var firebase: Firebase override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -28,6 +30,7 @@ class VoiceCommandActivity : InjectingAppCompatActivity() { ?.let { taskCreator.basicQuickAddTask(it) toast(R.string.voice_command_added_task) + firebase.addTask("note_to_self") } finish() } diff --git a/app/src/main/java/org/tasks/widget/TasksWidget.kt b/app/src/main/java/org/tasks/widget/TasksWidget.kt index 86435cbbb..2438e2e02 100644 --- a/app/src/main/java/org/tasks/widget/TasksWidget.kt +++ b/app/src/main/java/org/tasks/widget/TasksWidget.kt @@ -174,7 +174,7 @@ class TasksWidget : AppWidgetProvider() { } private fun getNewTaskIntent(context: Context, filter: Filter, widgetId: Int): PendingIntent { - val intent = TaskIntents.getNewTaskIntent(context, filter) + val intent = TaskIntents.getNewTaskIntent(context, filter, "widget") intent.action = "new_task" return PendingIntent.getActivity( context, diff --git a/app/src/main/java/org/tasks/widget/TileService.kt b/app/src/main/java/org/tasks/widget/TileService.kt index 1a3daf10b..3a47b1f48 100644 --- a/app/src/main/java/org/tasks/widget/TileService.kt +++ b/app/src/main/java/org/tasks/widget/TileService.kt @@ -5,7 +5,7 @@ import org.tasks.intents.TaskIntents class TileService : TileService() { override fun onClick() { - val newTaskIntent = TaskIntents.getNewTaskIntent(this, null) + val newTaskIntent = TaskIntents.getNewTaskIntent(this, null, "tile") .addFlags(TaskIntents.FLAGS) startActivityAndCollapse(newTaskIntent) } diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 75f3831ab..35cc4ed56 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -433,6 +433,7 @@ sync_unknown_access banner_beast banner_subscribe + add_task type map_theme picker_mode_date