mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 23:03:00 +00:00 
			
		
		
		
	Merge pull request #12217 from SttApollo/Update-EmptyStateComposable
This commit is contained in:
		| @@ -4,6 +4,7 @@ import android.content.res.Configuration | ||||
| import androidx.compose.foundation.layout.Arrangement | ||||
| import androidx.compose.foundation.layout.Row | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.heightIn | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.material3.Surface | ||||
| import androidx.compose.material3.Switch | ||||
| @@ -74,7 +75,12 @@ fun RelatedItems(info: StreamInfo) { | ||||
|             } | ||||
|             if (info.relatedItems.isEmpty()) { | ||||
|                 item { | ||||
|                     EmptyStateComposable(EmptyStateSpec.NoVideos) | ||||
|                     EmptyStateComposable( | ||||
|                         spec = EmptyStateSpec.NoVideos, | ||||
|                         modifier = Modifier | ||||
|                             .fillMaxWidth() | ||||
|                             .heightIn(min = 128.dp) | ||||
|                     ) | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| package org.schabi.newpipe.ui.components.video.comment | ||||
|  | ||||
| import android.content.res.Configuration | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.heightIn | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.foundation.lazy.LazyColumn | ||||
| import androidx.compose.foundation.lazy.rememberLazyListState | ||||
| @@ -126,14 +128,22 @@ private fun CommentRepliesDialog( | ||||
|                         } else if (refresh is LoadState.Error) { | ||||
|                             // TODO use error panel instead | ||||
|                             EmptyStateComposable( | ||||
|                                 EmptyStateSpec.DisabledComments.copy( | ||||
|                                 spec = EmptyStateSpec.DisabledComments.copy( | ||||
|                                     descriptionText = { | ||||
|                                         stringResource(R.string.error_unable_to_load_comments) | ||||
|                                     }, | ||||
|                                 ), | ||||
|                                 modifier = Modifier | ||||
|                                     .fillMaxWidth() | ||||
|                                     .heightIn(min = 128.dp) | ||||
|                             ) | ||||
|                         } else { | ||||
|                             EmptyStateComposable(EmptyStateSpec.NoComments) | ||||
|                             EmptyStateComposable( | ||||
|                                 spec = EmptyStateSpec.NoComments, | ||||
|                                 modifier = Modifier | ||||
|                                     .fillMaxWidth() | ||||
|                                     .heightIn(min = 128.dp) | ||||
|                             ) | ||||
|                         } | ||||
|                     } | ||||
|                 } else { | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| package org.schabi.newpipe.ui.components.video.comment | ||||
|  | ||||
| import android.content.res.Configuration | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.heightIn | ||||
| import androidx.compose.foundation.layout.padding | ||||
| import androidx.compose.foundation.lazy.LazyColumn | ||||
| import androidx.compose.foundation.lazy.rememberLazyListState | ||||
| @@ -68,11 +70,22 @@ private fun CommentSection( | ||||
|  | ||||
|                     if (commentInfo.isCommentsDisabled) { | ||||
|                         item { | ||||
|                             EmptyStateComposable(EmptyStateSpec.DisabledComments) | ||||
|                             EmptyStateComposable( | ||||
|                                 spec = EmptyStateSpec.DisabledComments, | ||||
|                                 modifier = Modifier | ||||
|                                     .fillMaxWidth() | ||||
|                                     .heightIn(min = 128.dp) | ||||
|  | ||||
|                             ) | ||||
|                         } | ||||
|                     } else if (count == 0) { | ||||
|                         item { | ||||
|                             EmptyStateComposable(EmptyStateSpec.NoComments) | ||||
|                             EmptyStateComposable( | ||||
|                                 spec = EmptyStateSpec.NoComments, | ||||
|                                 modifier = Modifier | ||||
|                                     .fillMaxWidth() | ||||
|                                     .heightIn(min = 128.dp) | ||||
|                             ) | ||||
|                         } | ||||
|                     } else { | ||||
|                         // do not show anything if the comment count is unknown | ||||
| @@ -121,11 +134,14 @@ private fun CommentSection( | ||||
|                     item { | ||||
|                         // TODO use error panel instead | ||||
|                         EmptyStateComposable( | ||||
|                             EmptyStateSpec.DisabledComments.copy( | ||||
|                             spec = EmptyStateSpec.DisabledComments.copy( | ||||
|                                 descriptionText = { | ||||
|                                     stringResource(R.string.error_unable_to_load_comments) | ||||
|                                 } | ||||
|                             ) | ||||
|                             ), | ||||
|                             modifier = Modifier | ||||
|                                 .fillMaxWidth() | ||||
|                                 .heightIn(min = 128.dp) | ||||
|                         ) | ||||
|                     } | ||||
|                 } | ||||
|   | ||||
| @@ -3,7 +3,6 @@ package org.schabi.newpipe.ui.emptystate | ||||
| import android.graphics.Color | ||||
| import androidx.compose.foundation.layout.Arrangement | ||||
| import androidx.compose.foundation.layout.Column | ||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.heightIn | ||||
| import androidx.compose.foundation.layout.padding | ||||
| @@ -24,9 +23,9 @@ fun EmptyStateComposable( | ||||
|     spec: EmptyStateSpec, | ||||
|     modifier: Modifier = Modifier, | ||||
| ) = EmptyStateComposable( | ||||
|     modifier = spec.modifier(modifier), | ||||
|     emojiText = spec.emojiText(), | ||||
|     descriptionText = spec.descriptionText(), | ||||
|     modifier = modifier | ||||
| ) | ||||
|  | ||||
| @Composable | ||||
| @@ -61,7 +60,12 @@ private fun EmptyStateComposable( | ||||
| @Composable | ||||
| fun EmptyStateComposableGenericErrorPreview() { | ||||
|     AppTheme { | ||||
|         EmptyStateComposable(EmptyStateSpec.GenericError) | ||||
|         EmptyStateComposable( | ||||
|             spec = EmptyStateSpec.GenericError, | ||||
|             modifier = Modifier | ||||
|                 .fillMaxWidth() | ||||
|                 .heightIn(min = 128.dp) | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -69,12 +73,16 @@ fun EmptyStateComposableGenericErrorPreview() { | ||||
| @Composable | ||||
| fun EmptyStateComposableNoCommentPreview() { | ||||
|     AppTheme { | ||||
|         EmptyStateComposable(EmptyStateSpec.NoComments) | ||||
|         EmptyStateComposable( | ||||
|             spec = EmptyStateSpec.NoComments, | ||||
|             modifier = Modifier | ||||
|                 .fillMaxWidth() | ||||
|                 .heightIn(min = 128.dp) | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|  | ||||
| data class EmptyStateSpec( | ||||
|     val modifier: (Modifier) -> Modifier, | ||||
|     val emojiText: @Composable () -> String, | ||||
|     val descriptionText: @Composable () -> String, | ||||
| ) { | ||||
| @@ -82,33 +90,19 @@ data class EmptyStateSpec( | ||||
|  | ||||
|         val GenericError = | ||||
|             EmptyStateSpec( | ||||
|                 modifier = { | ||||
|                     it | ||||
|                         .fillMaxWidth() | ||||
|                         .heightIn(min = 128.dp) | ||||
|                 }, | ||||
|                 emojiText = { "¯\\_(ツ)_/¯" }, | ||||
|                 descriptionText = { stringResource(id = R.string.empty_list_subtitle) }, | ||||
|             ) | ||||
|  | ||||
|         val NoVideos = | ||||
|             EmptyStateSpec( | ||||
|                 modifier = { | ||||
|                     it | ||||
|                         .fillMaxWidth() | ||||
|                         .heightIn(min = 128.dp) | ||||
|                 }, | ||||
|                 emojiText = { "(╯°-°)╯" }, | ||||
|                 descriptionText = { stringResource(id = R.string.no_videos) }, | ||||
|             ) | ||||
|  | ||||
|         val NoComments = | ||||
|             EmptyStateSpec( | ||||
|                 modifier = { | ||||
|                     it | ||||
|                         .fillMaxWidth() | ||||
|                         .heightIn(min = 128.dp) | ||||
|                 }, | ||||
|  | ||||
|                 emojiText = { "¯\\_(╹x╹)_/¯" }, | ||||
|                 descriptionText = { stringResource(id = R.string.no_comments) }, | ||||
|             ) | ||||
| @@ -120,33 +114,27 @@ data class EmptyStateSpec( | ||||
|  | ||||
|         val NoSearchResult = | ||||
|             NoComments.copy( | ||||
|                 modifier = { it }, | ||||
|                 emojiText = { "╰(°●°╰)" }, | ||||
|                 descriptionText = { stringResource(id = R.string.search_no_results) } | ||||
|             ) | ||||
|  | ||||
|         val NoSearchMaxSizeResult = | ||||
|             NoSearchResult.copy( | ||||
|                 modifier = { it.fillMaxSize() }, | ||||
|             ) | ||||
|             NoSearchResult | ||||
|  | ||||
|         val ContentNotSupported = | ||||
|             NoComments.copy( | ||||
|                 modifier = { it.padding(top = 90.dp) }, | ||||
|                 emojiText = { "(︶︹︺)" }, | ||||
|                 descriptionText = { stringResource(id = R.string.content_not_supported) }, | ||||
|             ) | ||||
|  | ||||
|         val NoBookmarkedPlaylist = | ||||
|             EmptyStateSpec( | ||||
|                 modifier = { it }, | ||||
|                 emojiText = { "(╥﹏╥)" }, | ||||
|                 descriptionText = { stringResource(id = R.string.no_playlist_bookmarked_yet) }, | ||||
|             ) | ||||
|  | ||||
|         val NoSubscriptionsHint = | ||||
|             EmptyStateSpec( | ||||
|                 modifier = { it }, | ||||
|                 emojiText = { "(꩜ᯅ꩜)" }, | ||||
|                 descriptionText = { stringResource(id = R.string.import_subscriptions_hint) }, | ||||
|             ) | ||||
|   | ||||
| @@ -2,12 +2,16 @@ | ||||
|  | ||||
| package org.schabi.newpipe.ui.emptystate | ||||
|  | ||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||
| import androidx.compose.foundation.layout.heightIn | ||||
| import androidx.compose.material3.LocalContentColor | ||||
| import androidx.compose.material3.MaterialTheme | ||||
| import androidx.compose.material3.contentColorFor | ||||
| import androidx.compose.runtime.CompositionLocalProvider | ||||
| import androidx.compose.ui.Modifier | ||||
| import androidx.compose.ui.platform.ComposeView | ||||
| import androidx.compose.ui.platform.ViewCompositionStrategy | ||||
| import androidx.compose.ui.unit.dp | ||||
| import org.schabi.newpipe.ui.theme.AppTheme | ||||
|  | ||||
| @JvmOverloads | ||||
| @@ -22,7 +26,11 @@ fun ComposeView.setEmptyStateComposable( | ||||
|                 LocalContentColor provides contentColorFor(MaterialTheme.colorScheme.background) | ||||
|             ) { | ||||
|                 EmptyStateComposable( | ||||
|                     spec = spec | ||||
|                     spec = spec, | ||||
|                     modifier = Modifier | ||||
|                         .fillMaxWidth() | ||||
|                         .heightIn(min = 128.dp) | ||||
|  | ||||
|                 ) | ||||
|             } | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Stypox
					Stypox