DROID-1686 Tech | Target SDK 34 (#319)

This commit is contained in:
Konstantin Ivanov 2023-08-29 11:42:35 +02:00 committed by GitHub
parent d0d87ecac4
commit 1ca5bb5632
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 38 additions and 72 deletions

View File

@ -2,7 +2,6 @@ plugins {
id "com.android.application"
id "kotlin-android"
id "kotlin-kapt"
id "androidx.navigation.safeargs.kotlin"
id "com.google.firebase.appdistribution"
}
@ -195,7 +194,6 @@ dependencies {
implementation libs.composeAccompanistPager
implementation libs.composeAccompanistThemeAdapter
implementation libs.composeAccompanistPagerIndicators
implementation libs.composeAccompanistNavAnimation
implementation libs.preference
implementation libs.activityCompose
implementation libs.composeReorderable

View File

@ -13,18 +13,18 @@ class CoroutinesTestRule(
private val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()
) : TestWatcher() {
override fun starting(description: Description?) {
override fun starting(description: Description) {
super.starting(description)
Dispatchers.setMain(testDispatcher)
}
override fun finished(description: Description?) {
override fun finished(description: Description) {
super.finished(description)
Dispatchers.resetMain()
testDispatcher.cleanupTestCoroutines()
}
fun advanceTime(millis: Long) {
testDispatcher.advanceTimeBy(millis)
testDispatcher.scheduler.apply { advanceTimeBy(millis); runCurrent() }
}
}

View File

@ -16,9 +16,8 @@ import androidx.activity.compose.ManagedActivityResultLauncher
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.AnimatedContentScope.SlideDirection.Companion.Left
import androidx.compose.animation.AnimatedContentScope.SlideDirection.Companion.Right
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection.Companion.Left
import androidx.compose.animation.AnimatedContentTransitionScope.SlideDirection.Companion.Right
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
@ -55,10 +54,12 @@ import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.rememberNavController
import androidx.navigation.fragment.findNavController
import androidx.navigation.navOptions
import androidx.navigation.compose.composable
import com.anytypeio.anytype.R
import com.anytypeio.anytype.core_ui.BuildConfig
import com.anytypeio.anytype.core_ui.MNEMONIC_WORD_COUNT
@ -66,7 +67,6 @@ import com.anytypeio.anytype.core_ui.MnemonicPhrasePaletteColors
import com.anytypeio.anytype.core_ui.views.BaseAlertDialog
import com.anytypeio.anytype.core_utils.ext.toast
import com.anytypeio.anytype.core_utils.insets.RootViewDeferringInsetsCallback
import com.anytypeio.anytype.di.common.ComponentManager
import com.anytypeio.anytype.di.common.componentManager
import com.anytypeio.anytype.ext.daggerViewModel
import com.anytypeio.anytype.presentation.onboarding.OnboardingStartViewModel
@ -83,9 +83,6 @@ import com.anytypeio.anytype.ui.onboarding.screens.signup.CreateSoulAnimWrapper
import com.anytypeio.anytype.ui.onboarding.screens.signup.CreateSoulWrapper
import com.anytypeio.anytype.ui.onboarding.screens.signup.MnemonicPhraseScreenWrapper
import com.anytypeio.anytype.ui.onboarding.screens.signup.VoidScreenWrapper
import com.google.accompanist.navigation.animation.AnimatedNavHost
import com.google.accompanist.navigation.animation.composable
import com.google.accompanist.navigation.animation.rememberAnimatedNavController
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.Player
@ -139,10 +136,9 @@ class OnboardingFragment : Fragment() {
}
@Composable
@OptIn(ExperimentalAnimationApi::class)
private fun OnboardingScreen() {
MaterialTheme {
val navController = rememberAnimatedNavController()
val navController = rememberNavController()
val defaultBackCallback: BackButtonCallback = { navController.popBackStack() }
val signUpBackButtonCallback = remember {
mutableStateOf(defaultBackCallback)
@ -210,14 +206,13 @@ class OnboardingFragment : Fragment() {
}
}
@OptIn(ExperimentalAnimationApi::class)
@Composable
private fun Onboarding(
currentPage: MutableState<OnboardingPage>,
backButtonCallback: MutableState<BackButtonCallback>,
navController: NavHostController
) {
AnimatedNavHost(navController, startDestination = OnboardingNavigation.auth) {
NavHost(navController, startDestination = OnboardingNavigation.auth) {
composable(
route = OnboardingNavigation.auth,
enterTransition = { null },
@ -413,7 +408,7 @@ class OnboardingFragment : Fragment() {
vm.sideEffects.collect { effect ->
when (effect) {
is OnboardingMnemonicLoginViewModel.SideEffect.Exit -> {
val lastDestination = navController.backQueue.lastOrNull()
val lastDestination = navController.currentBackStackEntry
// TODO Temporary workaround to prevent inconsistent state in navigation
if (lastDestination?.destination?.route == OnboardingNavigation.recovery) {
navController.popBackStack()

View File

@ -1,8 +1,8 @@
import com.android.build.gradle.LibraryPlugin
buildscript {
ext.compile_sdk = 33
ext.target_sdk = 33
ext.compile_sdk = 34
ext.target_sdk = 34
ext.min_sdk = 26
ext.application_id = 'io.anytype.app'
@ -43,7 +43,6 @@ plugins {
alias(libs.plugins.wire) apply false
alias(libs.plugins.dokka) apply false
alias(libs.plugins.firebaseDistribution) apply false
alias(libs.plugins.navigation) apply false
alias(libs.plugins.gms) apply false
}

View File

@ -1,22 +0,0 @@
package com.anytypeio.anytype.core_ui.widgets.text
import android.content.Context
import android.graphics.Canvas
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
class StaticTextView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AppCompatTextView(context, attrs, defStyleAttr) {
var textToSet: String = ""
var xTextPosition: Float = 0f
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
//todo Fix y position after proper design
canvas?.drawText(textToSet, xTextPosition, 45f, paint)
}
}

View File

@ -33,9 +33,9 @@ class TextHighlightWidget @JvmOverloads constructor(
}
}
override fun onDraw(canvas: Canvas?) {
override fun onDraw(canvas: Canvas) {
if (text is Spanned && layout != null) {
canvas?.withTranslation(totalPaddingLeft.toFloat(), totalPaddingTop.toFloat()) {
canvas.withTranslation(totalPaddingLeft.toFloat(), totalPaddingTop.toFloat()) {
highlightDrawer?.draw(
canvas = canvas,
text = text as Spanned,

View File

@ -25,7 +25,6 @@ import com.anytypeio.anytype.core_ui.tools.MentionTextWatcher
import com.anytypeio.anytype.core_ui.tools.TextInputTextWatcher
import com.anytypeio.anytype.core_ui.widgets.text.highlight.HighlightAttributeReader
import com.anytypeio.anytype.core_ui.widgets.text.highlight.HighlightDrawer
import com.anytypeio.anytype.core_utils.ext.multilineIme
import com.anytypeio.anytype.core_utils.ext.showKeyboard
import com.anytypeio.anytype.core_utils.text.OnEnterActionListener
import com.anytypeio.anytype.presentation.editor.editor.model.BlockView
@ -248,10 +247,10 @@ class TextInputWidget : AppCompatEditText {
}
}
override fun onDraw(canvas: Canvas?) {
override fun onDraw(canvas: Canvas) {
// need to draw bg first so that text can be on top during super.onDraw()
if (text is Spanned && layout != null) {
canvas?.withTranslation(totalPaddingLeft.toFloat(), totalPaddingTop.toFloat()) {
canvas.withTranslation(totalPaddingLeft.toFloat(), totalPaddingTop.toFloat()) {
highlightDrawer?.draw(canvas, text as Spanned, layout, context.resources)
}
}

View File

@ -10,7 +10,7 @@ import android.view.MotionEvent
abstract class OnSwipeListener : SimpleOnGestureListener() {
override fun onFling(
e1: MotionEvent,
e1: MotionEvent?,
e2: MotionEvent,
velocityX: Float,
velocityY: Float
@ -34,8 +34,8 @@ abstract class OnSwipeListener : SimpleOnGestureListener() {
// C => it's a DOWN swipe
// D => it's a LEFT swipe
//
val x1 = e1.x
val y1 = e1.y
val x1 = e1?.x ?: 0f
val y1 = e1?.y ?: 0f
val x2 = e2.x
val y2 = e2.y
val direction = getDirection(x1, y1, x2, y2)

View File

@ -4,17 +4,17 @@ kotlinVersion = '1.7.10'
androidxCoreVersion = "1.10.1"
androidxComposeVersion = '1.4.3'
androidxComposeVersion = '1.5.0'
composeKotlinCompilerVersion = '1.3.1'
composeMaterial3Version = '1.1.1'
composeMaterialVersion = '1.3.1'
composeMaterialVersion = '1.5.0'
composeConstraintLayoutVersion = '1.0.1'
activityComposeVersion = '1.7.2'
composeReorderableVersion = '0.9.6'
accompanistVersion = "0.29.1-alpha"
appcompatVersion = '1.6.1'
fragmentVersion = "1.6.0"
fragmentVersion = "1.6.1"
exoplayerVersion = "2.19.0"
wireVersion = "4.5.2"
glideVersion = "4.14.2"
@ -29,14 +29,14 @@ androidxCoreTestingVersion = '2.2.0'
androidxSecurityCryptoVersion = '1.0.0'
androidxPreferenceVersion = '1.2.1'
constraintLayoutVersion = '2.1.4'
recyclerviewVersion = '1.3.0'
recyclerviewVersion = '1.3.1'
cardviewVersion = '1.0.0'
emojiCompatVersion = '1.1.0'
viewPager2Version = '1.0.0'
lifecycleVersion = '2.5.1'
lifecycleRuntimeComposeVersion = '2.6.0-alpha02'
navigationVersion = '2.5.3'
navigationComposeVersion = '2.5.3'
lifecycleVersion = '2.6.1'
lifecycleRuntimeComposeVersion = '2.7.0-alpha01'
navigationVersion = '2.7.1'
navigationComposeVersion = '2.7.1'
shimmerLayoutVersion = '0.5.0'
photoViewVersion = '2.3.0'
daggerVersion = '2.45'
@ -48,7 +48,7 @@ picktVersion = '2.0.2'
zxingVersion = '4.1.0'
urlcleanerVersion = '0.4.0'
katexVersion = '1.0.2'
robolectricLatestVersion = '4.9.2'
robolectricLatestVersion = '4.10.3'
kluentVersion = '1.14'
timberJunitVersion = '1.0.1'
turbineVersion = '0.12.1'
@ -60,7 +60,7 @@ leakCanaryVersion = '1.5'
timberVersion = '5.0.1'
protobufJavaVersion = '3.9.2'
protocVersion = '3.9.0'
roomVersion = '2.4.3'
roomVersion = '2.5.2'
amplitudeVersion = '2.36.1'
coilComposeVersion = '2.2.2'
sentryVersion = '6.0.0'
@ -79,7 +79,6 @@ composeMaterial3 = { module = "androidx.compose.material3:material3", version.re
composeAccompanistPager = { module = "com.google.accompanist:accompanist-pager", version.ref = "accompanistVersion" }
composeAccompanistPagerIndicators = { module = "com.google.accompanist:accompanist-pager-indicators", version.ref = "accompanistVersion" }
composeAccompanistThemeAdapter = { module = "com.google.accompanist:accompanist-themeadapter-material", version.ref = "accompanistVersion" }
composeAccompanistNavAnimation = { module = "com.google.accompanist:accompanist-navigation-animation", version.ref = "accompanistVersion" }
composeReorderable = { module = "org.burnoutcrew.composereorderable:reorderable", version.ref = "composeReorderableVersion" }
composeConstraintLayout = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "composeConstraintLayoutVersion" }
kotlinxSerializationJson = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.4.1" }
@ -170,7 +169,5 @@ dokka = { id = "org.jetbrains.dokka", version.ref = "kotlinVersion" }
kserialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinVersion" }
wire = { id = "com.squareup.wire", version = "4.4.3" }
firebaseDistribution = { id = "com.google.firebase.appdistribution", version = "3.1.1" }
navigation = { id = "androidx.navigation.safeargs", version.ref = "navigationVersion" }
navigationKotlin = { id = "androidx.navigation.safeargs.kotlin", version.ref = "navigationVersion" }
kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlinVersion" }
gms = { id = "com.google.gms.google-services", version = "4.3.15" }

View File

@ -18,7 +18,7 @@ import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
@RunWith(RobolectricTestRunner::class)
@Config(manifest = Config.NONE)
@Config(manifest = Config.NONE, sdk = [33])
class AccountDaoTest {
@get:Rule

View File

@ -20,7 +20,7 @@ import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config
@RunWith(RobolectricTestRunner::class)
@Config(manifest = Config.NONE)
@Config(manifest = Config.NONE, sdk = [33])
class DefaultAuthCacheTest {
@get:Rule

View File

@ -13,20 +13,20 @@ class CoroutinesTestRule(
val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher()
) : TestWatcher() {
override fun starting(description: Description?) {
override fun starting(description: Description) {
super.starting(description)
Dispatchers.setMain(testDispatcher)
}
override fun finished(description: Description?) {
override fun finished(description: Description) {
super.finished(description)
Dispatchers.resetMain()
testDispatcher.cleanupTestCoroutines()
}
fun advanceTime(millis: Long) {
testDispatcher.advanceTimeBy(millis)
testDispatcher.scheduler.apply { advanceTimeBy(millis); runCurrent() }
}
fun advanceUntilIdle() = testDispatcher.advanceUntilIdle()
fun advanceUntilIdle() = testDispatcher.scheduler.advanceUntilIdle()
}

View File

@ -7,13 +7,13 @@ plugins {
}
android {
compileSdkVersion 33
compileSdkVersion 34
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "com.anytypeio.anytype.sample"
minSdkVersion 26
targetSdkVersion 33
targetSdkVersion 34
versionCode 1
versionName "1.0"