Skip to content

Commit 02e5041

Browse files
committed
Minor extension repo enhancements
- Shortcut to settings from extensions tab - Don't show error toast anymore if nothing's loaded - Ability to copy extension repo URL to clipboard
1 parent 6e822df commit 02e5041

File tree

4 files changed

+31
-15
lines changed

4 files changed

+31
-15
lines changed

‎app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,6 @@ data class TabContent(
101101
val titleRes: StringResource,
102102
val badgeNumber: Int? = null,
103103
val searchEnabled: Boolean = false,
104-
val actions: ImmutableList<AppBar.Action> = persistentListOf(),
104+
val actions: ImmutableList<AppBar.AppBarAction> = persistentListOf(),
105105
val content: @Composable (contentPadding: PaddingValues, snackbarHostState: SnackbarHostState) -> Unit,
106106
)

‎app/src/main/java/eu/kanade/presentation/more/settings/screen/browse/components/ExtensionReposContent.kt‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.foundation.lazy.LazyColumn
99
import androidx.compose.foundation.lazy.LazyListState
1010
import androidx.compose.material.icons.Icons
1111
import androidx.compose.material.icons.automirrored.outlined.Label
12+
import androidx.compose.material.icons.outlined.ContentCopy
1213
import androidx.compose.material.icons.outlined.Delete
1314
import androidx.compose.material3.ElevatedCard
1415
import androidx.compose.material3.Icon
@@ -18,8 +19,12 @@ import androidx.compose.material3.Text
1819
import androidx.compose.runtime.Composable
1920
import androidx.compose.ui.Alignment
2021
import androidx.compose.ui.Modifier
22+
import androidx.compose.ui.platform.LocalContext
23+
import eu.kanade.tachiyomi.util.system.copyToClipboard
2124
import kotlinx.collections.immutable.ImmutableSet
25+
import tachiyomi.i18n.MR
2226
import tachiyomi.presentation.core.components.material.padding
27+
import tachiyomi.presentation.core.i18n.stringResource
2328

2429
@Composable
2530
fun ExtensionReposContent(
@@ -53,6 +58,8 @@ private fun ExtensionRepoListItem(
5358
onDelete: () -> Unit,
5459
modifier: Modifier = Modifier,
5560
) {
61+
val context = LocalContext.current
62+
5663
ElevatedCard(
5764
modifier = modifier,
5865
) {
@@ -74,8 +81,23 @@ private fun ExtensionRepoListItem(
7481
modifier = Modifier.fillMaxWidth(),
7582
horizontalArrangement = Arrangement.End,
7683
) {
84+
IconButton(
85+
onClick = {
86+
val url = "$repo/index.min.json"
87+
context.copyToClipboard(url, url)
88+
},
89+
) {
90+
Icon(
91+
imageVector = Icons.Outlined.ContentCopy,
92+
contentDescription = stringResource(MR.strings.action_copy_to_clipboard),
93+
)
94+
}
95+
7796
IconButton(onClick = onDelete) {
78-
Icon(imageVector = Icons.Outlined.Delete, contentDescription = null)
97+
Icon(
98+
imageVector = Icons.Outlined.Delete,
99+
contentDescription = stringResource(MR.strings.action_delete),
100+
)
79101
}
80102
}
81103
}

‎app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt‎

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,7 @@ internal class ExtensionApi {
3535

3636
suspend fun findExtensions(): List<Extension.Available> {
3737
return withIOContext {
38-
val extensions = sourcePreferences.extensionRepos().get().flatMap { getExtensions(it) }
39-
40-
// Sanity check - a small number of extensions probably means something broke
41-
// with the repo generator
42-
if (extensions.isEmpty()) {
43-
throw Exception()
44-
}
45-
46-
extensions
38+
sourcePreferences.extensionRepos().get().flatMap { getExtensions(it) }
4739
}
4840
}
4941

‎app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionsTab.kt‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package eu.kanade.tachiyomi.ui.browse.extension
22

3-
import androidx.compose.material.icons.Icons
4-
import androidx.compose.material.icons.outlined.Translate
53
import androidx.compose.runtime.Composable
64
import androidx.compose.runtime.collectAsState
75
import androidx.compose.runtime.getValue
@@ -10,6 +8,7 @@ import cafe.adriel.voyager.navigator.currentOrThrow
108
import eu.kanade.presentation.browse.ExtensionScreen
119
import eu.kanade.presentation.components.AppBar
1210
import eu.kanade.presentation.components.TabContent
11+
import eu.kanade.presentation.more.settings.screen.browse.ExtensionReposScreen
1312
import eu.kanade.tachiyomi.extension.model.Extension
1413
import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsScreen
1514
import eu.kanade.tachiyomi.ui.webview.WebViewScreen
@@ -29,11 +28,14 @@ fun extensionsTab(
2928
badgeNumber = state.updates.takeIf { it > 0 },
3029
searchEnabled = true,
3130
actions = persistentListOf(
32-
AppBar.Action(
31+
AppBar.OverflowAction(
3332
title = stringResource(MR.strings.action_filter),
34-
icon = Icons.Outlined.Translate,
3533
onClick = { navigator.push(ExtensionFilterScreen()) },
3634
),
35+
AppBar.OverflowAction(
36+
title = stringResource(MR.strings.label_extension_repos),
37+
onClick = { navigator.push(ExtensionReposScreen()) },
38+
),
3739
),
3840
content = { contentPadding, _ ->
3941
ExtensionScreen(

0 commit comments

Comments
 (0)