56 lines
1.7 KiB
Kotlin
56 lines
1.7 KiB
Kotlin
package eu.kanade.presentation.theme
|
|
|
|
import androidx.appcompat.view.ContextThemeWrapper
|
|
import androidx.compose.material3.MaterialTheme
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.remember
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.platform.LocalLayoutDirection
|
|
import com.google.accompanist.themeadapter.material3.createMdc3Theme
|
|
import eu.kanade.domain.ui.model.AppTheme
|
|
import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate
|
|
import uy.kohesive.injekt.api.get
|
|
|
|
@Composable
|
|
fun TachiyomiTheme(content: @Composable () -> Unit) {
|
|
val context = LocalContext.current
|
|
val layoutDirection = LocalLayoutDirection.current
|
|
|
|
val (colorScheme, typography) = createMdc3Theme(
|
|
context = context,
|
|
layoutDirection = layoutDirection,
|
|
)
|
|
|
|
MaterialTheme(
|
|
colorScheme = colorScheme!!,
|
|
typography = typography!!,
|
|
content = content,
|
|
)
|
|
}
|
|
|
|
@Composable
|
|
fun TachiyomiTheme(
|
|
appTheme: AppTheme,
|
|
amoled: Boolean,
|
|
content: @Composable () -> Unit,
|
|
) {
|
|
val originalContext = LocalContext.current
|
|
val layoutDirection = LocalLayoutDirection.current
|
|
val themedContext = remember(appTheme, originalContext) {
|
|
val themeResIds = ThemingDelegate.getThemeResIds(appTheme, amoled)
|
|
themeResIds.fold(originalContext) { context, themeResId ->
|
|
ContextThemeWrapper(context, themeResId)
|
|
}
|
|
}
|
|
val (colorScheme, typography) = createMdc3Theme(
|
|
context = themedContext,
|
|
layoutDirection = layoutDirection,
|
|
)
|
|
|
|
MaterialTheme(
|
|
colorScheme = colorScheme!!,
|
|
typography = typography!!,
|
|
content = content,
|
|
)
|
|
}
|