Skip to content

Commit b3aac8f

Browse files
authored
Initial basic implementation of Analytics (quran#1471)
Implement analytics in such a way as to be able to swap out the implementation with a NoopImplementation for cases where we don't want to use Firebase.
1 parent 21bddef commit b3aac8f

File tree

10 files changed

+59
-0
lines changed

10 files changed

+59
-0
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ if (new File(rootDir, 'extras/extras.gradle').exists()) {
121121
}
122122

123123
dependencies {
124+
implementation project(path: ':common:analytics')
124125
implementation project(path: ':common:audio')
125126
implementation project(path: ':common:data')
126127
implementation project(path: ':common:networking')

app/pluggable.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
dependencies {
22
implementation project(path: ':pages:madani')
3+
implementation project(path: ':feature:analytics-noop')
34
}

app/src/main/java/com/quran/labs/androidquran/di/component/application/ApplicationComponent.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.quran.labs.androidquran.di.component.application;
22

3+
import com.quran.analytics.provider.AnalyticsModule;
34
import com.quran.common.networking.NetworkModule;
45
import com.quran.data.page.provider.QuranPageModule;
56
import com.quran.labs.androidquran.QuranApplication;
@@ -40,6 +41,7 @@
4041

4142
@Singleton
4243
@Component(modules = {
44+
AnalyticsModule.class,
4345
ApplicationModule.class,
4446
DatabaseModule.class,
4547
NetworkModule.class,

app/src/main/java/com/quran/labs/androidquran/ui/PagerActivity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import android.widget.ArrayAdapter;
3131
import android.widget.Toast;
3232

33+
import com.quran.analytics.AnalyticsProvider;
3334
import com.quran.data.core.QuranInfo;
3435
import com.quran.data.model.SuraAyah;
3536
import com.quran.labs.androidquran.HelpActivity;
@@ -219,6 +220,7 @@ public class PagerActivity extends QuranActionBarActivity implements
219220
@Inject QuranInfo quranInfo;
220221
@Inject QuranFileUtils quranFileUtils;
221222
@Inject AudioPresenter audioPresenter;
223+
@Inject AnalyticsProvider analyticsProvider;
222224

223225
private CompositeDisposable compositeDisposable;
224226
private final CompositeDisposable foregroundDisposable = new CompositeDisposable();

common/analytics/build.gradle

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apply plugin: 'kotlin'
2+
apply plugin: 'kotlin-kapt'
3+
4+
dependencies {
5+
implementation "androidx.annotation:annotation:${androidxAnnotationVersion}"
6+
7+
// dagger
8+
kapt deps.dagger.apt
9+
implementation deps.dagger.runtime
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.quran.analytics
2+
3+
fun interface AnalyticsProvider {
4+
fun logEvent(name: String, params: Map<String, Any>)
5+
}

feature/analytics-noop/build.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
apply plugin: 'kotlin'
2+
apply plugin: 'kotlin-kapt'
3+
4+
dependencies {
5+
implementation project(":common:analytics")
6+
implementation "androidx.annotation:annotation:${androidxAnnotationVersion}"
7+
8+
// dagger
9+
kapt deps.dagger.apt
10+
implementation deps.dagger.runtime
11+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.quran.analytics.provider
2+
3+
import com.quran.analytics.AnalyticsProvider
4+
import dagger.Binds
5+
import dagger.Module
6+
7+
@Module
8+
interface AnalyticsModule {
9+
10+
@Binds
11+
fun provideAnalyticsProvider(noopAnalyticsProvider: NoopAnalyticsProvider): AnalyticsProvider
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.quran.analytics.provider
2+
3+
import com.quran.analytics.AnalyticsProvider
4+
import javax.inject.Inject
5+
6+
class NoopAnalyticsProvider @Inject constructor() : AnalyticsProvider {
7+
8+
override fun logEvent(
9+
name: String,
10+
params: Map<String, Any>
11+
) {
12+
}
13+
}

settings.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
include ':app'
2+
include ':common:analytics'
23
include ':common:audio'
34
include ':common:data'
45
include ':common:networking'
56
include ':common:pages'
67
include ':common:search'
8+
include ':feature:analytics-noop'
79
include ':feature:audio'
810
include ':pages:madani'
911

0 commit comments

Comments
 (0)