From aceff10dbcb7c528791a5a669c96f2aac3e0e36d Mon Sep 17 00:00:00 2001 From: Franky Wijanarko Date: Mon, 13 May 2024 12:38:03 +0700 Subject: [PATCH] add okhttplogging --- app/build.gradle.kts | 1 + .../java/com/fjr619/newsloc/di/AppModule.kt | 6 ++++ .../presentation/navgraph/NewsNavGraph.kt | 9 +++-- .../util/swipedismiss/SwipeDismissBox.kt | 33 ++++--------------- 4 files changed, 20 insertions(+), 29 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ea54ce0..a6b9430 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -96,6 +96,7 @@ dependencies { //Retrofit implementation ("com.squareup.retrofit2:retrofit:2.9.0") implementation ("com.squareup.retrofit2:converter-gson:2.9.0") + implementation ("com.squareup.okhttp3:logging-interceptor:4.12.0") // //Kotlinx Serialization // implementation ("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1") diff --git a/app/src/main/java/com/fjr619/newsloc/di/AppModule.kt b/app/src/main/java/com/fjr619/newsloc/di/AppModule.kt index 686b5f5..0357cd1 100644 --- a/app/src/main/java/com/fjr619/newsloc/di/AppModule.kt +++ b/app/src/main/java/com/fjr619/newsloc/di/AppModule.kt @@ -16,6 +16,8 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import okhttp3.OkHttpClient +import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import javax.inject.Singleton @@ -27,8 +29,12 @@ object AppModule { @Provides @Singleton fun provideApiInstance(): NewsApi { + val interceptor = HttpLoggingInterceptor() + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY) + val client = OkHttpClient.Builder().addInterceptor(interceptor).build() return Retrofit .Builder() + .client(client) .baseUrl(Constants.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build() diff --git a/app/src/main/java/com/fjr619/newsloc/presentation/navgraph/NewsNavGraph.kt b/app/src/main/java/com/fjr619/newsloc/presentation/navgraph/NewsNavGraph.kt index 4320a3f..2314fc9 100644 --- a/app/src/main/java/com/fjr619/newsloc/presentation/navgraph/NewsNavGraph.kt +++ b/app/src/main/java/com/fjr619/newsloc/presentation/navgraph/NewsNavGraph.kt @@ -8,6 +8,7 @@ import androidx.compose.animation.SharedTransitionLayout import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf @@ -37,6 +38,7 @@ import com.fjr619.newsloc.util.snackbar.LocalSnackbarController import com.fjr619.newsloc.util.snackbar.asString val LocalAnimatedVisibilityScope = staticCompositionLocalOf { error("") } +var refreshHome = false @OptIn(ExperimentalSharedTransitionApi::class) @Composable @@ -66,11 +68,12 @@ fun NewsGraph( val viewModel: HomeViewModel = hiltViewModel() val detailViewModel: DetailViewModel = from.hiltSharedViewModel(navController = navController) - + val items = viewModel.news.collectAsLazyPagingItems() + CompositionLocalProvider(value = LocalAnimatedVisibilityScope provides this@composable) { HomeScreen( paddingValues = paddingValues, - articles = viewModel.news.collectAsLazyPagingItems(), + articles = items, navigateToSearch = newsNavController::navigateToBottomBarRoute, navigateToDetail = { detailViewModel.onEvent(DetailEvent.GetDetailArticle(it)) @@ -79,7 +82,7 @@ fun NewsGraph( }, pullToRefreshLayoutState = viewModel.pullToRefreshState, onRefresh = { - viewModel.onEvent(HomeEvent.GetArticles) + items.refresh() }, onExitApp = { activity?.finish() diff --git a/app/src/main/java/com/fjr619/newsloc/util/swipedismiss/SwipeDismissBox.kt b/app/src/main/java/com/fjr619/newsloc/util/swipedismiss/SwipeDismissBox.kt index 23d8927..410cdd3 100644 --- a/app/src/main/java/com/fjr619/newsloc/util/swipedismiss/SwipeDismissBox.kt +++ b/app/src/main/java/com/fjr619/newsloc/util/swipedismiss/SwipeDismissBox.kt @@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.drop import kotlin.math.abs @SuppressLint("RememberReturnType") -@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class) +@OptIn(ExperimentalMaterial3Api::class) @Composable fun SwipeBox( modifier: Modifier = Modifier, @@ -48,6 +48,9 @@ fun SwipeBox( content: @Composable () -> Unit ) { + val threshold by remember { + mutableStateOf(150.dp) + } val view = LocalView.current val icon: ImageVector = Icons.Outlined.Delete val alignment: Alignment = Alignment.CenterEnd @@ -58,7 +61,7 @@ fun SwipeBox( derivedStateOf { mutableStateOf( abs(offset) >= with(density) { - { 150.dp.toPx() } + { threshold.toPx() } }.invoke() ).value } @@ -74,13 +77,13 @@ fun SwipeBox( } else false }, positionalThreshold = with(density) { - { 150.dp.toPx() } + { threshold.toPx() } } ) val iconSize = animateDpAsState( targetValue = if (offsetMatch) { - 40.dp + 35.dp } else { 24.dp }, label = "" @@ -88,7 +91,6 @@ fun SwipeBox( when (swipeState.dismissDirection) { SwipeToDismissBoxValue.EndToStart -> { - color = animateColorAsState( targetValue = if (offsetMatch) { MaterialTheme.colorScheme.errorContainer @@ -141,25 +143,4 @@ fun SwipeBox( ) { content() } - -// when (swipeState.currentValue) { -// SwipeToDismissBoxValue.EndToStart -> { -// LaunchedEffect(swipeState) { -// onDelete() -// swipeState.snapTo(SwipeToDismissBoxValue.Settled) -// } -// } -// -// else -> {} - -// SwipeToDismissBoxValue.StartToEnd -> { -// LaunchedEffect(swipeState) { -//// onEdit() -// swipeState.snapTo(SwipeToDismissBoxValue.Settled) -// } -// } -// -// SwipeToDismissBoxValue.Settled -> { -// } -// } } \ No newline at end of file