mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	@@ -0,0 +1,78 @@
 | 
			
		||||
package eu.kanade.presentation.more.settings.screen.debug
 | 
			
		||||
 | 
			
		||||
import androidx.compose.foundation.layout.padding
 | 
			
		||||
import androidx.compose.foundation.rememberScrollState
 | 
			
		||||
import androidx.compose.foundation.verticalScroll
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.filled.ArrowBack
 | 
			
		||||
import androidx.compose.material.icons.filled.ContentCopy
 | 
			
		||||
import androidx.compose.material3.Icon
 | 
			
		||||
import androidx.compose.material3.IconButton
 | 
			
		||||
import androidx.compose.material3.Text
 | 
			
		||||
import androidx.compose.material3.TopAppBar
 | 
			
		||||
import androidx.compose.runtime.Composable
 | 
			
		||||
import androidx.compose.runtime.remember
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.platform.LocalContext
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.compose.ui.text.font.FontFamily
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import cafe.adriel.voyager.navigator.LocalNavigator
 | 
			
		||||
import cafe.adriel.voyager.navigator.currentOrThrow
 | 
			
		||||
import eu.kanade.presentation.components.AppBar
 | 
			
		||||
import eu.kanade.presentation.components.AppBarActions
 | 
			
		||||
import eu.kanade.presentation.util.Screen
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.backup.models.Backup
 | 
			
		||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
 | 
			
		||||
import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator
 | 
			
		||||
import tachiyomi.presentation.core.components.material.Scaffold
 | 
			
		||||
 | 
			
		||||
object BackupSchemaScreen : Screen() {
 | 
			
		||||
 | 
			
		||||
    const val title = "Backup file schema"
 | 
			
		||||
 | 
			
		||||
    @Composable
 | 
			
		||||
    override fun Content() {
 | 
			
		||||
        val context = LocalContext.current
 | 
			
		||||
        val navigator = LocalNavigator.currentOrThrow
 | 
			
		||||
 | 
			
		||||
        val schema = remember { ProtoBufSchemaGenerator.generateSchemaText(Backup.serializer().descriptor) }
 | 
			
		||||
 | 
			
		||||
        Scaffold(
 | 
			
		||||
            topBar = {
 | 
			
		||||
                TopAppBar(
 | 
			
		||||
                    title = { Text(text = title) },
 | 
			
		||||
                    navigationIcon = {
 | 
			
		||||
                        IconButton(onClick = navigator::pop) {
 | 
			
		||||
                            Icon(imageVector = Icons.Default.ArrowBack, contentDescription = null)
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    actions = {
 | 
			
		||||
                        AppBarActions(
 | 
			
		||||
                            listOf(
 | 
			
		||||
                                AppBar.Action(
 | 
			
		||||
                                    title = stringResource(R.string.action_copy_to_clipboard),
 | 
			
		||||
                                    icon = Icons.Default.ContentCopy,
 | 
			
		||||
                                    onClick = {
 | 
			
		||||
                                        context.copyToClipboard(title, schema)
 | 
			
		||||
                                    },
 | 
			
		||||
                                ),
 | 
			
		||||
                            ),
 | 
			
		||||
                        )
 | 
			
		||||
                    },
 | 
			
		||||
                    scrollBehavior = it,
 | 
			
		||||
                )
 | 
			
		||||
            },
 | 
			
		||||
        ) { contentPadding ->
 | 
			
		||||
            Text(
 | 
			
		||||
                text = schema,
 | 
			
		||||
                modifier = Modifier
 | 
			
		||||
                    .verticalScroll(rememberScrollState())
 | 
			
		||||
                    .padding(contentPadding)
 | 
			
		||||
                    .padding(16.dp),
 | 
			
		||||
                fontFamily = FontFamily.Monospace,
 | 
			
		||||
            )
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -31,6 +31,10 @@ object DebugInfoScreen : Screen() {
 | 
			
		||||
                        title = WorkerInfoScreen.title,
 | 
			
		||||
                        onClick = { navigator.push(WorkerInfoScreen) },
 | 
			
		||||
                    ),
 | 
			
		||||
                    Preference.PreferenceItem.TextPreference(
 | 
			
		||||
                        title = BackupSchemaScreen.title,
 | 
			
		||||
                        onClick = { navigator.push(BackupSchemaScreen) },
 | 
			
		||||
                    ),
 | 
			
		||||
                    getAppInfoGroup(),
 | 
			
		||||
                    getDeviceInfoGroup(),
 | 
			
		||||
                )
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user