Add ResolvableSource interface for potentially opening entries directly based on some URI via a share intent

Implemented as an intermediate step in the existing Global Search share intent workflow.
If any source manages to resolve the URI (e.g., a URL, a slug, etc.), the resolved SManga entry
is directly opened. If nothing gets resolved, continue to a Global Search.
This commit is contained in:
arkon
2023-08-25 22:25:00 -04:00
parent 2bf263e301
commit 6d9a8a30e9
12 changed files with 144 additions and 10 deletions

View File

@@ -76,7 +76,7 @@ fun ExtensionScreen(
enabled = !state.isLoading,
) {
when {
state.isLoading -> LoadingScreen(modifier = Modifier.padding(contentPadding))
state.isLoading -> LoadingScreen(Modifier.padding(contentPadding))
state.isEmpty -> {
val msg = if (!searchQuery.isNullOrEmpty()) {
R.string.no_results_found

View File

@@ -51,7 +51,7 @@ fun MigrateSourceScreen(
) {
val context = LocalContext.current
when {
state.isLoading -> LoadingScreen(modifier = Modifier.padding(contentPadding))
state.isLoading -> LoadingScreen(Modifier.padding(contentPadding))
state.isEmpty -> EmptyScreen(
textResource = R.string.information_empty_library,
modifier = Modifier.padding(contentPadding),

View File

@@ -47,7 +47,7 @@ fun SourcesScreen(
onLongClickItem: (Source) -> Unit,
) {
when {
state.isLoading -> LoadingScreen(modifier = Modifier.padding(contentPadding))
state.isLoading -> LoadingScreen(Modifier.padding(contentPadding))
state.isEmpty -> EmptyScreen(
textResource = R.string.source_empty_screen,
modifier = Modifier.padding(contentPadding),

View File

@@ -65,7 +65,7 @@ fun HistoryScreen(
) { contentPadding ->
state.list.let {
if (it == null) {
LoadingScreen(modifier = Modifier.padding(contentPadding))
LoadingScreen(Modifier.padding(contentPadding))
} else if (it.isEmpty()) {
val msg = if (!state.searchQuery.isNullOrEmpty()) {
R.string.no_results_found

View File

@@ -81,7 +81,7 @@ fun UpdateScreen(
snackbarHost = { SnackbarHost(hostState = snackbarHostState) },
) { contentPadding ->
when {
state.isLoading -> LoadingScreen(modifier = Modifier.padding(contentPadding))
state.isLoading -> LoadingScreen(Modifier.padding(contentPadding))
state.items.isEmpty() -> EmptyScreen(
textResource = R.string.information_no_recent,
modifier = Modifier.padding(contentPadding),