diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7fc2e2519f..4ce7ef30a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Adding secret files uses: ./.github/actions/add-secret-files diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3836996911..2899e81b02 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -70,7 +70,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -89,7 +89,7 @@ jobs: run: ./gradlew assemble${{ env.BUILD_TYPE }} - name: Upload Android ${{ env.BUILD_TYPE }} Artifacts - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 if: github.event_name == 'push' || github.event_name == 'schedule' with: name: androidArtifacts @@ -138,7 +138,7 @@ jobs: file: huawei/${{ env.BUILD_TYPE_LOWERCASE }}/app-huawei-${{ env.BUILD_TYPE_LOWERCASE }}.apk - name: Delete Android ${{ env.BUILD_TYPE }} Artifacts - uses: geekyeggo/delete-artifact@v5.0.0 + uses: geekyeggo/delete-artifact@v5.1.0 with: name: androidArtifacts @@ -153,7 +153,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -173,14 +173,16 @@ jobs: run: fastlane build${{ env.BUILD_TYPE }} - name: Upload iOS Debug Artifacts - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 if: github.event_name == 'push' with: name: iOSArtifacts - path: ios/CCC_I.ipa + path: | + ios/CCC_I.ipa + ios/CCC_I.app.dSYM.zip - name: Upload iOS Artifacts - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 if: github.event_name == 'schedule' with: name: iOSArtifacts @@ -220,7 +222,7 @@ jobs: fastlane distribute${{ env.BUILD_TYPE }} - name: Delete iOS ${{ env.BUILD_TYPE }} Artifacts - uses: geekyeggo/delete-artifact@v5.0.0 + uses: geekyeggo/delete-artifact@v5.1.0 with: name: iOSArtifacts @@ -235,7 +237,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Test run: ./gradlew test @@ -255,7 +257,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Generate Coverage run: ./gradlew koverXmlReport @@ -273,7 +275,7 @@ jobs: coverage-reports: build/reports/kover/report.xml - name: SonarCloud Scan - uses: sonarsource/sonarcloud-github-action@v2.3.0 + uses: sonarsource/sonarcloud-github-action@v3.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} @@ -298,7 +300,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Detekt & Lint run: ./gradlew detektAll lint diff --git a/.github/workflows/project.yml b/.github/workflows/project.yml index b4ac5b16aa..0807b6b1df 100644 --- a/.github/workflows/project.yml +++ b/.github/workflows/project.yml @@ -14,7 +14,7 @@ on: jobs: ProjectAutomations: - uses: Oztechan/Global/.github/workflows/reusable-project.yml@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/.github/workflows/reusable-project.yml@f2926167f4c8103dca1abd9cf2908c83733e1898 with: project_id: 2 secrets: inherit diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c49bf04150..f6003fbe2c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,7 +8,7 @@ on: jobs: PublishRelease: - uses: Oztechan/Global/.github/workflows/reusable-publish.yml@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/.github/workflows/reusable-publish.yml@f2926167f4c8103dca1abd9cf2908c83733e1898 with: slack_channel: "ccc-github" secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3c5be2331..8ad471d483 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,7 @@ jobs: steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Adding secret files uses: ./.github/actions/add-secret-files @@ -80,19 +80,19 @@ jobs: run: ./gradlew :android:app:bundleRelease :backend:app:jar --parallel - name: Upload Google App Bundle - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 with: name: googleBundle path: android/app/build/outputs/bundle/googleRelease/app-google-release.aab - name: Upload Huawei App Bundle - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 with: name: huaweiBundle path: android/app/build/outputs/bundle/huaweiRelease/app-huawei-release.aab - name: Upload Backend Jar - uses: actions/upload-artifact@v4.3.6 + uses: actions/upload-artifact@v4.4.0 with: name: backendJar path: backend/app/build/libs/app-*.jar @@ -139,7 +139,7 @@ jobs: status: completed - name: Delete App Bundle - uses: geekyeggo/delete-artifact@v5.0.0 + uses: geekyeggo/delete-artifact@v5.1.0 with: name: googleBundle @@ -170,7 +170,7 @@ jobs: file-name: "app-huawei-release" - name: Delete App Bundle - uses: geekyeggo/delete-artifact@v5.0.0 + uses: geekyeggo/delete-artifact@v5.1.0 with: name: huaweiBundle @@ -201,7 +201,7 @@ jobs: SOURCE: "artifact/" - name: Delete Backend Jar - uses: geekyeggo/delete-artifact@v5.0.0 + uses: geekyeggo/delete-artifact@v5.1.0 with: name: backendJar @@ -215,7 +215,7 @@ jobs: status: ${{ steps.status.outputs.status }} steps: - name: Setup Gradle Repo - uses: Oztechan/Global/actions/setup-gradle-repo@007659c3464bb29eeaaed0abfd2822af806dfe1e + uses: Oztechan/Global/actions/setup-gradle-repo@f2926167f4c8103dca1abd9cf2908c83733e1898 - name: Adding secret files uses: ./.github/actions/add-secret-files diff --git a/android/app/src/main/kotlin/com/oztechan/ccc/android/app/Application.kt b/android/app/src/main/kotlin/com/oztechan/ccc/android/app/Application.kt index 2fb5fa644a..d02b67f53b 100644 --- a/android/app/src/main/kotlin/com/oztechan/ccc/android/app/Application.kt +++ b/android/app/src/main/kotlin/com/oztechan/ccc/android/app/Application.kt @@ -10,8 +10,8 @@ import android.os.StrictMode.ThreadPolicy import android.os.StrictMode.VmPolicy import co.touchlab.kermit.Logger import com.github.submob.logmob.ANRWatchDogHandler +import com.github.submob.logmob.enableCrashlyticsCollection import com.github.submob.logmob.initLogger -import com.github.submob.logmob.setCrashlyticsCollection import com.oztechan.ccc.android.app.di.initKoin import com.oztechan.ccc.client.core.analytics.initAnalytics @@ -20,11 +20,9 @@ class Application : Application() { override fun onCreate() { super.onCreate() - setCrashlyticsCollection(!BuildConfig.DEBUG) + enableCrashlyticsCollection() - if (!BuildConfig.DEBUG) { - initAnalytics(this) - } + initAnalytics(this) initLogger() diff --git a/android/ui/mobile/src/main/ic_launcher-playstore.png b/android/ui/mobile/src/main/ic_launcher-playstore.png index dd96003a26..10b902d8a4 100644 Binary files a/android/ui/mobile/src/main/ic_launcher-playstore.png and b/android/ui/mobile/src/main/ic_launcher-playstore.png differ diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/calculator/CalculatorFragment.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/calculator/CalculatorFragment.kt index 2ca511c744..5d0b1fa8b5 100755 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/calculator/CalculatorFragment.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/calculator/CalculatorFragment.kt @@ -9,6 +9,7 @@ import android.view.View import android.widget.Button import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.findNavController import co.touchlab.kermit.Logger import com.github.submob.basemob.fragment.BaseVBFragment import com.oztechan.ccc.android.core.ad.AdManager @@ -19,7 +20,6 @@ import com.oztechan.ccc.android.ui.mobile.util.copyToClipBoard import com.oztechan.ccc.android.ui.mobile.util.dataState import com.oztechan.ccc.android.ui.mobile.util.destroyBanner import com.oztechan.ccc.android.ui.mobile.util.getFromClipBoard -import com.oztechan.ccc.android.ui.mobile.util.getNavigationResult import com.oztechan.ccc.android.ui.mobile.util.setBackgroundByName import com.oztechan.ccc.android.ui.mobile.util.setBannerAd import com.oztechan.ccc.android.ui.mobile.util.showSnack @@ -55,7 +55,6 @@ class CalculatorFragment : BaseVBFragment() { binding.observeStates() binding.setListeners() observeEffects() - observeNavigationResults() } override fun onResume() { @@ -76,14 +75,6 @@ class CalculatorFragment : BaseVBFragment() { super.onDestroyView() } - private fun observeNavigationResults() = getNavigationResult( - CHANGE_BASE_EVENT, - R.id.calculatorFragment - )?.observe(viewLifecycleOwner) { - Logger.i { "CalculatorFragment observeNavigationResults $it" } - viewModel.event.onBaseChange(it) - } - private fun FragmentCalculatorBinding.initViews() { adViewContainer.setBannerAd( adManager = adManager, @@ -200,13 +191,15 @@ class CalculatorFragment : BaseVBFragment() { ac.setKeyboardListener() del.setKeyboardListener() } + + findNavController().addOnDestinationChangedListener { _, navDestination, _ -> + if (navDestination.id == R.id.calculatorFragment) { + onSheetDismissed() + } + } } private fun Button.setKeyboardListener() = setOnClickListener { viewModel.event.onKeyPress(text.toString()) } - - companion object { - const val CHANGE_BASE_EVENT = "change_base" - } } diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/currencies/CurrenciesFragment.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/currencies/CurrenciesFragment.kt index 66602b4fee..43470dd5c1 100755 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/currencies/CurrenciesFragment.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/currencies/CurrenciesFragment.kt @@ -18,12 +18,10 @@ import com.github.submob.basemob.fragment.BaseVBFragment import com.oztechan.ccc.android.core.ad.AdManager import com.oztechan.ccc.android.ui.mobile.BuildConfig import com.oztechan.ccc.android.ui.mobile.R -import com.oztechan.ccc.android.ui.mobile.content.calculator.CalculatorFragment.Companion.CHANGE_BASE_EVENT import com.oztechan.ccc.android.ui.mobile.databinding.FragmentCurrenciesBinding import com.oztechan.ccc.android.ui.mobile.util.destroyBanner import com.oztechan.ccc.android.ui.mobile.util.hideKeyboard import com.oztechan.ccc.android.ui.mobile.util.setBannerAd -import com.oztechan.ccc.android.ui.mobile.util.setNavigationResult import com.oztechan.ccc.android.ui.mobile.util.showSnack import com.oztechan.ccc.android.ui.mobile.util.visibleIf import com.oztechan.ccc.client.core.analytics.AnalyticsManager @@ -131,12 +129,6 @@ class CurrenciesFragment : BaseVBFragment() { findNavController().popBackStack() view?.hideKeyboard() } - - is CurrenciesEffect.ChangeBase -> setNavigationResult( - R.id.calculatorFragment, - viewEffect.newBase, - CHANGE_BASE_EVENT - ) } }.launchIn(viewLifecycleOwner.lifecycleScope) diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/main/MainActivity.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/main/MainActivity.kt index 44068df877..6d3e6e666d 100755 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/main/MainActivity.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/main/MainActivity.kt @@ -105,12 +105,12 @@ class MainActivity : BaseActivity() { override fun onResume() { super.onResume() Logger.i { "MainActivity onResume" } - viewModel.event.onResume() + viewModel.event.onAppForeground() } override fun onPause() { Logger.i { "MainActivity onPause" } - viewModel.event.onPause() + viewModel.event.onAppBackground() super.onPause() } diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/premium/PremiumBottomSheet.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/premium/PremiumBottomSheet.kt index fd003dc6af..3b7e4922d4 100644 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/premium/PremiumBottomSheet.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/premium/PremiumBottomSheet.kt @@ -4,6 +4,7 @@ package com.oztechan.ccc.android.ui.mobile.content.premium +import android.content.Intent import android.os.Bundle import android.view.View import androidx.lifecycle.flowWithLifecycle @@ -15,8 +16,8 @@ import com.oztechan.ccc.android.core.billing.BillingEffect import com.oztechan.ccc.android.core.billing.BillingManager import com.oztechan.ccc.android.ui.mobile.BuildConfig import com.oztechan.ccc.android.ui.mobile.R +import com.oztechan.ccc.android.ui.mobile.content.main.MainActivity import com.oztechan.ccc.android.ui.mobile.databinding.BottomSheetPremiumBinding -import com.oztechan.ccc.android.ui.mobile.util.resolveAndStartIntent import com.oztechan.ccc.android.ui.mobile.util.showDialog import com.oztechan.ccc.android.ui.mobile.util.showSnack import com.oztechan.ccc.android.ui.mobile.util.toOldPurchaseList @@ -112,6 +113,7 @@ class PremiumBottomSheet : BaseVBBottomSheetDialogFragment billingManager.consumePurchase(viewEffect.token) } }.launchIn(viewLifecycleOwner.lifecycleScope) @@ -156,8 +158,10 @@ class PremiumBottomSheet : BaseVBBottomSheetDialogFragment Logger.i { "SelectCurrencyBottomSheet observeEffects ${viewEffect::class.simpleName}" } when (viewEffect) { - is SelectCurrencyEffect.CurrencyChange -> { - setNavigationResult( - R.id.calculatorFragment, - viewEffect.newBase, - CHANGE_BASE_EVENT - ) - dismissDialog() - } + is SelectCurrencyEffect.CurrencySelected -> dismissDialog() SelectCurrencyEffect.OpenCurrencies -> navigate( R.id.selectCurrencyBottomSheet, diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatcherItem.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatcherItem.kt index 0d72d5174c..fd6f8408eb 100644 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatcherItem.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatcherItem.kt @@ -35,7 +35,7 @@ import com.oztechan.ccc.common.core.model.Watcher fun WatcherItem( watcher: Watcher, onRateChange: (String) -> Unit, - onBaseClick: () -> Unit, + onSourceClick: () -> Unit, onTargetClick: () -> Unit ) { val itemPadding: Dp = 2.dp @@ -54,16 +54,16 @@ fun WatcherItem( ) Text( - text = watcher.base, + text = watcher.source, modifier = Modifier.padding(itemPadding), ) ImageView( - painter = watcher.base.getImageIdByName().toPainter(), + painter = watcher.source.getImageIdByName().toPainter(), modifier = Modifier .size(itemHeight) .padding(itemPadding) - .clickable { onBaseClick() } + .clickable { onSourceClick() } ) Text( @@ -109,13 +109,13 @@ fun WatcherItemPreview() = Preview { WatcherItem( watcher = Watcher( id = 0, - base = "EUR", + source = "EUR", target = "USD", isGreater = false, rate = 123456789.0 ), onRateChange = {}, - onBaseClick = {}, + onSourceClick = {}, onTargetClick = {} ) } diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatchersView.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatchersView.kt index cc7cd5f44a..fbf82d5c83 100644 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatchersView.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/content/watchers/WatchersView.kt @@ -55,8 +55,8 @@ fun WatchersView( onRateChange = { rate -> event.onRateChange(it, rate) }, - onBaseClick = { - event.onBaseClick(it) + onSourceClick = { + event.onSourceClick(it) }, onTargetClick = { event.onTargetClick(it) @@ -98,16 +98,22 @@ fun WatchersViewPreview() = Preview { WatchersState( isBannerAdVisible = false, watcherList = listOf( - Watcher(id = 0, base = "EUR", target = "USD", isGreater = false, rate = 123.0), - Watcher(id = 0, base = "USD", target = "EUR", isGreater = false, rate = 123.0) + Watcher( + id = 0, + source = "EUR", + target = "USD", + isGreater = false, + rate = 123.0 + ), + Watcher(id = 0, source = "USD", target = "EUR", isGreater = false, rate = 123.0) ) ) ), event = object : WatchersEvent { override fun onBackClick() = Unit - override fun onBaseClick(watcher: Watcher) = Unit + override fun onSourceClick(watcher: Watcher) = Unit override fun onTargetClick(watcher: Watcher) = Unit - override fun onBaseChanged(watcher: Watcher, newBase: String) = Unit + override fun onSourceChanged(watcher: Watcher, newBase: String) = Unit override fun onTargetChanged(watcher: Watcher, newTarget: String) = Unit override fun onAddClick() = Unit override fun onDeleteClick(watcher: Watcher) = Unit diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/Dialog.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/Dialog.kt index ebc7d12b17..258f397aa7 100644 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/Dialog.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/Dialog.kt @@ -70,5 +70,5 @@ fun Activity.showSingleChoiceDialog( private fun Activity.buildDialog(title: String) = AlertDialog .Builder(this, R.style.AlertDialogCustom) .whetherNot { isFinishing } - ?.setIcon(R.drawable.ic_dialog_and_snackbar) + ?.setIcon(R.drawable.ic_app_logo) ?.setTitle(title) diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/SnackBar.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/SnackBar.kt index 9c28c5ead6..dbc6cbaa51 100644 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/SnackBar.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/SnackBar.kt @@ -31,7 +31,7 @@ fun View?.showSnack( findViewById(R.id.snackbar_text)?.apply { gravity = Gravity.CENTER - ContextCompat.getDrawable(context, icon ?: R.drawable.ic_dialog_and_snackbar)?.apply { + ContextCompat.getDrawable(context, icon ?: R.drawable.ic_app_logo)?.apply { setBounds( 0, 0, diff --git a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/ViewExtensions.kt b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/ViewExtensions.kt index c1313c2355..077759904a 100644 --- a/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/ViewExtensions.kt +++ b/android/ui/mobile/src/main/kotlin/com/oztechan/ccc/android/ui/mobile/util/ViewExtensions.kt @@ -19,9 +19,6 @@ import androidx.core.content.ContextCompat import androidx.core.view.children import androidx.core.view.isGone import androidx.core.view.isVisible -import androidx.fragment.app.Fragment -import androidx.navigation.fragment.findNavController -import co.touchlab.kermit.Logger import com.github.submob.scopemob.castTo import com.oztechan.ccc.android.core.ad.AdManager import com.oztechan.ccc.android.core.ad.BannerAdView @@ -73,32 +70,6 @@ fun View.animateHeight(startHeight: Int, endHeight: Int) { startAnimation(animation) } -fun Fragment.getNavigationResult( - key: String, - destinationId: Int -) = try { - findNavController() - .currentBackStackEntry - ?.savedStateHandle - ?.getLiveData(key) -} catch (e: IllegalArgumentException) { - Logger.e(e) { "$destinationId is not found in the backstack when getting navigation result for key $key" } - null -} - -fun Fragment.setNavigationResult( - destinationId: Int, - result: T, - key: String -) = try { - findNavController() - .previousBackStackEntry - ?.savedStateHandle - ?.set(key, result) -} catch (e: IllegalArgumentException) { - Logger.e(e) { "$destinationId is not found in the backstack when setting navigation result for key $key" } -} - fun View?.visibleIf(visible: Boolean, bringFront: Boolean = false) = this?.apply { if (visible) { isVisible = true diff --git a/android/ui/mobile/src/main/res/drawable/ic_launcher_foreground.xml b/android/ui/mobile/src/main/res/drawable/ic_launcher_foreground.xml index 77f3e85a87..6f24284125 100644 --- a/android/ui/mobile/src/main/res/drawable/ic_launcher_foreground.xml +++ b/android/ui/mobile/src/main/res/drawable/ic_launcher_foreground.xml @@ -7,69 +7,76 @@ android:viewportHeight="108" tools:ignore="VectorPath"> - + android:name="foreground" + android:scaleX="0.18" + android:scaleY="0.18" + android:translateX="8" + android:translateY="8"> + - - - - + android:pathData="M 160 210.1 C 160 207.6 159.2 206.9 153.5 204 C 146.8 200.8 141.8 195.8 140 190.8 C 139.1 188.1 139.3 187.8 143.9 185.5 C 148.8 183 148.8 183 149.3 185.4 C 151.1 192.5 161.3 197.9 170.6 196.6 C 184.1 194.7 190.5 184 182.5 176.5 C 178.8 172.9 173.8 171.4 163.8 170.5 C 155.5 169.8 151.1 168 145.8 163.2 C 137.4 155.6 136.6 145.2 143.8 137.6 C 146.6 134.6 153.7 130.7 158.2 129.6 C 160.4 129 161 128.4 161 125.9 C 161 123 161 123 166.5 123 C 171.8 123 172 123 172 125.8 C 172 128.4 172.3 128.8 176.1 129.4 C 182.2 130.3 189.9 134.8 193.1 139.4 C 194.7 141.5 196 143.7 196 144.4 C 196 145 193.9 146.2 191.4 147.1 C 186.9 148.7 186.8 148.7 185.8 146.6 C 184.4 143.4 179.2 140.2 173.3 138.9 C 160.5 135.9 146.5 143.6 149.9 151.8 C 151.9 156.6 156.7 158.9 167.1 160 C 183 161.7 193.1 168.2 196 178.5 C 198.1 186 195.9 192.9 189.3 199.3 C 185.6 202.9 176.9 207 172.9 207 C 171.4 207 171 207.6 171 210 C 171 212.9 170.9 213 165.5 213 C 160.1 213 160 212.9 160 210.1" /> + android:pathData="M 319.6 205.6 C 310 202.8 300.9 194.8 296.1 185.2 C 293.9 181 293.9 181 287.4 181 C 280.8 181 280.8 181 281.1 176.2 C 281.5 171.5 281.5 171.5 286.8 171.1 C 291.9 170.9 292.1 170.7 291.8 168.1 C 291.5 165.6 291.1 165.4 286.1 165.1 C 280.8 164.8 280.8 164.8 281.1 160.1 C 281.5 155.5 281.5 155.5 287.6 155.2 C 293.8 154.9 293.8 154.9 296.4 149.5 C 303.4 135.1 321.5 126.2 338 129 C 344.9 130.1 354 134.7 358.7 139.3 C 361 141.5 361 141.5 357 145.4 C 353 149.3 353 149.3 350.2 146.8 C 338.6 135.9 319 137.7 309.2 150.3 C 308 151.9 307 153.6 307 154.1 C 307 154.6 310.6 155 315 155 C 323 155 323 155 323 159.9 C 323 164.9 323 164.9 313.2 165.2 C 303.5 165.5 303.5 165.5 303.1 168.2 C 302.8 171 302.8 171 312.9 171 C 323 171 323 171 323 176 C 323 181 323 181 315 181 C 309.5 181 307 181.3 307 182.1 C 307 182.8 309.1 185.4 311.8 188 C 317.4 193.3 323.8 196 331.5 196 C 338.1 196 342.2 194.5 348.3 190.2 C 353.7 186.5 352.6 186.2 359.7 192.7 C 361.2 194 360.1 195.4 353.8 200.2 C 345.8 206.4 330.2 208.8 319.6 205.6" /> + + - + android:pathData="M 299.7 414.5 C 251.2 403.5 218.5 358.2 223.8 309.9 C 226.5 286.2 236.4 266.3 253.8 249.8 C 290.8 214.7 347.6 214.5 385.6 249.3 C 397.6 260.3 407.8 276.7 412.5 292.5 C 416.1 304.6 417 325.5 414.5 338 C 406.9 376.1 377.8 406.1 340.7 414.1 C 329.9 416.4 308.9 416.6 299.7 414.5 M 270 386 C 268 381 272 377 277 379 C 279 380 280 383 278 387 C 276 390 272 390 270 386 M 346.3 373.4 C 346 372.6 346.3 371.3 347 370.4 C 348 369.2 351.4 369 365.5 369 C 375 369 383.5 369.2 384.4 369.6 C 385.2 369.9 386 371.2 386 372.6 C 386 375 386 375 366.5 375 C 350 375 346.9 374.7 346.3 373.4 M 254.4 366.5 C 253.1 363.3 255 362 275 362 C 294 362 294.1 363 293.5 365 C 293 366.8 292 368 274 368 C 257.9 367.9 254.9 367.7 254.4 366.5 M 346.3 359.3 C 345.9 358.3 346.3 357.1 347.5 356.3 C 350.3 354.2 384.6 354.8 385.9 356.9 C 388.2 360.6 386.6 361 366.5 361 C 349.3 361 346.9 360.8 346.3 359.3 M 271 352 C 268 349 270 344 274 344 C 276 344 281 347 278 352 C 276 354 273 354 271 352 M 272 294.8 C 271.4 294.1 271 290.1 271 285.8 C 271 278 271 278 262.7 277.7 C 255.2 277.5 254.5 277.3 254.5 275.5 C 254.5 273.6 255.2 273.4 262.7 273.2 C 271 272.9 271 272.9 271 265.6 C 271 257.7 272.4 254.4 275.2 255.5 C 276.5 256 276.9 257.7 277.2 264.3 C 277.5 272.5 277.5 272.5 285.4 272.7 C 293.3 273 295.3 273.9 294.3 276.6 C 293.9 277.6 291.4 278 285.4 278 C 277 278 277 278 276.5 286.5 C 276.1 292.8 275.6 295.1 274.5 295.5 C 273.6 295.7 272.5 295.4 272 294.8 M 352 289.8 C 350.3 287.8 350.7 287.1 356.5 281 C 362 275.2 362 275.2 356.4 269.6 C 351.5 264.8 350.9 263.8 351.9 262 C 352.5 260.9 353.4 260 353.9 260 C 354.4 260 357.4 262.5 360.5 265.6 C 366.1 271.2 366.1 271.2 371.8 265.6 C 375.9 261.5 378.1 260.1 379.3 260.5 C 382.1 261.6 381.1 264.3 376 269.5 C 373.2 272.2 371 274.8 371 275.2 C 371 275.7 373.4 278.6 376.4 281.6 C 381 286.3 381.7 287.5 380.9 289.1 C 380.3 290.1 379.4 291 378.8 291 C 378.3 291 375.1 288.4 371.8 285.3 C 365.9 279.6 365.9 279.6 359.9 285.3 C 356.6 288.4 353.7 291 353.5 291 C 353.2 291 352.5 290.4 352 289.8" /> - - + + + + + + + + + diff --git a/android/ui/mobile/src/main/res/drawable/ic_launcher_monochrome.xml b/android/ui/mobile/src/main/res/drawable/ic_launcher_monochrome.xml index e50738ba3e..8d8ed4076d 100644 --- a/android/ui/mobile/src/main/res/drawable/ic_launcher_monochrome.xml +++ b/android/ui/mobile/src/main/res/drawable/ic_launcher_monochrome.xml @@ -7,69 +7,76 @@ android:viewportHeight="108" tools:ignore="VectorPath"> - + android:name="foreground" + android:scaleX="0.18" + android:scaleY="0.18" + android:translateX="8" + android:translateY="8"> + - - - - + android:pathData="M 160 210.1 C 160 207.6 159.2 206.9 153.5 204 C 146.8 200.8 141.8 195.8 140 190.8 C 139.1 188.1 139.3 187.8 143.9 185.5 C 148.8 183 148.8 183 149.3 185.4 C 151.1 192.5 161.3 197.9 170.6 196.6 C 184.1 194.7 190.5 184 182.5 176.5 C 178.8 172.9 173.8 171.4 163.8 170.5 C 155.5 169.8 151.1 168 145.8 163.2 C 137.4 155.6 136.6 145.2 143.8 137.6 C 146.6 134.6 153.7 130.7 158.2 129.6 C 160.4 129 161 128.4 161 125.9 C 161 123 161 123 166.5 123 C 171.8 123 172 123 172 125.8 C 172 128.4 172.3 128.8 176.1 129.4 C 182.2 130.3 189.9 134.8 193.1 139.4 C 194.7 141.5 196 143.7 196 144.4 C 196 145 193.9 146.2 191.4 147.1 C 186.9 148.7 186.8 148.7 185.8 146.6 C 184.4 143.4 179.2 140.2 173.3 138.9 C 160.5 135.9 146.5 143.6 149.9 151.8 C 151.9 156.6 156.7 158.9 167.1 160 C 183 161.7 193.1 168.2 196 178.5 C 198.1 186 195.9 192.9 189.3 199.3 C 185.6 202.9 176.9 207 172.9 207 C 171.4 207 171 207.6 171 210 C 171 212.9 170.9 213 165.5 213 C 160.1 213 160 212.9 160 210.1" /> + android:pathData="M 319.6 205.6 C 310 202.8 300.9 194.8 296.1 185.2 C 293.9 181 293.9 181 287.4 181 C 280.8 181 280.8 181 281.1 176.2 C 281.5 171.5 281.5 171.5 286.8 171.1 C 291.9 170.9 292.1 170.7 291.8 168.1 C 291.5 165.6 291.1 165.4 286.1 165.1 C 280.8 164.8 280.8 164.8 281.1 160.1 C 281.5 155.5 281.5 155.5 287.6 155.2 C 293.8 154.9 293.8 154.9 296.4 149.5 C 303.4 135.1 321.5 126.2 338 129 C 344.9 130.1 354 134.7 358.7 139.3 C 361 141.5 361 141.5 357 145.4 C 353 149.3 353 149.3 350.2 146.8 C 338.6 135.9 319 137.7 309.2 150.3 C 308 151.9 307 153.6 307 154.1 C 307 154.6 310.6 155 315 155 C 323 155 323 155 323 159.9 C 323 164.9 323 164.9 313.2 165.2 C 303.5 165.5 303.5 165.5 303.1 168.2 C 302.8 171 302.8 171 312.9 171 C 323 171 323 171 323 176 C 323 181 323 181 315 181 C 309.5 181 307 181.3 307 182.1 C 307 182.8 309.1 185.4 311.8 188 C 317.4 193.3 323.8 196 331.5 196 C 338.1 196 342.2 194.5 348.3 190.2 C 353.7 186.5 352.6 186.2 359.7 192.7 C 361.2 194 360.1 195.4 353.8 200.2 C 345.8 206.4 330.2 208.8 319.6 205.6" /> + + - + android:pathData="M 299.7 414.5 C 251.2 403.5 218.5 358.2 223.8 309.9 C 226.5 286.2 236.4 266.3 253.8 249.8 C 290.8 214.7 347.6 214.5 385.6 249.3 C 397.6 260.3 407.8 276.7 412.5 292.5 C 416.1 304.6 417 325.5 414.5 338 C 406.9 376.1 377.8 406.1 340.7 414.1 C 329.9 416.4 308.9 416.6 299.7 414.5 M 270 386 C 268 381 272 377 277 379 C 279 380 280 383 278 387 C 276 390 272 390 270 386 M 346.3 373.4 C 346 372.6 346.3 371.3 347 370.4 C 348 369.2 351.4 369 365.5 369 C 375 369 383.5 369.2 384.4 369.6 C 385.2 369.9 386 371.2 386 372.6 C 386 375 386 375 366.5 375 C 350 375 346.9 374.7 346.3 373.4 M 254.4 366.5 C 253.1 363.3 255 362 275 362 C 294 362 294.1 363 293.5 365 C 293 366.8 292 368 274 368 C 257.9 367.9 254.9 367.7 254.4 366.5 M 346.3 359.3 C 345.9 358.3 346.3 357.1 347.5 356.3 C 350.3 354.2 384.6 354.8 385.9 356.9 C 388.2 360.6 386.6 361 366.5 361 C 349.3 361 346.9 360.8 346.3 359.3 M 271 352 C 268 349 270 344 274 344 C 276 344 281 347 278 352 C 276 354 273 354 271 352 M 272 294.8 C 271.4 294.1 271 290.1 271 285.8 C 271 278 271 278 262.7 277.7 C 255.2 277.5 254.5 277.3 254.5 275.5 C 254.5 273.6 255.2 273.4 262.7 273.2 C 271 272.9 271 272.9 271 265.6 C 271 257.7 272.4 254.4 275.2 255.5 C 276.5 256 276.9 257.7 277.2 264.3 C 277.5 272.5 277.5 272.5 285.4 272.7 C 293.3 273 295.3 273.9 294.3 276.6 C 293.9 277.6 291.4 278 285.4 278 C 277 278 277 278 276.5 286.5 C 276.1 292.8 275.6 295.1 274.5 295.5 C 273.6 295.7 272.5 295.4 272 294.8 M 352 289.8 C 350.3 287.8 350.7 287.1 356.5 281 C 362 275.2 362 275.2 356.4 269.6 C 351.5 264.8 350.9 263.8 351.9 262 C 352.5 260.9 353.4 260 353.9 260 C 354.4 260 357.4 262.5 360.5 265.6 C 366.1 271.2 366.1 271.2 371.8 265.6 C 375.9 261.5 378.1 260.1 379.3 260.5 C 382.1 261.6 381.1 264.3 376 269.5 C 373.2 272.2 371 274.8 371 275.2 C 371 275.7 373.4 278.6 376.4 281.6 C 381 286.3 381.7 287.5 380.9 289.1 C 380.3 290.1 379.4 291 378.8 291 C 378.3 291 375.1 288.4 371.8 285.3 C 365.9 279.6 365.9 279.6 359.9 285.3 C 356.6 288.4 353.7 291 353.5 291 C 353.2 291 352.5 290.4 352 289.8" /> - - + + + + + + + + + diff --git a/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher.webp index 65822ba756..5f16e6c979 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher.webp and b/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher_round.webp index 47c8faebf7..70545b36dd 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/android/ui/mobile/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher.webp index 68c61d832a..91579e9c8d 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher.webp and b/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 6317c12670..ff66fe47b3 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/android/ui/mobile/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher.webp index 1527c5f06c..4b6e1e070a 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index e1fb08e47e..d874ff40d9 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/android/ui/mobile/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 3d9ab4131e..66bd6a18d8 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 37383bdfcc..dd3f7d32c6 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/android/ui/mobile/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index 8ac6351604..c43df194c7 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 7c8bea60d3..072e994c64 100644 Binary files a/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/android/ui/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/android/ui/mobile/src/main/res/values/styles.xml b/android/ui/mobile/src/main/res/values/styles.xml index 1226a3bdb0..0fa69c744f 100755 --- a/android/ui/mobile/src/main/res/values/styles.xml +++ b/android/ui/mobile/src/main/res/values/styles.xml @@ -333,6 +333,8 @@