Skip to content

Commit c86b29f

Browse files
authored
Merge branch 'code/cash' into dependabot/gradle/code/cash/kotlin-2.3.20
2 parents fa6feb5 + 50a7038 commit c86b29f

141 files changed

Lines changed: 3620 additions & 825 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/flipcash/app/build.gradle.kts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import com.bugsnag.gradle.dsl.debug
22
import com.bugsnag.gradle.dsl.release
3-
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension
43
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
54

65
plugins {
@@ -12,7 +11,6 @@ plugins {
1211
alias(libs.plugins.navigation.safeargs)
1312
id("dagger.hilt.android.plugin")
1413
alias(libs.plugins.google.services)
15-
alias(libs.plugins.firebase.crashlytics)
1614
alias(libs.plugins.firebase.perf)
1715
alias(libs.plugins.bugsnag.gradle)
1816
alias(libs.plugins.secrets)
@@ -65,9 +63,6 @@ android {
6563
isShrinkResources = true
6664
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
6765

68-
configure<CrashlyticsExtension> {
69-
mappingFileUploadEnabled = true
70-
}
7166
}
7267
getByName("debug") {
7368
applicationIdSuffix = ".dev"
@@ -85,9 +80,6 @@ android {
8580
)
8681
}
8782

88-
configure<CrashlyticsExtension> {
89-
mappingFileUploadEnabled = tryReadProperty(rootProject.rootDir, "DEBUG_CRASHLYTICS_UPLOAD", "false").toBooleanStrictOrNull() ?: false
90-
}
9183
}
9284
}
9385

@@ -256,7 +248,6 @@ dependencies {
256248

257249
implementation(platform(libs.firebase.bom))
258250
implementation(libs.firebase.analytics)
259-
implementation(libs.firebase.crashlytics)
260251
implementation(libs.firebase.messaging)
261252

262253
implementation(libs.mixpanel)

apps/flipcash/app/src/main/AndroidManifest.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,16 @@
245245
<meta-data android:name="photopicker_activity:0:required" android:value="" />
246246
</service>
247247

248+
<provider
249+
android:name="androidx.core.content.FileProvider"
250+
android:authorities="${applicationId}.fileprovider"
251+
android:exported="false"
252+
android:grantUriPermissions="true">
253+
<meta-data
254+
android:name="android.support.FILE_PROVIDER_PATHS"
255+
android:resource="@xml/file_paths" />
256+
</provider>
257+
248258
<provider
249259
android:name="androidx.startup.InitializationProvider"
250260
android:authorities="${applicationId}.androidx-startup"

apps/flipcash/app/src/main/kotlin/com/flipcash/app/MainActivity.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ import com.getcode.utils.CurrencyUtils
5555
import com.getcode.utils.LocalCurrencyUtils
5656
import com.getcode.utils.network.LocalNetworkObserver
5757
import com.getcode.utils.network.NetworkConnectivityListener
58-
import com.google.firebase.crashlytics.FirebaseCrashlytics
5958
import dagger.hilt.android.AndroidEntryPoint
6059
import dev.bmcreations.tipkit.engines.TipsEngine
6160
import dev.theolm.rinku.compose.ext.Rinku
@@ -187,8 +186,6 @@ private fun Activity.handleUncaughtException() {
187186
Thread.setDefaultUncaughtExceptionHandler { _, throwable ->
188187
if (BuildConfig.DEBUG) throw throwable
189188

190-
FirebaseCrashlytics.getInstance().recordException(throwable)
191-
192189
val intent = Intent(this, MainActivity::class.java).apply {
193190
putExtra(crashedKey, true)
194191
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.flipcash.app.internal.startup
2+
3+
import com.bugsnag.android.BreadcrumbType
4+
import com.bugsnag.android.Bugsnag
5+
import com.getcode.utils.BreadcrumbSink
6+
import com.getcode.utils.TraceType
7+
8+
class BugsnagBreadcrumbSink : BreadcrumbSink {
9+
override fun record(message: String, metadata: Map<String, Any>, type: TraceType) {
10+
if (!Bugsnag.isStarted()) return
11+
val breadcrumbType = type.toBugsnagBreadcrumbType() ?: return
12+
Bugsnag.leaveBreadcrumb(message, metadata, breadcrumbType)
13+
}
14+
}
15+
16+
private fun TraceType.toBugsnagBreadcrumbType(): BreadcrumbType? {
17+
return when (this) {
18+
TraceType.Silent -> null
19+
TraceType.Error -> BreadcrumbType.ERROR
20+
TraceType.Log -> BreadcrumbType.LOG
21+
TraceType.Navigation -> BreadcrumbType.NAVIGATION
22+
TraceType.Network -> BreadcrumbType.REQUEST
23+
TraceType.Process -> BreadcrumbType.PROCESS
24+
TraceType.StateChange -> BreadcrumbType.STATE
25+
TraceType.User -> BreadcrumbType.USER
26+
}
27+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.flipcash.app.internal.startup
2+
3+
import com.bugsnag.android.Bugsnag
4+
import com.getcode.utils.ErrorReporter
5+
6+
class BugsnagErrorReporter : ErrorReporter {
7+
override fun report(error: Throwable, cause: Throwable, isNotifiable: Boolean) {
8+
if (!Bugsnag.isStarted()) return
9+
Bugsnag.notify(error) { event ->
10+
if (isNotifiable) {
11+
event.addMetadata("alert", "slack_notify", true)
12+
event.addMetadata("alert", "error_type", cause.javaClass.simpleName)
13+
event.addMetadata(
14+
"alert", "error_family",
15+
cause.javaClass.enclosingClass?.simpleName ?: "Unknown"
16+
)
17+
}
18+
true
19+
}
20+
}
21+
}

apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/FirebaseInitializer.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ package com.flipcash.app.internal.startup
22

33
import android.content.Context
44
import androidx.startup.Initializer
5-
import com.flipcash.app.android.BuildConfig
65
import com.google.firebase.Firebase
7-
import com.google.firebase.crashlytics.crashlytics
86
import com.google.firebase.initialize
97
import kotlinx.coroutines.CoroutineScope
108
import kotlinx.coroutines.Dispatchers
@@ -14,7 +12,6 @@ class FirebaseInitializer: Initializer<Unit> {
1412
override fun create(context: Context) {
1513
CoroutineScope(Dispatchers.IO).launch {
1614
Firebase.initialize(context)
17-
Firebase.crashlytics.isCrashlyticsCollectionEnabled = BuildConfig.NOTIFY_ERRORS || !BuildConfig.DEBUG
1815
}
1916
}
2017

apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/startup/TraceInitializer.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,30 @@ import com.bugsnag.android.Configuration
77
import com.flipcash.app.android.BuildConfig
88
import com.flipcash.app.internal.debug.FlipcashDebugTree
99
import com.flipcash.app.internal.debug.FlipcashErrorCallback
10+
import com.getcode.utils.ErrorUtils
11+
import com.getcode.utils.TraceManager
1012
import kotlinx.coroutines.CoroutineScope
1113
import kotlinx.coroutines.Dispatchers
1214
import kotlinx.coroutines.launch
1315
import timber.log.Timber
1416

1517
class TraceInitializer: Initializer<Unit> {
1618
override fun create(context: Context) {
19+
TraceManager.initialize(context)
20+
1721
if (BuildConfig.DEBUG) {
1822
Timber.plant(FlipcashDebugTree)
1923
} else {
2024
CoroutineScope(Dispatchers.IO).launch {
2125
val config = Configuration.load(context)
2226
config.addOnError(FlipcashErrorCallback)
2327
Bugsnag.start(context, config)
28+
29+
ErrorUtils.addReporter(BugsnagErrorReporter())
30+
TraceManager.addSink(BugsnagBreadcrumbSink())
31+
TraceManager.setOnUserIdChanged { id ->
32+
Bugsnag.setUser(id, null, null)
33+
}
2434
}
2535
}
2636
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<paths>
3+
<files-path name="traces" path="traces/" />
4+
</paths>

apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ sealed interface AppRoute : NavKey, Parcelable {
136136
) : OnRamp
137137

138138
@Serializable
139-
data class AmountEntry(val mint: Mint? = null) : OnRamp
139+
data class AmountEntry(val mint: Mint) : OnRamp
140140
}
141141

142142
@Serializable

apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/android/IntentUtils.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ import android.content.pm.PackageManager
77
import android.net.Uri
88
import android.provider.MediaStore
99
import android.provider.Settings
10+
import androidx.core.content.FileProvider
1011
import androidx.core.net.toUri
1112
import com.flipcash.app.core.util.Linkify
13+
import java.io.File
1214

1315

1416
object IntentUtils {
@@ -56,4 +58,20 @@ object IntentUtils {
5658
setData(Uri.parse("https://play.google.com/store/apps/details?id=$packageName"))
5759
flags = Intent.FLAG_ACTIVITY_NEW_TASK
5860
}
61+
62+
fun shareFile(context: Context, file: File, mimeType: String): Intent {
63+
val uri = FileProvider.getUriForFile(
64+
context,
65+
"${context.packageName}.fileprovider",
66+
file
67+
)
68+
val sendIntent = Intent(Intent.ACTION_SEND).apply {
69+
putExtra(Intent.EXTRA_STREAM, uri)
70+
type = mimeType
71+
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
72+
}
73+
return Intent.createChooser(sendIntent, null).apply {
74+
flags = Intent.FLAG_ACTIVITY_NEW_TASK
75+
}
76+
}
5977
}

0 commit comments

Comments
 (0)