Skip to content

Commit b9a7e6f

Browse files
committed
Dependency segregation
1 parent 3acdc13 commit b9a7e6f

File tree

9 files changed

+59
-24
lines changed

9 files changed

+59
-24
lines changed

app/build.gradle

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ apply plugin: "com.google.devtools.ksp"
5353

5454

5555
println "Gradle uses Java ${Jvm.current()}"
56-
56+
// apply MoEngage SDK for NMC
57+
apply from: "$rootProject.projectDir/nmc_moengage-dependencies.gradle"
5758
configurations {
5859
configureEach {
5960
exclude group: "org.jetbrains", module: "annotations-java5" // via prism4j, already using annotations explicitly
@@ -435,16 +436,8 @@ dependencies {
435436

436437
implementation "io.coil-kt:coil:2.7.0"
437438

438-
// NMC: MoEngage Dependencies
439-
// core moengage features
440-
implementation(moengage.core)
441-
// optionally add this to use the Push Templates feature
442-
implementation(moengage.richNotification)
443-
// optionally add this to use the InApp feature
444-
implementation(moengage.inapp)
445-
// Required for MoEngage to provide accurate analytics based on Advertising Identifier
446-
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
447-
// NMC: end
439+
// NMC: dependency required to capture Advertising ID for Adjust & MoEngage SDK
440+
implementation "com.google.android.gms:play-services-ads-identifier:18.0.1"
448441
}
449442

450443
configurations.configureEach {

app/src/main/java/com/nmc/android/marketTracking/MoEngageSdkUtils.kt

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import com.owncloud.android.utils.MimeTypeUtil
4040
import com.owncloud.android.utils.PermissionUtil
4141
import kotlin.math.ceil
4242
import kotlin.math.floor
43+
import kotlin.math.round
4344

4445
object MoEngageSdkUtils {
4546

@@ -95,7 +96,9 @@ object MoEngageSdkUtils {
9596
.configureNotificationMetaData(
9697
NotificationConfig(
9798
R.drawable.notification_icon,
98-
R.drawable.notification_icon
99+
R.drawable.notification_icon,
100+
R.color.primary,
101+
false
99102
)
100103
)
101104
.build()
@@ -129,10 +132,9 @@ object MoEngageSdkUtils {
129132
fun captureUserAttrsForOldAppVersion(
130133
context: Context,
131134
lastSeenVersionCode: Int,
132-
isUserLoggedIn: Boolean,
133135
user: User
134136
) {
135-
if (lastSeenVersionCode in 1..OLD_VERSION_CODE && isUserLoggedIn) {
137+
if (lastSeenVersionCode in 1..OLD_VERSION_CODE && !user.isAnonymous) {
136138
fetchUserInfo(context, user)
137139
}
138140

@@ -227,9 +229,10 @@ object MoEngageSdkUtils {
227229

228230
val properties = Properties()
229231
properties.addAttribute(PROPERTIES__FILE_TYPE, getOfficeFileType(type) { getFileType(file) }.fileType)
230-
properties.addAttribute(PROPERTIES__FILE_SIZE, bytesToMB(file.fileLength).toString())
232+
properties.addAttribute(PROPERTIES__FILE_SIZE, bytesToMBInDecimal(file.fileLength).toString())
231233
properties.addAttribute(
232234
PROPERTIES__CREATION_DATE,
235+
// using modification timestamp as this will always have value
233236
file.modificationTimestamp.getFormattedStringDate(DATE_FORMAT)
234237
)
235238

@@ -244,6 +247,7 @@ object MoEngageSdkUtils {
244247
properties.addAttribute(PROPERTIES__FOLDER_TYPE, getFolderType(file).folderType)
245248
properties.addAttribute(
246249
PROPERTIES__CREATION_DATE,
250+
// using modification timestamp because for folder creationTimeStamp is always 0
247251
file.modificationTimestamp.getFormattedStringDate(DATE_FORMAT)
248252
)
249253

@@ -323,21 +327,23 @@ object MoEngageSdkUtils {
323327
private fun getCommonProperties(file: OCFile, isScan: Boolean = false): Properties {
324328
val properties = Properties()
325329
properties.addAttribute(PROPERTIES__FILE_TYPE, getFileType(file, isScan).fileType)
326-
properties.addAttribute(PROPERTIES__FILE_SIZE, bytesToMB(file.fileLength).toString())
330+
properties.addAttribute(PROPERTIES__FILE_SIZE, bytesToMBInDecimal(file.fileLength).toString())
327331
properties.addAttribute(
328332
PROPERTIES__CREATION_DATE,
333+
// using modification timestamp as this will always have value
329334
file.modificationTimestamp.getFormattedStringDate(DATE_FORMAT)
330335
)
331-
properties.addAttribute(PROPERTIES__UPLOAD_DATE, file.modificationTimestamp.getFormattedStringDate(DATE_FORMAT))
336+
properties.addAttribute(PROPERTIES__UPLOAD_DATE, (file.uploadTimestamp * 1000L).getFormattedStringDate(DATE_FORMAT))
332337
return properties
333338
}
334339

335340
private fun bytesToGB(bytes: Long): Int {
336341
return floor((bytes / GIGABYTE).toDouble()).toInt()
337342
}
338343

339-
private fun bytesToMB(bytes: Long): Int {
340-
return floor((bytes / MEGABYTE).toDouble()).toInt()
344+
private fun bytesToMBInDecimal(bytes: Long): Double {
345+
val mb = bytes.toDouble() / MEGABYTE
346+
return round((mb * 10)) / 10 // Round down to 1 decimal place
341347
}
342348

343349
private fun getFileType(file: OCFile, isScan: Boolean = false): EventFileType {
@@ -414,6 +420,9 @@ object MoEngageSdkUtils {
414420
} catch (e: AccountUtils.AccountNotFoundException) {
415421
Log_OC.e(this, "Error retrieving user info", e)
416422
return@Runnable
423+
} catch (e: SecurityException) {
424+
Log_OC.e(this, "Error retrieving user info", e)
425+
return@Runnable
417426
}
418427

419428
val result = GetUserInfoRemoteOperation().execute(nextcloudClient)

app/src/main/java/com/nmc/android/utils/FileUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ private static File getTextFileName(Context context, String fileName) {
9393
}
9494
}
9595

96-
private static File getPdfFileName(Context context, String fileName) {
96+
public static File getPdfFileName(Context context, String fileName) {
9797
File pdfFileName = getOutputMediaFile(context);
9898
if (!TextUtils.isEmpty(fileName)) {
9999
return new File(pdfFileName.getPath() + File.separator + fileName + ".pdf");
100100
} else {
101-
return new File(pdfFileName.getPath() + File.separator + FileOperationsHelper.getCapturedImageName().replace(".pdf", ".txt"));
101+
return new File(pdfFileName.getPath() + File.separator + FileOperationsHelper.getCapturedImageName().replace(".jpg", ".pdf"));
102102
}
103103
}
104104

app/src/main/java/com/owncloud/android/MainApp.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1000,7 +1000,6 @@ private void initMoEngage(){
10001000
MoEngageSdkUtils.initMoEngageSDK(this);
10011001
MoEngageSdkUtils.trackAppInstallOrUpdate(this, preferences.getLastSeenVersionCode());
10021002
MoEngageSdkUtils.captureUserAttrsForOldAppVersion(this, preferences.getLastSeenVersionCode(),
1003-
accountManager.getCurrentAccount() != null,
10041003
accountManager.getUser());
10051004
}
10061005

app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -590,8 +590,6 @@ private void onNavigationItemClicked(final MenuItem menuItem) {
590590
startActivity(UploadListActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP);
591591
} else if (itemId == R.id.nav_trashbin) {
592592
startActivity(TrashbinActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP);
593-
// NMC: track deleted files screen event
594-
MoEngageSdkUtils.trackDeletedFilesScreenEvent(this);
595593
} else if (itemId == R.id.nav_activity) {
596594
startActivity(ActivitiesActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP);
597595
} else if (itemId == R.id.nav_settings) {

app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.nextcloud.client.network.ClientFactory.CreationException
2929
import com.nextcloud.client.preferences.AppPreferences
3030
import com.nextcloud.common.NextcloudClient
3131
import com.owncloud.android.R
32+
import com.nmc.android.marketTracking.MoEngageSdkUtils
3233
import com.owncloud.android.databinding.NotificationsLayoutBinding
3334
import com.owncloud.android.datamodel.ArbitraryDataProvider
3435
import com.owncloud.android.datamodel.ArbitraryDataProviderImpl
@@ -87,6 +88,9 @@ class NotificationsActivity : AppCompatActivity(), NotificationsContract.View, I
8788
if (optionalUser?.isPresent == false) {
8889
showError()
8990
}
91+
92+
// NMC: track notification screen event
93+
MoEngageSdkUtils.trackNotificationsScreenEvent(this)
9094
}
9195

9296
private fun initUser() {

app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.nextcloud.client.network.ClientFactory.CreationException
2929
import com.nextcloud.utils.extensions.getParcelableArgument
3030
import com.nextcloud.utils.fileNameValidator.FileNameValidator
3131
import com.owncloud.android.MainApp
32+
import com.nmc.android.marketTracking.MoEngageSdkUtils
3233
import com.owncloud.android.R
3334
import com.owncloud.android.databinding.ChooseTemplateBinding
3435
import com.owncloud.android.datamodel.FileDataStorageManager
@@ -401,6 +402,12 @@ class ChooseRichDocumentsTemplateDialogFragment :
401402
putExtra(ExternalSiteWebView.EXTRA_TEMPLATE, template)
402403
}
403404

405+
// NMC: track create office file event & open event
406+
file?.let {
407+
MoEngageSdkUtils.trackCreateFileEvent(MainApp.getAppContext(), it, template.type)
408+
MoEngageSdkUtils.trackOnlineOfficeUsedEvent(MainApp.getAppContext(), it)
409+
}
410+
404411
fragment.run {
405412
startActivity(intent)
406413
dismiss()

app/src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import com.nextcloud.client.preferences.AppPreferences
3636
import com.nextcloud.client.utils.Throttler
3737
import com.nextcloud.ui.trashbinFileActions.TrashbinFileActionsBottomSheet
3838
import com.owncloud.android.R
39+
import com.nmc.android.marketTracking.MoEngageSdkUtils
3940
import com.owncloud.android.databinding.TrashbinActivityBinding
4041
import com.owncloud.android.datamodel.SyncedFolderProvider
4142
import com.owncloud.android.lib.resources.trashbin.model.TrashbinFile
@@ -135,6 +136,9 @@ class TrashbinActivity :
135136

136137
active = true
137138
setupContent()
139+
140+
// NMC: track deleted files screen event
141+
MoEngageSdkUtils.trackDeletedFilesScreenEvent(this)
138142
}
139143

140144
private fun setupContent() {

nmc_moengage-dependencies.gradle

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Nextcloud - Android Client
3+
*
4+
* SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
5+
* SPDX-License-Identifier: AGPL-3.0-or-later
6+
*/
7+
8+
android {
9+
buildTypes.each {
10+
it.buildConfigField "String", "MOENGAGE_APP_ID", "${MOENGAGE_APP_ID}"
11+
}
12+
}
13+
14+
dependencies {
15+
// core moengage features
16+
implementation(moengage.core)
17+
// optionally add this to use the Push Templates feature
18+
implementation(moengage.richNotification)
19+
// optionally add this to use the InApp feature
20+
implementation(moengage.inapp)
21+
}

0 commit comments

Comments
 (0)