Skip to content

Commit

Permalink
Move common ui to multiplatform module (#79)
Browse files Browse the repository at this point in the history
  • Loading branch information
Popalay authored Jul 16, 2023
1 parent 84dbd8b commit 52268f1
Show file tree
Hide file tree
Showing 103 changed files with 1,391 additions and 695 deletions.
56 changes: 26 additions & 30 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,13 @@
*/

plugins {
kotlin("android")
kotlin("multiplatform")
id("com.android.application")
id("com.google.gms.google-services")
id("kotlin-parcelize")
id("org.jetbrains.compose") version libs.versions.jetbrainsCompose
}

dependencies {
implementation(project(":shared"))
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.constraintlayout.compose)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.core.splashscreen)
implementation(libs.youtubePlayer)
implementation(libs.paging.compose)
implementation(libs.firebase.dynamicLinks)
implementation(libs.bundles.koin)
implementation(libs.bundles.androidx.compose)
implementation(libs.bundles.accompanist)
implementation(libs.bundles.vojager)
}

val isCI = System.getenv("CI") == "true"
println("Is CI environment: $isCI")

android {
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
Expand Down Expand Up @@ -99,18 +80,33 @@ android {
targetCompatibility = JavaVersion.VERSION_19
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_19.toString()
kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
kotlinOptions.freeCompilerArgs += "-opt-in=androidx.lifecycle.compose.ExperimentalLifecycleComposeApi"
}

packagingOptions {
resources.excludes.add("META-INF/INDEX.LIST")
}

composeOptions {
kotlinCompilerExtensionVersion = libs.versions.androidx.compose.compiler.get()
}
namespace = "com.popalay.barnee"
}

kotlin {
android()
sourceSets {
sourceSets["androidMain"].dependencies {
implementation(project(":shared"))
implementation(project(":ui"))
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.constraintlayout.compose)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.core.splashscreen)
implementation(libs.youtubePlayer)
implementation(libs.firebase.dynamicLinks)
implementation(libs.bundles.koin)
implementation(libs.bundles.androidx.compose)
implementation(libs.bundles.accompanist)
implementation(libs.bundles.vojager)
}
}
}

val isCI = System.getenv("CI") == "true"
println("Is CI environment: $isCI")
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ package com.popalay.barnee

import android.content.res.Configuration
import android.widget.Toast
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.ExperimentalMaterialApi
Expand Down Expand Up @@ -52,9 +53,9 @@ import com.popalay.barnee.data.message.MessagesProvider
import com.popalay.barnee.domain.navigation.Router
import com.popalay.barnee.domain.navigation.StackChange
import com.popalay.barnee.navigation.HandleIntent
import com.popalay.barnee.navigation.NavigationHost
import com.popalay.barnee.navigation.SlideTransition
import com.popalay.barnee.ui.common.PrimarySnackbar
import com.popalay.barnee.ui.navigation.NavigationHost
import com.popalay.barnee.ui.screen.discovery.DiscoveryScreen
import com.popalay.barnee.ui.screen.shaketodrink.ShakeToDrinkScreen
import com.popalay.barnee.ui.theme.BarneeTheme
Expand All @@ -65,7 +66,7 @@ import kotlinx.coroutines.cancelChildren
import kotlinx.coroutines.launch
import org.koin.compose.koinInject

@OptIn(ExperimentalMaterialApi::class, ExperimentalVoyagerApi::class)
@OptIn(ExperimentalMaterialApi::class, ExperimentalVoyagerApi::class, ExperimentalAnimationApi::class)
@Composable
internal fun ComposeApp() {
ProvideWindowInsets(windowInsetsAnimationsEnabled = true) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

package com.popalay.barnee.navigation

import androidx.compose.animation.ContentTransform
import androidx.compose.animation.core.FiniteAnimationSpec
import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.VisibilityThreshold
Expand All @@ -30,7 +31,6 @@ import androidx.compose.animation.slideInHorizontally
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutHorizontally
import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.togetherWith
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.IntOffset
Expand Down Expand Up @@ -66,13 +66,15 @@ fun SlideTransition(
}

when (orientation) {
SlideOrientation.Horizontal ->
slideInHorizontally(animationSpec, initialOffset) togetherWith
slideOutHorizontally(animationSpec, targetOffset)
SlideOrientation.Horizontal -> ContentTransform(
slideInHorizontally(animationSpec, initialOffset),
slideOutHorizontally(animationSpec, targetOffset)
)

SlideOrientation.Vertical ->
slideInVertically(animationSpec, initialOffset) togetherWith
slideOutVertically(animationSpec, targetOffset)
SlideOrientation.Vertical -> ContentTransform(
slideInVertically(animationSpec, initialOffset),
slideOutVertically(animationSpec, targetOffset)
)
}
}
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.popalay.barnee.di.injectStateMachine
import com.popalay.barnee.ui.extensions.injectStateMachine
import com.popalay.barnee.domain.navigation.AppScreens
import com.popalay.barnee.domain.navigation.NavigateToAction
import com.popalay.barnee.domain.navigation.ScreenWithInputAsKey
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.popalay.barnee.data.model.DrinkMinimumData
import com.popalay.barnee.di.injectStateMachine
import com.popalay.barnee.ui.extensions.injectStateMachine
import com.popalay.barnee.domain.Action
import com.popalay.barnee.domain.addtocollection.AddToCollectionAction
import com.popalay.barnee.domain.addtocollection.AddToCollectionDialogState
Expand Down Expand Up @@ -70,7 +70,7 @@ private fun AddToCollectionScreen(
is AddToCollectionDialogState.ChooseCollection -> ChooseCollectionBottomSheet(
state = collectionListState,
onCollectionClicked = { onAction(AddToCollectionAction.CollectionClicked(it)) },
onCreateNewClicked = { onAction(AddToCollectionAction.CreateCollectionClicked) }
onCreateNewClicked = { onAction(AddToCollectionAction.CreateCollectionClicked) },
)

is AddToCollectionDialogState.CreateCollection -> CreateCollectionBottomSheet(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyRow
Expand Down Expand Up @@ -80,7 +83,8 @@ fun ChooseCollectionBottomSheet(
}
}
}
}
},
bottomPadding = WindowInsets.ime.asPaddingValues()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@
package com.popalay.barnee.ui.screen.addtocollection

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.ime
import androidx.compose.material.Card
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
Expand All @@ -42,14 +45,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.popalay.barnee.R
import com.popalay.barnee.data.model.DrinkMinimumData
import com.popalay.barnee.di.AsyncImage
import com.popalay.barnee.ui.common.AsyncImage
import com.popalay.barnee.ui.common.BarneeTextField
import com.popalay.barnee.ui.common.BottomSheetContent
import com.popalay.barnee.ui.icons.ChevronLeft
import com.popalay.barnee.ui.theme.DefaultAspectRatio
import com.popalay.barnee.ui.theme.MediumSquircleShape

Expand Down Expand Up @@ -109,10 +111,12 @@ fun CreateCollectionBottomSheet(
navigation = {
IconButton(onClick = onBackClicked) {
Icon(
painter = painterResource(R.drawable.ic_arrow_back),
imageVector = Icons.ChevronLeft,
tint = MaterialTheme.colors.onSurface,
contentDescription = "Back"
)
}
}
},
bottomPadding = WindowInsets.ime.asPaddingValues()
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ package com.popalay.barnee.ui.screen.bartender
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.asPaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.text.KeyboardActions
Expand All @@ -48,12 +51,10 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.popalay.barnee.R
import com.popalay.barnee.di.injectStateMachine
import com.popalay.barnee.ui.extensions.injectStateMachine
import com.popalay.barnee.domain.Action
import com.popalay.barnee.domain.bartender.BartenderAction
import com.popalay.barnee.domain.bartender.BartenderState
Expand All @@ -64,6 +65,7 @@ import com.popalay.barnee.domain.navigation.ParcelableScreen
import com.popalay.barnee.domain.navigation.ReplaceCurrentScreenAction
import com.popalay.barnee.ui.common.BarneeTextField
import com.popalay.barnee.ui.common.BottomSheetContent
import com.popalay.barnee.ui.icons.Cross
import com.popalay.barnee.ui.screen.drinklist.DrinkListItem
import com.popalay.barnee.util.asStateFlow
import com.popalay.barnee.util.displayName
Expand Down Expand Up @@ -105,11 +107,13 @@ private fun BartenderScreen(
navigation = {
IconButton(onClick = { onAction(NavigateBackAction) }) {
Icon(
painter = painterResource(R.drawable.ic_cross),
imageVector = Icons.Cross,
tint = MaterialTheme.colors.onSurface,
contentDescription = "Close"
)
}
}
},
bottomPadding = WindowInsets.ime.asPaddingValues()
)
} else {
val promptFocus = remember { FocusRequester() }
Expand Down Expand Up @@ -182,11 +186,13 @@ private fun BartenderScreen(
navigation = {
IconButton(onClick = { onAction(NavigateBackAction) }) {
Icon(
painter = painterResource(R.drawable.ic_cross),
imageVector = Icons.Cross,
tint = MaterialTheme.colors.onSurface,
contentDescription = "Close"
)
}
}
},
bottomPadding = WindowInsets.ime.asPaddingValues()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ import androidx.compose.material.ExtendedFloatingActionButton
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import com.popalay.barnee.R
import com.popalay.barnee.ui.icons.CocktailShaker

@Composable
fun ShakeCocktailButton(
Expand All @@ -43,7 +43,7 @@ fun ShakeCocktailButton(
text = { Text(text = "Shake cocktail") },
icon = {
Icon(
painter = painterResource(id = R.drawable.ic_cocktail_shaker),
imageVector = Icons.CocktailShaker,
contentDescription = "Shake cocktail"
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import android.content.res.Configuration
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
Expand All @@ -42,7 +43,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.paging.compose.collectAsLazyPagingItems
import com.google.accompanist.insets.LocalWindowInsets
import com.google.accompanist.insets.rememberInsetsPaddingValues
import com.popalay.barnee.di.injectStateMachine
import com.popalay.barnee.ui.extensions.injectStateMachine
import com.popalay.barnee.domain.Action
import com.popalay.barnee.domain.collection.CollectionAction
import com.popalay.barnee.domain.collection.CollectionInput
Expand Down Expand Up @@ -82,7 +83,9 @@ private fun CollectionScreen(

ActionsAppBar(
title = state.name,
modifier = Modifier.liftOnScroll(listState),
modifier = Modifier
.liftOnScroll(listState)
.statusBarsPadding(),
leadingButtons = { BackButton(onClick = { onAction(NavigateBackAction) }) },
trailingButtons = {
AnimatedVisibility(state.isShareButtonVisible) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.popalay.barnee.data.model.Collection
import com.popalay.barnee.data.model.ImageUrl
import com.popalay.barnee.di.AsyncImage
import com.popalay.barnee.domain.Result
import com.popalay.barnee.ui.common.AsyncImage
import com.popalay.barnee.ui.common.DefaultColumns
import com.popalay.barnee.ui.common.DefaultHorizontalItemPadding
import com.popalay.barnee.ui.common.DefaultVerticalItemPadding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.google.accompanist.insets.LocalWindowInsets
import com.google.accompanist.insets.rememberInsetsPaddingValues
import com.popalay.barnee.di.injectStateMachine
import com.popalay.barnee.domain.Action
import com.popalay.barnee.domain.collectionlist.CollectionListState
import com.popalay.barnee.domain.collectionlist.CollectionListStateMachine
Expand All @@ -47,6 +46,7 @@ import com.popalay.barnee.domain.navigation.ReplaceCurrentScreenAction
import com.popalay.barnee.ui.common.ActionsAppBar
import com.popalay.barnee.ui.common.BackButton
import com.popalay.barnee.ui.common.liftOnScroll
import com.popalay.barnee.ui.extensions.injectStateMachine
import com.popalay.barnee.ui.theme.BarneeTheme
import com.popalay.barnee.util.asStateFlow
import io.matthewnelson.component.parcelize.Parcelize
Expand Down
Loading

0 comments on commit 52268f1

Please sign in to comment.