mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-13 17:51:57 +00:00
update to material3 for compose
This commit is contained in:
parent
74c283eb8a
commit
01a156c4b0
41 changed files with 183 additions and 174 deletions
|
|
@ -105,19 +105,17 @@ dependencies {
|
||||||
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
|
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
|
||||||
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
||||||
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
|
||||||
implementation "androidx.fragment:fragment-ktx:1.6.2"
|
implementation "androidx.fragment:fragment-ktx:1.7.0"
|
||||||
implementation "androidx.paging:paging-runtime-ktx:$paging_version"
|
implementation "androidx.paging:paging-runtime-ktx:$paging_version"
|
||||||
implementation "androidx.paging:paging-compose:$paging_version"
|
implementation "androidx.paging:paging-compose:$paging_version"
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
|
||||||
implementation "com.google.accompanist:accompanist-themeadapter-material:$accompanist_version"
|
|
||||||
implementation "androidx.compose.material3:material3:1.2.1"
|
implementation "androidx.compose.material3:material3:1.2.1"
|
||||||
implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version"
|
implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version"
|
||||||
implementation 'com.google.android.play:core:1.10.3'
|
implementation 'com.google.android.play:core:1.10.3'
|
||||||
|
|
||||||
implementation 'androidx.activity:activity-compose:1.9.0'
|
implementation 'androidx.activity:activity-compose:1.9.0'
|
||||||
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
|
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
|
||||||
implementation "androidx.compose.material:material:$compose_version"
|
|
||||||
implementation "androidx.compose.animation:animation:$compose_version"
|
implementation "androidx.compose.animation:animation:$compose_version"
|
||||||
implementation "androidx.compose.ui:ui-text-google-fonts:$compose_version"
|
implementation "androidx.compose.ui:ui-text-google-fonts:$compose_version"
|
||||||
implementation "androidx.compose.ui:ui-tooling:$compose_version"
|
implementation "androidx.compose.ui:ui-tooling:$compose_version"
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,14 @@ import com.habitrpg.common.habitica.helpers.launchCatching
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
class AppConfigManager(contentRepository: ContentRepository?) :
|
class AppConfigManager(contentRepository: ContentRepository) :
|
||||||
com.habitrpg.common.habitica.helpers.AppConfigManager() {
|
com.habitrpg.common.habitica.helpers.AppConfigManager() {
|
||||||
private var worldState: WorldState? = null
|
private var worldState: WorldState? = null
|
||||||
|
|
||||||
init {
|
init {
|
||||||
try {
|
try {
|
||||||
MainScope().launchCatching {
|
MainScope().launchCatching {
|
||||||
contentRepository?.getWorldState()?.collect {
|
contentRepository.getWorldState().collect {
|
||||||
worldState = it
|
worldState = it
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -190,7 +190,7 @@ class AppConfigManager(contentRepository: ContentRepository?) :
|
||||||
}
|
}
|
||||||
|
|
||||||
fun enableCustomizationShop(): Boolean {
|
fun enableCustomizationShop(): Boolean {
|
||||||
if (BuildConfig.DEBUG) return false
|
if (BuildConfig.DEBUG) return true
|
||||||
return remoteConfig.getBoolean("enableCustomizationShop")
|
return remoteConfig.getBoolean("enableCustomizationShop")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ class AppModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
fun providesRemoteConfigManager(contentRepository: ContentRepository?): AppConfigManager {
|
fun providesRemoteConfigManager(contentRepository: ContentRepository): AppConfigManager {
|
||||||
return AppConfigManager(contentRepository)
|
return AppConfigManager(contentRepository)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,16 +17,16 @@ import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.verticalScroll
|
import androidx.compose.foundation.verticalScroll
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.material.DrawerState
|
import androidx.compose.material3.DrawerState
|
||||||
import androidx.compose.material.DrawerValue
|
import androidx.compose.material3.DrawerValue
|
||||||
import androidx.compose.material.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
import androidx.compose.material.ScaffoldState
|
import androidx.compose.material3.ScaffoldState
|
||||||
import androidx.compose.material.SnackbarHostState
|
import androidx.compose.material3.SnackbarHostState
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material.rememberScaffoldState
|
import androidx.compose.material3.rememberScaffoldState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.livedata.observeAsState
|
import androidx.compose.runtime.livedata.observeAsState
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,10 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.heightIn
|
import androidx.compose.foundation.layout.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,16 @@ class NavigationDrawerFragment : DialogFragment() {
|
||||||
|
|
||||||
val shop = getItemWithIdentifier(SIDEBAR_SHOPS_SEASONAL) ?: return
|
val shop = getItemWithIdentifier(SIDEBAR_SHOPS_SEASONAL) ?: return
|
||||||
shop.subtitle = gearEvent?.end?.getRemainingString(requireContext().resources)
|
shop.subtitle = gearEvent?.end?.getRemainingString(requireContext().resources)
|
||||||
|
if (!configManager.enableCustomizationShop()) {
|
||||||
|
shop.pillText = context?.getString(R.string.open)
|
||||||
|
if (gearEvent?.isCurrentlyActive == true) {
|
||||||
|
shop.isVisible = true
|
||||||
|
shop.subtitle =
|
||||||
|
context?.getString(R.string.open_for, gearEvent.end?.getShortRemainingString())
|
||||||
|
} else {
|
||||||
|
shop.isVisible = false
|
||||||
|
}
|
||||||
|
}
|
||||||
adapter.updateItem(shop)
|
adapter.updateItem(shop)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.Switch
|
import androidx.compose.material3.Switch
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.livedata.observeAsState
|
import androidx.compose.runtime.livedata.observeAsState
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,11 @@ import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.rememberScrollState
|
import androidx.compose.foundation.rememberScrollState
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material.TextField
|
import androidx.compose.material3.TextField
|
||||||
import androidx.compose.material.TextFieldDefaults
|
import androidx.compose.material3.TextFieldDefaults
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateListOf
|
import androidx.compose.runtime.mutableStateListOf
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,11 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.ExperimentalMaterialApi
|
import androidx.compose.material3.ExperimentalMaterialApi
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material.pullrefresh.pullRefresh
|
import androidx.compose.material3.pullrefresh.pullRefresh
|
||||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
import androidx.compose.material3.pullrefresh.rememberPullRefreshState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateMapOf
|
import androidx.compose.runtime.mutableStateMapOf
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,8 @@ import androidx.compose.foundation.layout.requiredSize
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -49,6 +49,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import com.habitrpg.android.habitica.R
|
import com.habitrpg.android.habitica.R
|
||||||
|
import com.habitrpg.android.habitica.data.ContentRepository
|
||||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||||
import com.habitrpg.android.habitica.models.TeamPlan
|
import com.habitrpg.android.habitica.models.TeamPlan
|
||||||
import com.habitrpg.android.habitica.models.auth.LocalAuthentication
|
import com.habitrpg.android.habitica.models.auth.LocalAuthentication
|
||||||
|
|
@ -116,7 +117,7 @@ fun AppHeaderView(
|
||||||
onAvatarClicked: (() -> Unit)? = null,
|
onAvatarClicked: (() -> Unit)? = null,
|
||||||
onMemberRowClicked: () -> Unit,
|
onMemberRowClicked: () -> Unit,
|
||||||
onClassSelectionClicked: () -> Unit,
|
onClassSelectionClicked: () -> Unit,
|
||||||
configManager: AppConfigManager,
|
configManager: AppConfigManager? = null,
|
||||||
) {
|
) {
|
||||||
val isPlayerOptedOutOfClass = user?.preferences?.disableClasses ?: false
|
val isPlayerOptedOutOfClass = user?.preferences?.disableClasses ?: false
|
||||||
Column(modifier) {
|
Column(modifier) {
|
||||||
|
|
@ -191,7 +192,7 @@ fun AppHeaderView(
|
||||||
} else if (user?.hasClass == false && isMyProfile && !isPlayerOptedOutOfClass) {
|
} else if (user?.hasClass == false && isMyProfile && !isPlayerOptedOutOfClass) {
|
||||||
HabiticaButton(
|
HabiticaButton(
|
||||||
background = HabiticaTheme.colors.basicButtonColor(),
|
background = HabiticaTheme.colors.basicButtonColor(),
|
||||||
color = MaterialTheme.colors.onPrimary,
|
color = MaterialTheme.colorScheme.onPrimary,
|
||||||
onClick = {
|
onClick = {
|
||||||
onClassSelectionClicked()
|
onClassSelectionClicked()
|
||||||
},
|
},
|
||||||
|
|
@ -431,8 +432,7 @@ private fun Preview(
|
||||||
.background(HabiticaTheme.colors.contentBackground)
|
.background(HabiticaTheme.colors.contentBackground)
|
||||||
.padding(8.dp),
|
.padding(8.dp),
|
||||||
onMemberRowClicked = { },
|
onMemberRowClicked = { },
|
||||||
onClassSelectionClicked = { },
|
onClassSelectionClicked = { }
|
||||||
configManager = AppConfigManager(null),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,12 @@ import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.ExperimentalMaterialApi
|
import androidx.compose.material3.BottomSheetScaffoldState
|
||||||
import androidx.compose.material.ModalBottomSheetLayout
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material.ModalBottomSheetValue
|
import androidx.compose.material3.ModalBottomSheet
|
||||||
import androidx.compose.material.rememberModalBottomSheetState
|
import androidx.compose.material3.SheetState
|
||||||
|
import androidx.compose.material3.SheetValue
|
||||||
|
import androidx.compose.material3.rememberModalBottomSheetState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.DisposableEffect
|
import androidx.compose.runtime.DisposableEffect
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
|
@ -37,13 +39,13 @@ import kotlinx.coroutines.launch
|
||||||
|
|
||||||
// Extension for Activity
|
// Extension for Activity
|
||||||
fun Activity.showAsBottomSheet(content: @Composable (() -> Unit) -> Unit) {
|
fun Activity.showAsBottomSheet(content: @Composable (() -> Unit) -> Unit) {
|
||||||
val viewGroup = this.findViewById(android.R.id.content) as ViewGroup
|
val viewGroup: ViewGroup = this.findViewById(android.R.id.content)
|
||||||
addContentToView(viewGroup, content)
|
addContentToView(viewGroup, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extension for Fragment
|
// Extension for Fragment
|
||||||
fun Fragment.showAsBottomSheet(content: @Composable (() -> Unit) -> Unit) {
|
fun Fragment.showAsBottomSheet(content: @Composable (() -> Unit) -> Unit) {
|
||||||
val viewGroup = requireActivity().findViewById(android.R.id.content) as ViewGroup
|
val viewGroup: ViewGroup = requireActivity().findViewById(android.R.id.content)
|
||||||
addContentToView(viewGroup, content)
|
addContentToView(viewGroup, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -63,7 +65,7 @@ private fun addContentToView(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterialApi::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
private fun BottomSheetWrapper(
|
private fun BottomSheetWrapper(
|
||||||
parent: ViewGroup,
|
parent: ViewGroup,
|
||||||
|
|
@ -72,7 +74,7 @@ private fun BottomSheetWrapper(
|
||||||
) {
|
) {
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
val modalBottomSheetState =
|
val modalBottomSheetState =
|
||||||
rememberModalBottomSheetState(ModalBottomSheetValue.Hidden, skipHalfExpanded = true)
|
rememberModalBottomSheetState(skipPartiallyExpanded = true)
|
||||||
var isSheetOpened by remember { mutableStateOf(false) }
|
var isSheetOpened by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
val systemUiController = rememberSystemUiController()
|
val systemUiController = rememberSystemUiController()
|
||||||
|
|
@ -83,12 +85,13 @@ private fun BottomSheetWrapper(
|
||||||
}
|
}
|
||||||
|
|
||||||
val radius = 20.dp
|
val radius = 20.dp
|
||||||
ModalBottomSheetLayout(
|
ModalBottomSheet(
|
||||||
sheetBackgroundColor = Color.Transparent,
|
{},
|
||||||
|
containerColor = Color.Transparent,
|
||||||
scrimColor = colorResource(R.color.content_background).copy(alpha = 0.5f),
|
scrimColor = colorResource(R.color.content_background).copy(alpha = 0.5f),
|
||||||
sheetState = modalBottomSheetState,
|
sheetState = modalBottomSheetState,
|
||||||
sheetShape = RoundedCornerShape(topStart = radius, topEnd = radius),
|
shape = RoundedCornerShape(topStart = radius, topEnd = radius),
|
||||||
sheetContent = {
|
content = {
|
||||||
Column(
|
Column(
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
modifier =
|
modifier =
|
||||||
|
|
@ -115,7 +118,7 @@ private fun BottomSheetWrapper(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
) {}
|
)
|
||||||
|
|
||||||
BackHandler {
|
BackHandler {
|
||||||
coroutineScope.launch {
|
coroutineScope.launch {
|
||||||
|
|
@ -126,7 +129,7 @@ private fun BottomSheetWrapper(
|
||||||
// Take action based on hidden state
|
// Take action based on hidden state
|
||||||
LaunchedEffect(modalBottomSheetState.currentValue) {
|
LaunchedEffect(modalBottomSheetState.currentValue) {
|
||||||
when (modalBottomSheetState.currentValue) {
|
when (modalBottomSheetState.currentValue) {
|
||||||
ModalBottomSheetValue.Hidden -> {
|
SheetValue.Hidden -> {
|
||||||
when {
|
when {
|
||||||
isSheetOpened -> {
|
isSheetOpened -> {
|
||||||
systemUiController.setStatusBarColor(statusBarColor, darkIcons = false)
|
systemUiController.setStatusBarColor(statusBarColor, darkIcons = false)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.habitrpg.android.habitica.ui.views
|
||||||
|
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import android.text.format.DateUtils
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ import androidx.compose.animation.core.animateFloatAsState
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.ProgressIndicatorDefaults
|
import androidx.compose.material3.ProgressIndicatorDefaults
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -77,7 +77,7 @@ fun GroupPlanMemberList(
|
||||||
member,
|
member,
|
||||||
role,
|
role,
|
||||||
onMemberClicked,
|
onMemberClicked,
|
||||||
configManager,
|
configManager = configManager,
|
||||||
modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp),
|
modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -90,8 +90,8 @@ fun MemberItem(
|
||||||
member: Member,
|
member: Member,
|
||||||
role: String,
|
role: String,
|
||||||
onMemberClicked: (String) -> Unit,
|
onMemberClicked: (String) -> Unit,
|
||||||
configManager: AppConfigManager,
|
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
configManager: AppConfigManager? = null,
|
||||||
) {
|
) {
|
||||||
Box(
|
Box(
|
||||||
modifier
|
modifier
|
||||||
|
|
@ -232,5 +232,5 @@ private class MemberProvider : PreviewParameterProvider<Member> {
|
||||||
private fun Preview(
|
private fun Preview(
|
||||||
@PreviewParameter(MemberProvider::class) member: Member,
|
@PreviewParameter(MemberProvider::class) member: Member,
|
||||||
) {
|
) {
|
||||||
MemberItem(member = member, role = "Manager", onMemberClicked = {}, AppConfigManager(null))
|
MemberItem(member = member, role = "Manager", onMemberClicked = {})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.ProvideTextStyle
|
import androidx.compose.material3.ProvideTextStyle
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.LinearProgressIndicator
|
import androidx.compose.material3.LinearProgressIndicator
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
|
|
||||||
|
|
@ -25,14 +25,14 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.requiredHeight
|
import androidx.compose.foundation.layout.requiredHeight
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material.ButtonColors
|
import androidx.compose.material3.ButtonColors
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.ButtonElevation
|
import androidx.compose.material3.ButtonElevation
|
||||||
import androidx.compose.material.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.ProvideTextStyle
|
import androidx.compose.material3.ProvideTextStyle
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
|
@ -76,7 +76,7 @@ fun LoadingButton(
|
||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
type: LoadingButtonType = LoadingButtonType.NORMAL,
|
type: LoadingButtonType = LoadingButtonType.NORMAL,
|
||||||
elevation: ButtonElevation? = ButtonDefaults.elevation(0.dp),
|
elevation: ButtonElevation? = ButtonDefaults.buttonElevation(),
|
||||||
shape: Shape = MaterialTheme.shapes.medium,
|
shape: Shape = MaterialTheme.shapes.medium,
|
||||||
border: BorderStroke? = null,
|
border: BorderStroke? = null,
|
||||||
colors: ButtonColors? = null,
|
colors: ButtonColors? = null,
|
||||||
|
|
@ -88,16 +88,16 @@ fun LoadingButton(
|
||||||
val colorStyle =
|
val colorStyle =
|
||||||
if (type == LoadingButtonType.DESTRUCTIVE) {
|
if (type == LoadingButtonType.DESTRUCTIVE) {
|
||||||
ButtonDefaults.buttonColors(
|
ButtonDefaults.buttonColors(
|
||||||
backgroundColor = HabiticaTheme.colors.errorBackground,
|
containerColor = HabiticaTheme.colors.errorBackground,
|
||||||
contentColor = Color.White,
|
contentColor = Color.White,
|
||||||
disabledBackgroundColor = HabiticaTheme.colors.offsetBackground,
|
disabledContainerColor = HabiticaTheme.colors.offsetBackground,
|
||||||
disabledContentColor = HabiticaTheme.colors.textQuad,
|
disabledContentColor = HabiticaTheme.colors.textQuad,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
ButtonDefaults.buttonColors(
|
ButtonDefaults.buttonColors(
|
||||||
backgroundColor = HabiticaTheme.colors.tintedUiSub,
|
containerColor = HabiticaTheme.colors.tintedUiSub,
|
||||||
contentColor = Color.White,
|
contentColor = Color.White,
|
||||||
disabledBackgroundColor = HabiticaTheme.colors.offsetBackground,
|
disabledContainerColor = HabiticaTheme.colors.offsetBackground,
|
||||||
disabledContentColor = HabiticaTheme.colors.textQuad,
|
disabledContentColor = HabiticaTheme.colors.textQuad,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +108,7 @@ fun LoadingButton(
|
||||||
when (state) {
|
when (state) {
|
||||||
LoadingButtonState.FAILED -> HabiticaTheme.colors.errorBackground
|
LoadingButtonState.FAILED -> HabiticaTheme.colors.errorBackground
|
||||||
LoadingButtonState.SUCCESS -> Color.Transparent
|
LoadingButtonState.SUCCESS -> Color.Transparent
|
||||||
else -> colorStyle.backgroundColor(enabled = state != LoadingButtonState.DISABLED).value
|
else -> if (state != LoadingButtonState.DISABLED) colorStyle.disabledContainerColor else colorStyle.containerColor
|
||||||
},
|
},
|
||||||
animationSpec = colorSpec,
|
animationSpec = colorSpec,
|
||||||
)
|
)
|
||||||
|
|
@ -118,7 +118,7 @@ fun LoadingButton(
|
||||||
when (state) {
|
when (state) {
|
||||||
LoadingButtonState.FAILED -> Color.White
|
LoadingButtonState.FAILED -> Color.White
|
||||||
LoadingButtonState.SUCCESS -> if (type == LoadingButtonType.DESTRUCTIVE) HabiticaTheme.colors.errorColor else HabiticaTheme.colors.successColor
|
LoadingButtonState.SUCCESS -> if (type == LoadingButtonType.DESTRUCTIVE) HabiticaTheme.colors.errorColor else HabiticaTheme.colors.successColor
|
||||||
else -> colorStyle.contentColor(enabled = state != LoadingButtonState.DISABLED).value
|
else -> if (state != LoadingButtonState.DISABLED) colorStyle.disabledContentColor else colorStyle.disabledContainerColor
|
||||||
},
|
},
|
||||||
animationSpec = colorSpec,
|
animationSpec = colorSpec,
|
||||||
)
|
)
|
||||||
|
|
@ -134,9 +134,9 @@ fun LoadingButton(
|
||||||
|
|
||||||
val buttonColors =
|
val buttonColors =
|
||||||
ButtonDefaults.buttonColors(
|
ButtonDefaults.buttonColors(
|
||||||
backgroundColor = backgroundColor.value,
|
containerColor = backgroundColor.value,
|
||||||
contentColor = contentColor.value,
|
contentColor = contentColor.value,
|
||||||
disabledBackgroundColor = backgroundColor.value,
|
disabledContainerColor = backgroundColor.value,
|
||||||
disabledContentColor = contentColor.value,
|
disabledContentColor = contentColor.value,
|
||||||
)
|
)
|
||||||
Button(
|
Button(
|
||||||
|
|
@ -235,9 +235,9 @@ private fun Preview() {
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
verticalArrangement = Arrangement.spacedBy(8.dp),
|
verticalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
modifier =
|
modifier =
|
||||||
Modifier
|
Modifier
|
||||||
.width(200.dp)
|
.width(200.dp)
|
||||||
.padding(8.dp),
|
.padding(8.dp),
|
||||||
) {
|
) {
|
||||||
LoadingButton(state, {
|
LoadingButton(state, {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
|
|
@ -263,7 +263,7 @@ private fun Preview() {
|
||||||
{},
|
{},
|
||||||
colors =
|
colors =
|
||||||
ButtonDefaults.buttonColors(
|
ButtonDefaults.buttonColors(
|
||||||
backgroundColor = HabiticaTheme.colors.successBackground,
|
containerColor = HabiticaTheme.colors.successBackground,
|
||||||
contentColor = Color.White,
|
contentColor = Color.White,
|
||||||
),
|
),
|
||||||
content = {
|
content = {
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.layout.wrapContentSize
|
import androidx.compose.foundation.layout.wrapContentSize
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.OutlinedButton
|
import androidx.compose.material3.OutlinedButton
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableIntStateOf
|
import androidx.compose.runtime.mutableIntStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
|
@ -39,7 +39,7 @@ fun SegmentedControl(
|
||||||
onItemSelection: (selectedItemIndex: Int) -> Unit,
|
onItemSelection: (selectedItemIndex: Int) -> Unit,
|
||||||
) {
|
) {
|
||||||
val selectedIndex = remember { mutableIntStateOf(defaultSelectedItemIndex) }
|
val selectedIndex = remember { mutableIntStateOf(defaultSelectedItemIndex) }
|
||||||
val color = MaterialTheme.colors.primary
|
val color = MaterialTheme.colorScheme.primary
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier,
|
modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
|
|
@ -52,12 +52,12 @@ fun SegmentedControl(
|
||||||
Modifier
|
Modifier
|
||||||
.width(itemWidth)
|
.width(itemWidth)
|
||||||
.offset(0.dp, 0.dp)
|
.offset(0.dp, 0.dp)
|
||||||
.zIndex(if (selectedIndex.value == 0) 1f else 0f)
|
.zIndex(if (selectedIndex.intValue == 0) 1f else 0f)
|
||||||
} else {
|
} else {
|
||||||
Modifier
|
Modifier
|
||||||
.wrapContentSize()
|
.wrapContentSize()
|
||||||
.offset(0.dp, 0.dp)
|
.offset(0.dp, 0.dp)
|
||||||
.zIndex(if (selectedIndex.value == 0) 1f else 0f)
|
.zIndex(if (selectedIndex.intValue == 0) 1f else 0f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,18 +66,18 @@ fun SegmentedControl(
|
||||||
Modifier
|
Modifier
|
||||||
.width(itemWidth)
|
.width(itemWidth)
|
||||||
.offset((-1 * index).dp, 0.dp)
|
.offset((-1 * index).dp, 0.dp)
|
||||||
.zIndex(if (selectedIndex.value == index) 1f else 0f)
|
.zIndex(if (selectedIndex.intValue == index) 1f else 0f)
|
||||||
} else {
|
} else {
|
||||||
Modifier
|
Modifier
|
||||||
.wrapContentSize()
|
.wrapContentSize()
|
||||||
.offset((-1 * index).dp, 0.dp)
|
.offset((-1 * index).dp, 0.dp)
|
||||||
.zIndex(if (selectedIndex.value == index) 1f else 0f)
|
.zIndex(if (selectedIndex.intValue == index) 1f else 0f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onClick = {
|
onClick = {
|
||||||
selectedIndex.value = index
|
selectedIndex.intValue = index
|
||||||
onItemSelection(selectedIndex.value)
|
onItemSelection(selectedIndex.intValue)
|
||||||
},
|
},
|
||||||
shape =
|
shape =
|
||||||
when (index) {
|
when (index) {
|
||||||
|
|
@ -115,32 +115,32 @@ fun SegmentedControl(
|
||||||
border =
|
border =
|
||||||
BorderStroke(
|
BorderStroke(
|
||||||
1.dp,
|
1.dp,
|
||||||
if (selectedIndex.value == index) {
|
if (selectedIndex.intValue == index) {
|
||||||
color
|
color
|
||||||
} else {
|
} else {
|
||||||
color.copy(alpha = 0.75f)
|
color.copy(alpha = 0.75f)
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
colors =
|
colors =
|
||||||
if (selectedIndex.value == index) {
|
if (selectedIndex.intValue == index) {
|
||||||
/**
|
/**
|
||||||
* selected colors
|
* selected colors
|
||||||
*/
|
*/
|
||||||
ButtonDefaults.outlinedButtonColors(
|
ButtonDefaults.outlinedButtonColors(
|
||||||
backgroundColor = color,
|
containerColor = color,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
/**
|
/**
|
||||||
* not selected colors
|
* not selected colors
|
||||||
*/
|
*/
|
||||||
ButtonDefaults.outlinedButtonColors(backgroundColor = Color.Transparent)
|
ButtonDefaults.outlinedButtonColors(containerColor = Color.Transparent)
|
||||||
},
|
},
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = item,
|
text = item,
|
||||||
fontWeight = FontWeight.Normal,
|
fontWeight = FontWeight.Normal,
|
||||||
color =
|
color =
|
||||||
if (selectedIndex.value == index) {
|
if (selectedIndex.intValue == index) {
|
||||||
Color.White
|
Color.White
|
||||||
} else {
|
} else {
|
||||||
color.copy(alpha = 0.9f)
|
color.copy(alpha = 0.9f)
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.requiredSize
|
import androidx.compose.foundation.layout.requiredSize
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -62,7 +62,7 @@ fun UserRow(
|
||||||
"@$username",
|
"@$username",
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
color = color ?: MaterialTheme.colors.primary,
|
color = color ?: MaterialTheme.colorScheme.primary,
|
||||||
)
|
)
|
||||||
if (extraContent != null) {
|
if (extraContent != null) {
|
||||||
extraContent()
|
extraContent()
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ import android.widget.TextView
|
||||||
import androidx.compose.foundation.Image
|
import androidx.compose.foundation.Image
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.material.ProvideTextStyle
|
import androidx.compose.material3.ProvideTextStyle
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.ui.views.preferences
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,13 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.ExperimentalMaterialApi
|
import androidx.compose.material3.ExperimentalMaterialApi
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Surface
|
import androidx.compose.material3.Surface
|
||||||
import androidx.compose.material.pullrefresh.PullRefreshState
|
import androidx.compose.material3.pullrefresh.PullRefreshState
|
||||||
import androidx.compose.material.pullrefresh.pullRefresh
|
import androidx.compose.material3.pullrefresh.pullRefresh
|
||||||
import androidx.compose.material.pullrefresh.pullRefreshIndicatorTransform
|
import androidx.compose.material3.pullrefresh.pullRefreshIndicatorTransform
|
||||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
import androidx.compose.material3.pullrefresh.rememberPullRefreshState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.offset
|
import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.requiredSize
|
import androidx.compose.foundation.layout.requiredSize
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,8 @@ class PurchaseDialog(
|
||||||
private var purchaseCardAction: ((ShopItem) -> Unit)? = null
|
private var purchaseCardAction: ((ShopItem) -> Unit)? = null
|
||||||
var onShopNeedsRefresh: ((ShopItem) -> Unit)? = null
|
var onShopNeedsRefresh: ((ShopItem) -> Unit)? = null
|
||||||
|
|
||||||
|
private var gemsLeft = 0
|
||||||
|
|
||||||
private var shopItem: ShopItem = item
|
private var shopItem: ShopItem = item
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value
|
field = value
|
||||||
|
|
@ -307,7 +309,7 @@ class PurchaseDialog(
|
||||||
|
|
||||||
if ("gems" == shopItem.purchaseType) {
|
if ("gems" == shopItem.purchaseType) {
|
||||||
val maxGems = user.purchased?.plan?.totalNumberOfGems ?: 0
|
val maxGems = user.purchased?.plan?.totalNumberOfGems ?: 0
|
||||||
val gemsLeft = user.purchased?.plan?.numberOfGemsLeft
|
gemsLeft = user.purchased?.plan?.numberOfGemsLeft ?: 0
|
||||||
if (maxGems > 0) {
|
if (maxGems > 0) {
|
||||||
limitedTextView.text = context.getString(R.string.gems_left_max, gemsLeft, maxGems)
|
limitedTextView.text = context.getString(R.string.gems_left_max, gemsLeft, maxGems)
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -347,8 +349,7 @@ class PurchaseDialog(
|
||||||
|
|
||||||
private fun onBuyButtonClicked() {
|
private fun onBuyButtonClicked() {
|
||||||
if (shopItem.isValid && !shopItem.locked) {
|
if (shopItem.isValid && !shopItem.locked) {
|
||||||
val gemsLeft = if (shopItem.limitedNumberLeft != null) shopItem.limitedNumberLeft else 0
|
if ((gemsLeft > 0 && shopItem.purchaseType == "gems") || shopItem.canAfford(user, purchaseQuantity)) {
|
||||||
if ((gemsLeft == 0 && shopItem.purchaseType == "gems") || shopItem.canAfford(user, purchaseQuantity)) {
|
|
||||||
MainScope().launch(Dispatchers.Main) {
|
MainScope().launch(Dispatchers.Main) {
|
||||||
remainingPurchaseQuantity { quantity ->
|
remainingPurchaseQuantity { quantity ->
|
||||||
if (quantity >= 0) {
|
if (quantity >= 0) {
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@ import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.material.Divider
|
import androidx.compose.material3.Divider
|
||||||
import androidx.compose.material.ProvideTextStyle
|
import androidx.compose.material3.ProvideTextStyle
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -54,7 +54,7 @@ fun PartySeekingListItem(
|
||||||
isInvited: Boolean = false,
|
isInvited: Boolean = false,
|
||||||
showHeader: Boolean = false,
|
showHeader: Boolean = false,
|
||||||
showExtendedInfo: Boolean = true,
|
showExtendedInfo: Boolean = true,
|
||||||
configManager: AppConfigManager,
|
configManager: AppConfigManager? = null,
|
||||||
onInvite: (Member) -> Unit,
|
onInvite: (Member) -> Unit,
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
|
|
@ -214,5 +214,5 @@ private class MemberProvider : PreviewParameterProvider<Member> {
|
||||||
private fun Preview(
|
private fun Preview(
|
||||||
@PreviewParameter(MemberProvider::class) data: Member,
|
@PreviewParameter(MemberProvider::class) data: Member,
|
||||||
) {
|
) {
|
||||||
PartySeekingListItem(user = data, onInvite = {}, configManager = AppConfigManager(null))
|
PartySeekingListItem(user = data, onInvite = {})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.offset
|
import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ import androidx.compose.foundation.layout.offset
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.LinearProgressIndicator
|
import androidx.compose.material3.LinearProgressIndicator
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,9 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material.TextButton
|
import androidx.compose.material3.TextButton
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,10 @@ import androidx.compose.foundation.layout.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material3.ButtonDefaults
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.material.TextButton
|
import androidx.compose.material3.TextButton
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import androidx.compose.foundation.layout.heightIn
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
|
|
|
||||||
10
build.gradle
10
build.gradle
|
|
@ -10,18 +10,18 @@ buildscript {
|
||||||
app_version_name = ''
|
app_version_name = ''
|
||||||
app_version_code = 0
|
app_version_code = 0
|
||||||
|
|
||||||
accompanist_version = '0.28.0'
|
accompanist_version = '0.30.0'
|
||||||
amplitude_version = '1.6.1'
|
amplitude_version = '1.6.1'
|
||||||
appcompat_version = '1.6.1'
|
appcompat_version = '1.6.1'
|
||||||
coil_version = '2.4.0'
|
coil_version = '2.4.0'
|
||||||
compose_version = '1.6.6'
|
compose_version = '1.6.7'
|
||||||
compose_compiler = '1.5.12'
|
compose_compiler = '1.5.12'
|
||||||
core_ktx_version = '1.13.0'
|
core_ktx_version = '1.13.1'
|
||||||
coroutines_version = '1.7.3'
|
coroutines_version = '1.7.3'
|
||||||
daggerhilt_version = '2.51.1'
|
daggerhilt_version = '2.51.1'
|
||||||
firebase_bom = '31.3.0'
|
firebase_bom = '31.3.0'
|
||||||
kotest_version = '5.6.2'
|
kotest_version = '5.6.2'
|
||||||
kotlin_version = '1.9.23'
|
kotlin_version = '1.9.24'
|
||||||
ktlint_version = '1.2.1'
|
ktlint_version = '1.2.1'
|
||||||
lifecycle_version = '2.7.0'
|
lifecycle_version = '2.7.0'
|
||||||
markwon_version = '4.6.2'
|
markwon_version = '4.6.2'
|
||||||
|
|
@ -47,7 +47,7 @@ buildscript {
|
||||||
classpath 'com.android.tools.build:gradle:8.3.2'
|
classpath 'com.android.tools.build:gradle:8.3.2'
|
||||||
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
|
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
|
||||||
classpath 'com.google.gms:google-services:4.4.1'
|
classpath 'com.google.gms:google-services:4.4.1'
|
||||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
|
classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.1'
|
||||||
classpath "io.realm:realm-gradle-plugin:10.13.2-transformer-api"
|
classpath "io.realm:realm-gradle-plugin:10.13.2-transformer-api"
|
||||||
classpath("io.realm.kotlin:gradle-plugin:$realm_version")
|
classpath("io.realm.kotlin:gradle-plugin:$realm_version")
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@ dependencies {
|
||||||
implementation("androidx.recyclerview:recyclerview:1.3.2")
|
implementation("androidx.recyclerview:recyclerview:1.3.2")
|
||||||
implementation("androidx.navigation:navigation-common-ktx:$navigation_version")
|
implementation("androidx.navigation:navigation-common-ktx:$navigation_version")
|
||||||
implementation("androidx.navigation:navigation-runtime-ktx:$navigation_version")
|
implementation("androidx.navigation:navigation-runtime-ktx:$navigation_version")
|
||||||
implementation("com.google.android.material:material:1.11.0")
|
implementation("com.google.android.material:material:1.12.0")
|
||||||
|
|
||||||
testImplementation("io.mockk:mockk:$mockk_version")
|
testImplementation("io.mockk:mockk:$mockk_version")
|
||||||
testImplementation("io.mockk:mockk-android:$mockk_version")
|
testImplementation("io.mockk:mockk-android:$mockk_version")
|
||||||
|
|
@ -134,14 +134,13 @@ dependencies {
|
||||||
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
||||||
androidTestImplementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
|
androidTestImplementation("org.jetbrains.kotlin:kotlin-reflect:$kotlin_version")
|
||||||
|
|
||||||
implementation("androidx.activity:activity-compose:1.8.2")
|
implementation("androidx.activity:activity-compose:1.9.0")
|
||||||
implementation("androidx.compose.runtime:runtime-livedata:$compose_version")
|
implementation("androidx.compose.runtime:runtime-livedata:$compose_version")
|
||||||
implementation("androidx.compose.material:material:$compose_version")
|
|
||||||
implementation("androidx.compose.animation:animation:$compose_version")
|
implementation("androidx.compose.animation:animation:$compose_version")
|
||||||
implementation("androidx.compose.ui:ui-text-google-fonts:$compose_version")
|
implementation("androidx.compose.ui:ui-text-google-fonts:$compose_version")
|
||||||
implementation("androidx.compose.ui:ui-tooling:$compose_version")
|
implementation("androidx.compose.ui:ui-tooling:$compose_version")
|
||||||
implementation("androidx.compose.material3:material3:1.2.0")
|
implementation("androidx.compose.material3:material3:1.2.1")
|
||||||
implementation("com.google.accompanist:accompanist-themeadapter-material:$accompanist_version")
|
implementation("com.google.accompanist:accompanist-themeadapter-material3:$accompanist_version")
|
||||||
|
|
||||||
implementation(project(":shared"))
|
implementation(project(":shared"))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,18 @@
|
||||||
package com.habitrpg.common.habitica.theme
|
package com.habitrpg.common.habitica.theme
|
||||||
|
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material.Shapes
|
import androidx.compose.material3.Shapes
|
||||||
import androidx.compose.material.Typography
|
import androidx.compose.material3.Typography
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalLayoutDirection
|
import androidx.compose.ui.platform.LocalLayoutDirection
|
||||||
import androidx.compose.ui.text.TextStyle
|
import androidx.compose.ui.text.TextStyle
|
||||||
import androidx.compose.ui.text.font.FontFamily
|
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import com.google.accompanist.themeadapter.material.createMdcTheme
|
import com.google.accompanist.themeadapter.material3.createMdc3Theme
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun HabiticaTheme(
|
fun HabiticaTheme(
|
||||||
|
|
@ -22,65 +21,64 @@ fun HabiticaTheme(
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val layoutDirection = LocalLayoutDirection.current
|
val layoutDirection = LocalLayoutDirection.current
|
||||||
val (colors, _, _) =
|
val (colors, _, _) =
|
||||||
createMdcTheme(
|
createMdc3Theme(
|
||||||
context = context,
|
context = context,
|
||||||
layoutDirection = layoutDirection,
|
layoutDirection = layoutDirection,
|
||||||
setTextColors = true,
|
setTextColors = true,
|
||||||
)
|
)
|
||||||
MaterialTheme(
|
MaterialTheme(
|
||||||
colors = colors ?: MaterialTheme.colors,
|
colorScheme = colors ?: MaterialTheme.colorScheme,
|
||||||
typography =
|
typography =
|
||||||
Typography(
|
Typography(
|
||||||
defaultFontFamily = FontFamily.Default,
|
displayLarge =
|
||||||
h1 =
|
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
fontSize = 20.sp,
|
fontSize = 20.sp,
|
||||||
letterSpacing = (0.05).sp,
|
letterSpacing = (0.05).sp,
|
||||||
),
|
),
|
||||||
h2 =
|
displayMedium =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Normal,
|
fontWeight = FontWeight.Normal,
|
||||||
fontSize = 28.sp,
|
fontSize = 28.sp,
|
||||||
letterSpacing = (0.05).sp,
|
letterSpacing = (0.05).sp,
|
||||||
),
|
),
|
||||||
subtitle1 =
|
titleLarge =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
),
|
),
|
||||||
subtitle2 =
|
titleMedium =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Normal,
|
fontWeight = FontWeight.Normal,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
letterSpacing = 0.1.sp,
|
letterSpacing = 0.1.sp,
|
||||||
),
|
),
|
||||||
body1 =
|
bodyLarge =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
fontSize = 14.sp,
|
fontSize = 14.sp,
|
||||||
letterSpacing = 0.35.sp,
|
letterSpacing = 0.35.sp,
|
||||||
lineHeight = 16.sp,
|
lineHeight = 16.sp,
|
||||||
),
|
),
|
||||||
body2 =
|
bodyMedium =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Normal,
|
fontWeight = FontWeight.Normal,
|
||||||
fontSize = 14.sp,
|
fontSize = 14.sp,
|
||||||
letterSpacing = 0.2.sp,
|
letterSpacing = 0.2.sp,
|
||||||
lineHeight = 16.sp,
|
lineHeight = 16.sp,
|
||||||
),
|
),
|
||||||
button =
|
labelMedium =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
fontSize = 14.sp,
|
fontSize = 14.sp,
|
||||||
letterSpacing = 1.25.sp,
|
letterSpacing = 1.25.sp,
|
||||||
),
|
),
|
||||||
caption =
|
labelSmall =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Bold,
|
fontWeight = FontWeight.Bold,
|
||||||
fontSize = 12.sp,
|
fontSize = 12.sp,
|
||||||
),
|
),
|
||||||
overline =
|
titleSmall =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
fontSize = 10.sp,
|
fontSize = 10.sp,
|
||||||
|
|
@ -98,7 +96,7 @@ fun HabiticaTheme(
|
||||||
}
|
}
|
||||||
|
|
||||||
val Typography.caption1
|
val Typography.caption1
|
||||||
get() = caption
|
get() = labelMedium
|
||||||
val Typography.caption2
|
val Typography.caption2
|
||||||
get() =
|
get() =
|
||||||
TextStyle(
|
TextStyle(
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import com.habitrpg.shared.habitica.models.Avatar
|
||||||
@Composable
|
@Composable
|
||||||
fun ComposableAvatarView(
|
fun ComposableAvatarView(
|
||||||
avatar: Avatar?,
|
avatar: Avatar?,
|
||||||
configManager: AppConfigManager,
|
configManager: AppConfigManager?,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
AndroidView(
|
AndroidView(
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
NAME=4.3.7
|
NAME=4.3.7
|
||||||
CODE=7671
|
CODE=7701
|
||||||
Loading…
Reference in a new issue