feat: support painterResource in SocialItem

This commit is contained in:
Ushie 2022-10-06 22:26:48 +03:00
parent 31dce1a0f8
commit 0533381dd6
No known key found for this signature in database
GPG Key ID: 0EF73F1CA38B2D5F

View File

@ -1,9 +1,8 @@
package app.revanced.manager.ui.component package app.revanced.manager.ui.component
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Code
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.ListItem import androidx.compose.material3.ListItem
@ -11,32 +10,39 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import app.revanced.manager.R
import app.revanced.manager.util.ghOrganization
import app.revanced.manager.util.openUrl
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun SocialItem(@StringRes label: Int, vec: ImageVector, fn: () -> Unit) { fun SocialItem(@StringRes label: Int, imageVector: ImageVector? = null, fn: () -> Unit) {
val rsc = stringResource(label)
ListItem( ListItem(
modifier = Modifier.clickable { fn() }, modifier = Modifier.clickable { fn() },
leadingContent = { leadingContent = {
Icon( if (imageVector != null) {
imageVector = vec, Icon(
contentDescription = rsc imageVector = imageVector,
) contentDescription = stringResource(label)
)
}
}, },
headlineText = { Text(rsc) } headlineText = { Text(stringResource(label)) }
) )
} }
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun SocialItemPreview() { fun SocialItem(@StringRes label: Int, @DrawableRes painterResource: Int? = null, fn: () -> Unit) {
val ctx = LocalContext.current.applicationContext ListItem(
SocialItem(R.string.github, Icons.Default.Code) { modifier = Modifier.clickable { fn() },
ctx.openUrl(ghOrganization) leadingContent = {
} if (painterResource != null) {
Icon(
painter = painterResource(painterResource),
contentDescription = stringResource(label)
)
}
},
headlineText = { Text(stringResource(label)) }
)
} }