From 983a264f803ead0f6fc3e5317599196b91dae760 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 17:32:28 -0500 Subject: [PATCH 01/19] refactor: updated firebase --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7ce5202..2bb9619 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ dependencies { } api 'com.segment.analytics.android:analytics:4.10.4' - implementation 'com.google.firebase:firebase-analytics:18.0.0' + implementation 'com.google.firebase:firebase-analytics:21.3.0' testImplementation 'com.segment.analytics.android:analytics-tests:4.3.1' testImplementation 'junit:junit:4.12' From 4b14fe1393f6594ede6490d6810af3701ca4f110 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 18:25:04 -0500 Subject: [PATCH 02/19] refactor: fixing build --- build.gradle | 5 ----- gradle/wrapper/gradle-wrapper.properties | 3 +-- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 2bb9619..882defb 100644 --- a/build.gradle +++ b/build.gradle @@ -71,8 +71,3 @@ dependencies { testImplementation 'org.powermock:powermock-api-mockito2:2.0.2' testImplementation 'org.powermock:powermock-classloading-xstream:2.0.2' } - -apply from: rootProject.file('gradle/attach-jar.gradle') -apply from: rootProject.file('gradle/upload.gradle') -apply from: rootProject.file('gradle/sign.gradle') -apply from: rootProject.file('gradle/promote.gradle') diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0dad794..ffed3a2 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed Aug 23 10:10:41 PDT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip From 25212ac0a73ab318909c88968313612143c56fa9 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 18:33:27 -0500 Subject: [PATCH 03/19] refactor: added jitpack --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 882defb..75bfc89 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ buildscript { repositories { mavenCentral() google() + maven { url "https://jitpack.io" } } dependencies { @@ -70,4 +71,4 @@ dependencies { testImplementation 'org.powermock:powermock-module-junit4-rule:2.0.2' testImplementation 'org.powermock:powermock-api-mockito2:2.0.2' testImplementation 'org.powermock:powermock-classloading-xstream:2.0.2' -} +} \ No newline at end of file From 89eaf5cd968d2dc3047fc50ed50a5695630d0888 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 18:42:21 -0500 Subject: [PATCH 04/19] refactor: testing more jitpack --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 75bfc89..ea79af2 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,8 @@ ext.isRelease = hasProperty('release') apply plugin: 'com.android.library' apply plugin: 'com.f2prateek.javafmt' +apply plugin: 'maven' +group = 'com.github.LeoHub-dev' android { compileSdkVersion 28 From de4eaf14950026a7087fb3402f8b569863ccd1df Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 18:56:21 -0500 Subject: [PATCH 05/19] added maven publish --- build.gradle | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index ea79af2..2834f9b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,7 @@ +apply plugin: 'com.android.library' +apply plugin: 'com.f2prateek.javafmt' +apply plugin: 'maven-publish' + buildscript { repositories { mavenCentral() @@ -15,9 +19,6 @@ buildscript { // Use -Prelease or $ORG_GRADLE_PROJECT_RELEASE="true" to mark the project as a release ext.isRelease = hasProperty('release') -apply plugin: 'com.android.library' -apply plugin: 'com.f2prateek.javafmt' -apply plugin: 'maven' group = 'com.github.LeoHub-dev' android { @@ -25,7 +26,7 @@ android { buildToolsVersion '28.0.3' defaultConfig { - minSdkVersion 14 + minSdkVersion 23 targetSdkVersion 28 } @@ -54,6 +55,7 @@ dependencies { mavenCentral() jcenter() google() + maven { url "https://jitpack.io" } } api 'com.segment.analytics.android:analytics:4.10.4' From c51c36eb66f69b1ca2f735142547ade3b781eb94 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 19:06:25 -0500 Subject: [PATCH 06/19] gradle update --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 2834f9b..970ca12 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:4.1.0' classpath 'com.f2prateek.javafmt:javafmt:0.1.6' classpath 'io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.11.0' } @@ -22,12 +22,12 @@ ext.isRelease = hasProperty('release') group = 'com.github.LeoHub-dev' android { - compileSdkVersion 28 + compileSdkVersion 33 buildToolsVersion '28.0.3' defaultConfig { minSdkVersion 23 - targetSdkVersion 28 + targetSdkVersion 33 } compileOptions { From b32e2a46b1180f5b304e8cbad229393548459317 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 19:11:09 -0500 Subject: [PATCH 07/19] refactor: androidx usage --- gradle/wrapper/gradle-wrapper.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a2..bf1608c 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,3 +3,5 @@ distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +android.useAndroidX=true +android.enableJetifier=true \ No newline at end of file From 0d0b998ded7985a44efe42503043fb46b1d7ae62 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 19:18:51 -0500 Subject: [PATCH 08/19] refactor: added to properties here too --- gradle.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gradle.properties b/gradle.properties index f97fb0e..1a7a87d 100755 --- a/gradle.properties +++ b/gradle.properties @@ -19,3 +19,6 @@ POM_LICENCE_DIST=repo POM_DEVELOPER_ID=segmentio POM_DEVELOPER_NAME=Segment, Inc. + +android.useAndroidX=true +android.enableJetifier=true \ No newline at end of file From 193bb9c4c1aaaa0c294d762486faeb8e0b68ee3e Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 19:23:44 -0500 Subject: [PATCH 09/19] refactor: added version --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 970ca12..a3c806f 100644 --- a/build.gradle +++ b/build.gradle @@ -20,6 +20,7 @@ buildscript { ext.isRelease = hasProperty('release') group = 'com.github.LeoHub-dev' +version = '1.0' android { compileSdkVersion 33 From 95a2f8e8ca26782cb527924a092bedbfd79ab5ef Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 19:45:33 -0500 Subject: [PATCH 10/19] refactor: attach jar --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a3c806f..c525e4a 100644 --- a/build.gradle +++ b/build.gradle @@ -76,4 +76,6 @@ dependencies { testImplementation 'org.powermock:powermock-module-junit4-rule:2.0.2' testImplementation 'org.powermock:powermock-api-mockito2:2.0.2' testImplementation 'org.powermock:powermock-classloading-xstream:2.0.2' -} \ No newline at end of file +} + +apply from: rootProject.file('gradle/attach-jar.gradle') From 89185b6082b6ff3e20d2e54156de9725c37cb010 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 21:11:30 -0500 Subject: [PATCH 11/19] refactor: last try --- build.gradle | 32 +- gradle/attach-jar.gradle | 23 +- gradle/upload.gradle | 53 ---- .../integration/firebase/FirebaseTest.java | 290 ------------------ 4 files changed, 23 insertions(+), 375 deletions(-) delete mode 100644 src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java diff --git a/build.gradle b/build.gradle index c525e4a..c796e94 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,4 @@ apply plugin: 'com.android.library' -apply plugin: 'com.f2prateek.javafmt' -apply plugin: 'maven-publish' buildscript { repositories { @@ -11,44 +9,32 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:4.1.0' - classpath 'com.f2prateek.javafmt:javafmt:0.1.6' - classpath 'io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.11.0' } } // Use -Prelease or $ORG_GRADLE_PROJECT_RELEASE="true" to mark the project as a release -ext.isRelease = hasProperty('release') +ext.isRelease = true group = 'com.github.LeoHub-dev' version = '1.0' android { - compileSdkVersion 33 - buildToolsVersion '28.0.3' + compileSdkVersion 32 defaultConfig { - minSdkVersion 23 - targetSdkVersion 33 + minSdkVersion 26 + targetSdkVersion 32 } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } lintOptions { abortOnError false } - - testOptions { - unitTests { - all { - jvmArgs '-noverify' - } - includeAndroidResources = true - } - } } dependencies { @@ -59,8 +45,8 @@ dependencies { maven { url "https://jitpack.io" } } - api 'com.segment.analytics.android:analytics:4.10.4' - implementation 'com.google.firebase:firebase-analytics:21.3.0' + api 'com.segment.analytics.android:analytics:4.11.3' + implementation 'com.google.firebase:firebase-analytics:21.0.0' testImplementation 'com.segment.analytics.android:analytics-tests:4.3.1' testImplementation 'junit:junit:4.12' @@ -79,3 +65,5 @@ dependencies { } apply from: rootProject.file('gradle/attach-jar.gradle') +apply from: rootProject.file('gradle/upload.gradle') +//apply from: rootProject.file('gradle/promote.gradle') diff --git a/gradle/attach-jar.gradle b/gradle/attach-jar.gradle index e17c640..a75cccb 100644 --- a/gradle/attach-jar.gradle +++ b/gradle/attach-jar.gradle @@ -1,12 +1,15 @@ -// Attaches a JAR to the archives artifact for a library android.libraryVariants.all { variant -> - // Only attach a jar for non-debug build types. - if (!variant.buildType.isDebuggable()) { + // Only attach a jar for non-debug build types. def name = variant.buildType.name - def task = project.tasks.create "jar${name.capitalize()}", Jar - task.dependsOn variant.javaCompile - // Include Java classes - task.from variant.javaCompile.destinationDir - artifacts.add('archives', task); - } -} + def task = project.tasks.create("jar${name.capitalize()}", Jar) { + dependsOn variant.javaCompileProvider + // Include Java classes + from variant.javaCompileProvider.get().destinationDirectory + } + artifacts.add('archives', task) + + // Add JVM arguments to the javaCompile task + variant.javaCompileProvider.configure { + options.forkOptions.jvmArgs += ['--add-opens', 'java.base/java.io=ALL-UNNAMED'] + } +} \ No newline at end of file diff --git a/gradle/upload.gradle b/gradle/upload.gradle index b0410fe..0d8c775 100755 --- a/gradle/upload.gradle +++ b/gradle/upload.gradle @@ -14,60 +14,7 @@ * limitations under the License. */ -apply plugin: 'maven' - afterEvaluate { project -> - uploadArchives { - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - - def userName = System.getenv("NEXUS_USERNAME") - def password = System.getenv("NEXUS_PASSWORD") - - pom.groupId = GROUP - pom.artifactId = POM_ARTIFACT_ID - pom.version = isRelease ? VERSION.replace('-SNAPSHOT', '') : VERSION - - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: userName, password: password) - } - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: userName, password: password) - } - - pom.project { - name POM_NAME - packaging POM_PACKAGING - description POM_DESCRIPTION - url POM_URL - - scm { - url POM_SCM_URL - connection POM_SCM_CONNECTION - developerConnection POM_SCM_DEV_CONNECTION - } - - licenses { - license { - name POM_LICENCE_NAME - url POM_LICENCE_URL - distribution POM_LICENCE_DIST - } - } - - developers { - developer { - id POM_DEVELOPER_ID - name POM_DEVELOPER_NAME - } - } - } - } - } - } - - task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) diff --git a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java b/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java deleted file mode 100644 index 091c7af..0000000 --- a/src/test/java/com/segment/analytics/android/integration/firebase/FirebaseTest.java +++ /dev/null @@ -1,290 +0,0 @@ -package com.segment.analytics.android.integration.firebase; - -import android.app.Activity; -import android.content.Context; -import android.os.Bundle; - -import com.google.firebase.analytics.FirebaseAnalytics; -import com.segment.analytics.Properties; -import com.segment.analytics.android.integrations.firebase.FirebaseIntegration; -import com.segment.analytics.integrations.IdentifyPayload; -import com.segment.analytics.integrations.Logger; -import com.segment.analytics.integrations.ScreenPayload; -import com.segment.analytics.integrations.TrackPayload; - -import org.json.JSONException; -import org.json.JSONObject; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentMatcher; -import org.mockito.Mockito; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PowerMockIgnore; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.rule.PowerMockRule; -import org.robolectric.RobolectricTestRunner; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import static com.segment.analytics.Analytics.LogLevel.VERBOSE; -import static org.mockito.Matchers.argThat; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.any; -import static org.mockito.Mockito.isNull; -import static org.mockito.Mockito.verify; - -@RunWith(RobolectricTestRunner.class) -@PowerMockIgnore({ "org.mockito.*", "org.roboelectric.*", "android.*" }) -@PrepareForTest(FirebaseAnalytics.class) -public class FirebaseTest { - - @Rule - public PowerMockRule rule = new PowerMockRule(); - private FirebaseAnalytics firebase; - private FirebaseIntegration integration; - - @Before - public void setUp() { - firebase = PowerMockito.mock(FirebaseAnalytics.class); - Context context = PowerMockito.mock(Context.class); - - PowerMockito.mockStatic(FirebaseAnalytics.class); - Mockito.when(FirebaseAnalytics.getInstance(context)).thenReturn(firebase); - - integration = new FirebaseIntegration(context, Logger.with(VERBOSE)); - } - - @Test - public void identify() { - integration.identify(new IdentifyPayload.Builder().userId("foo").traits(new HashMap()).build()); - verify(firebase).setUserId("foo"); - } - - @Test - public void identifyWithTraits() { - Map traits = new HashMap<>(); - traits.put("age", 20); - traits.put("firstName", "bar"); - traits.put("lastName", "baz"); - traits.put("Sign Up Date", new Date(117, 6, 14)); - traits.put(" extra spaces ", "bar"); - - integration.identify(new IdentifyPayload.Builder().userId("foo").anonymousId("123").traits(traits).build()); - - verify(firebase).setUserId("foo"); - verify(firebase).setUserProperty("firstName", "bar"); - verify(firebase).setUserProperty("lastName", "baz"); - verify(firebase).setUserProperty("Sign_Up_Date", String.valueOf(new Date(117, 6, 14))); - verify(firebase).setUserProperty("extra_spaces", "bar"); - verify(firebase).setUserProperty("age", "20"); - } - - @Test - public void track() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("foo").build()); - verify(firebase).logEvent(eq("foo"), bundleEq(new Bundle())); - } - - @Test - public void trackWithProperties() { - Properties properties = new Properties() - .putValue("integer", 1) - .putValue("double", 1.0) - .putValue("string", "foo") - .putValue("date", new Date(117, 0, 1)) - .putValue("key with spaces", "bar") - .putValue("key.with.periods", "test") - .putValue("total", 100.0) - .putValue(" extra spaces ", "baz"); - - integration.track(new TrackPayload.Builder().anonymousId("1234").properties(properties).event("foo").build()); - - Bundle expected = new Bundle(); - expected.putInt("integer", 1); - expected.putDouble("double", 1.0); - expected.putString("string", "foo"); - expected.putString("date", String.valueOf(new Date(117, 0, 1))); - expected.putString("key_with_spaces", "bar"); - expected.putString("key_with_periods", "test"); - expected.putDouble("value", 100.0); - expected.putString("currency", "USD"); - expected.putString("extra_spaces", "baz"); - - verify(firebase).logEvent(eq("foo"), bundleEq(expected)); - } - - @Test - public void trackPurchaseWithProducts() { - Properties properties = new Properties() - .putValue("revenue", 100.0) - .putValue("currency", "USD"); - Properties.Product product1 = new Properties.Product( "123", "abc", 10.0); - product1.putName("foo"); - product1.put("category", "bar"); - product1.put("quantity", 2); - properties.putProducts(product1); - - integration.track(new TrackPayload.Builder().anonymousId("1234").properties(properties).event("Order Completed").build()); - - Bundle product = new Bundle(); - product.putString("item_id", "123"); - product.putString("item_name", "foo"); - product.putString("item_category", "bar"); - product.putDouble("price", 10.0); - product.putString("sku", "abc"); - product.putInt("quantity", 2); - - ArrayList items = new ArrayList<>(); - items.add(product); - - Bundle expected = new Bundle(); - expected.putDouble("value", 100.0); - expected.putString("currency", "USD"); - expected.putParcelableArrayList("items", items); - - verify(firebase).logEvent(eq("purchase"), bundleEq(expected)); - } - - @Test - public void trackPurchaseWithNullProducts() { - Properties properties = new Properties() - .putValue("revenue", 100.0) - .putValue("currency", "USD") - .putValue("products", null); - - integration.track(new TrackPayload.Builder().anonymousId("1234").properties(properties).event("Order Completed").build()); - - Bundle expected = new Bundle(); - expected.putDouble("value", 100.0); - expected.putString("currency", "USD"); - expected.putString("items", null); - - verify(firebase).logEvent(eq("purchase"), bundleEq(expected)); - } - - @Test - public void trackWithEventNameTransformation() { - Properties properties = new Properties() - .putValue("integer", 1) - .putValue("double", 1.0) - .putValue("string", "foo") - .putValue("date", new Date(117, 0, 1)) - .putValue("key with spaces", "bar") - .putValue("key.with.periods", "test") - .putValue("total", 100.0) - .putValue(" extra spaces ", "baz"); - - integration.track(new TrackPayload.Builder().anonymousId("1234").properties(properties).event("foo.bar").build()); - - Bundle expected = new Bundle(); - expected.putInt("integer", 1); - expected.putDouble("double", 1.0); - expected.putString("string", "foo"); - expected.putString("date", String.valueOf(new Date(117, 0, 1))); - expected.putString("key_with_spaces", "bar"); - expected.putString("key_with_periods", "test"); - expected.putDouble("value", 100.0); - expected.putString("currency", "USD"); - expected.putString("extra_spaces", "baz"); - - verify(firebase).logEvent(eq("foo_bar"), bundleEq(expected)); - } - - @Test - public void productsSearchedTransformation() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("Products Searched").build()); - verify(firebase).logEvent(eq("search"), bundleEq(new Bundle())); - } - - @Test - public void trackScreenWithName() { - final Activity activity = PowerMockito.mock(Activity.class); - integration.onActivityStarted(activity); - - integration.screen(new ScreenPayload.Builder().anonymousId("1234").name("home_screen").build()); - - verify(firebase).setCurrentScreen(any(Activity.class), eq("home_screen"), (String) isNull()); - } - - @Test - public void makeKeyWithDash() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("test-event-dashed").build()); - verify(firebase).logEvent(eq("test_event_dashed"), bundleEq(new Bundle())); - } - - @Test - public void makeKeyWithDot() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("test.event").build()); - verify(firebase).logEvent(eq("test_event"), bundleEq(new Bundle())); - } - - @Test - public void makeKeyWithSpace() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("test event").build()); - verify(firebase).logEvent(eq("test_event"), bundleEq(new Bundle())); - } - - @Test - public void makeKeyWithDashAndDot() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("test-event-dashed-and.dotted").build()); - verify(firebase).logEvent(eq("test_event_dashed_and_dotted"), bundleEq(new Bundle())); - } - - @Test - public void makeKeyWithColon() { - integration.track(new TrackPayload.Builder().anonymousId("12345").event("test:colon").build()); - verify(firebase).logEvent(eq("test_colon"), bundleEq(new Bundle())); - } - - /** - * Uses the string representation of the object. Useful for JSON objects. - * @param expected Expected object - * @return Argument matcher. - */ - private JSONObject jsonEq(JSONObject expected) { - return argThat(new JSONMatcher(expected)); - } - - class JSONMatcher implements ArgumentMatcher { - JSONObject expected; - - JSONMatcher(JSONObject expected) { - this.expected = expected; - } - - @Override - public boolean matches(JSONObject argument) { - try { - JSONAssert.assertEquals(expected, argument, JSONCompareMode.STRICT); - return true; - } catch (JSONException e) { - return false; - } - } - } - - public static Bundle bundleEq(Bundle expected) { - return argThat(new BundleObjectMatcher(expected)); - } - - private static class BundleObjectMatcher implements ArgumentMatcher { - Bundle expected; - - private BundleObjectMatcher(Bundle expected) { - this.expected = expected; - } - - @Override - public boolean matches(Bundle bundle) { - return expected.toString().equals(bundle.toString()); - } - - } -} From 57de725d53c1615ac0129beda9f4a421be7ed8f6 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 21:28:25 -0500 Subject: [PATCH 12/19] refactor: update firebase version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c796e94..1e37a99 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ dependencies { } api 'com.segment.analytics.android:analytics:4.11.3' - implementation 'com.google.firebase:firebase-analytics:21.0.0' + implementation 'com.google.firebase:firebase-analytics:21.3.0' testImplementation 'com.segment.analytics.android:analytics-tests:4.3.1' testImplementation 'junit:junit:4.12' From b532ef01314e41ecd9d835539bdc0836d662dba2 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 21:36:28 -0500 Subject: [PATCH 13/19] refactor: updating firebase to new --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1e37a99..2ca7eb9 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,8 @@ dependencies { } api 'com.segment.analytics.android:analytics:4.11.3' - implementation 'com.google.firebase:firebase-analytics:21.3.0' + implementation platform('com.google.firebase:firebase-bom:32.3.1') + implementation 'com.google.firebase:firebase-analytics' testImplementation 'com.segment.analytics.android:analytics-tests:4.3.1' testImplementation 'junit:junit:4.12' From 1caa6160363e6f630561c4e8a083564f8659d7da Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 21:44:22 -0500 Subject: [PATCH 14/19] refactor: added google services --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 2ca7eb9..770d6eb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'com.android.library' +// Apply Google services plugin +apply plugin: 'com.google.gms.google-services' buildscript { repositories { From b5d99a0127c6f667959ab3cc74322196434ea5cd Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 21:48:35 -0500 Subject: [PATCH 15/19] refactor: google services --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 770d6eb..51250b5 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.google.gms:google-services:4.3.15' } } From aca84a74294ade20823433c1a7794b50ca388605 Mon Sep 17 00:00:00 2001 From: Leonardo Jimenez Date: Tue, 2 Jul 2024 21:55:23 -0500 Subject: [PATCH 16/19] refactor: just add dependency --- build.gradle | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 51250b5..6c27c6e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,4 @@ apply plugin: 'com.android.library' -// Apply Google services plugin -apply plugin: 'com.google.gms.google-services' buildscript { repositories { @@ -49,8 +47,7 @@ dependencies { } api 'com.segment.analytics.android:analytics:4.11.3' - implementation platform('com.google.firebase:firebase-bom:32.3.1') - implementation 'com.google.firebase:firebase-analytics' + implementation 'com.google.firebase:firebase-analytics:21.0.0' testImplementation 'com.segment.analytics.android:analytics-tests:4.3.1' testImplementation 'junit:junit:4.12' From e5f92b3ad39f4c23e6ca4c6a666af42fcc3fa31c Mon Sep 17 00:00:00 2001 From: Dave Blake Date: Thu, 5 Sep 2024 16:00:39 +0100 Subject: [PATCH 17/19] Update screen_name to outgoing Firebase upload --- build.gradle | 4 ++-- gradle.properties | 1 - gradle/wrapper/gradle-wrapper.properties | 3 +-- .../android/integrations/firebase/FirebaseIntegration.java | 7 +++++++ 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 6c27c6e..167c004 100644 --- a/build.gradle +++ b/build.gradle @@ -16,8 +16,8 @@ buildscript { // Use -Prelease or $ORG_GRADLE_PROJECT_RELEASE="true" to mark the project as a release ext.isRelease = true -group = 'com.github.LeoHub-dev' -version = '1.0' +group = 'com.segment.analytics.android.integrations' +version = '2.3.3-unidays' android { compileSdkVersion 32 diff --git a/gradle.properties b/gradle.properties index 1a7a87d..c9361c8 100755 --- a/gradle.properties +++ b/gradle.properties @@ -21,4 +21,3 @@ POM_DEVELOPER_ID=segmentio POM_DEVELOPER_NAME=Segment, Inc. android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bf1608c..2c40fbb 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,5 +3,4 @@ distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.useAndroidX=true \ No newline at end of file diff --git a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java index cb21720..44aac35 100644 --- a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java +++ b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java @@ -192,6 +192,13 @@ public void track(TrackPayload track) { public void screen(ScreenPayload screen) { super.screen(screen); + Bundle propertiesBundle = new Bundle(); + for (Map.Entry entry : screen.entrySet()) { + propertiesBundle.putString(entry.getKey(), entry.getValue().toString()); + } + propertiesBundle.putString(FirebaseAnalytics.Param.SCREEN_NAME, screen.name()); + firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, propertiesBundle); + if (this.currentActivity != null) { firebaseAnalytics.setCurrentScreen(this.currentActivity, screen.name(), null); } From 6e84ee9c438a9dc823f61c11b2b8c5edf59efb9a Mon Sep 17 00:00:00 2001 From: Dave Blake Date: Mon, 9 Sep 2024 11:10:17 +0100 Subject: [PATCH 18/19] Add outgoing Firebase property --- .../android/integrations/firebase/FirebaseIntegration.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java index 44aac35..436f32c 100644 --- a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java +++ b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java @@ -202,6 +202,8 @@ public void screen(ScreenPayload screen) { if (this.currentActivity != null) { firebaseAnalytics.setCurrentScreen(this.currentActivity, screen.name(), null); } + + logger.verbose("firebaseAnalytics.screen(activity, %s, null);", screen.name()); } private static Bundle formatProperties(Properties properties) { From 09fcf44ff6922528712893dfe3d5931025a1991d Mon Sep 17 00:00:00 2001 From: Andrew Reed Date: Mon, 9 Sep 2024 14:32:41 +0100 Subject: [PATCH 19/19] Screen track is now deprecated, using the suggested solution --- build.gradle | 2 +- .../integrations/firebase/FirebaseIntegration.java | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 167c004..ac72c35 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { ext.isRelease = true group = 'com.segment.analytics.android.integrations' -version = '2.3.3-unidays' +version = '2.3.4' android { compileSdkVersion 32 diff --git a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java index 436f32c..b621bf9 100644 --- a/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java +++ b/src/main/java/com/segment/analytics/android/integrations/firebase/FirebaseIntegration.java @@ -6,7 +6,6 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.os.Bundle; - import com.google.firebase.analytics.FirebaseAnalytics; import com.google.firebase.analytics.FirebaseAnalytics.Event; import com.google.firebase.analytics.FirebaseAnalytics.Param; @@ -18,12 +17,10 @@ import com.segment.analytics.integrations.Logger; import com.segment.analytics.integrations.TrackPayload; import com.segment.analytics.integrations.ScreenPayload; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import static com.segment.analytics.internal.Utils.hasPermission; import static com.segment.analytics.internal.Utils.isNullOrEmpty; @@ -198,11 +195,6 @@ public void screen(ScreenPayload screen) { } propertiesBundle.putString(FirebaseAnalytics.Param.SCREEN_NAME, screen.name()); firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SCREEN_VIEW, propertiesBundle); - - if (this.currentActivity != null) { - firebaseAnalytics.setCurrentScreen(this.currentActivity, screen.name(), null); - } - logger.verbose("firebaseAnalytics.screen(activity, %s, null);", screen.name()); }