From 5a8e57543e7b65076f3ee33748930e8e9fc6534b Mon Sep 17 00:00:00 2001 From: ddyeon Date: Thu, 26 Sep 2024 22:18:22 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[feat]=20=ED=83=91=EB=B0=94=20actionIcon?= =?UTF-8?q?=EC=9E=88=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20=ED=99=95=EC=9E=A5?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/topbar/DorabangsTopAppBar.kt | 27 +++++++++---------- .../component/topbar/TopAppBarType.kt | 8 +++--- .../storagedetail/StorageDetailHeader.kt | 13 +++++++-- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt index 4922e79a..cd76ce10 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt @@ -4,6 +4,7 @@ import androidx.annotation.DrawableRes import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height @@ -27,10 +28,9 @@ fun DoraTopAppBar( title: String, isTitleCenter: Boolean = false, isEnableBackNavigation: Boolean = false, - @DrawableRes actionIcon: Int? = null, + actionIcon: @Composable BoxScope.() -> Unit = {}, isShowBottomDivider: Boolean = false, onClickBackIcon: () -> Unit = {}, - onClickActonIcon: () -> Unit = {}, ) { val isHomeAppBar = isTitleCenter && !isEnableBackNavigation Box( @@ -81,16 +81,8 @@ fun DoraTopAppBar( ) } } - actionIcon?.let { icon -> - Icon( - modifier = Modifier - .align(Alignment.CenterEnd) - .padding(end = 20.dp) - .clickable { onClickActonIcon() }, - painter = painterResource(id = icon), - contentDescription = "action", - ) - } + actionIcon() + if (isShowBottomDivider) { DoraDivider(modifier = Modifier.align(Alignment.BottomCenter)) } @@ -124,9 +116,16 @@ fun PreviewBackWithActionIconTopBar() { DoraTopBar.BackWithActionIconTopBar( modifier = Modifier.fillMaxWidth(), title = "Dorabangs", - actionIcon = R.drawable.ic_plus, + actionIcon = { + Icon( + modifier = Modifier + .align(Alignment.CenterEnd) + .padding(end = 20.dp), + painter = painterResource(id = R.drawable.ic_more_gray), + contentDescription = "action", + ) + }, onClickBackIcon = {}, - onClickActonIcon = {}, isTitleCenter = true, isShowBottomDivider = true, ) diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt index fce9b18e..68b57074 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/TopAppBarType.kt @@ -3,6 +3,7 @@ package com.mashup.dorabangs.core.designsystem.component.topbar import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable @@ -55,11 +56,10 @@ object DoraTopBar : TopAppBarType { override fun BackWithActionIconTopBar( modifier: Modifier, title: String, - actionIcon: Int, + actionIcon: @Composable BoxScope.() -> Unit, isTitleCenter: Boolean, isShowBottomDivider: Boolean, onClickBackIcon: () -> Unit, - onClickActonIcon: () -> Unit, ) { DoraTopAppBar( modifier = modifier.background(DoraColorTokens.White), @@ -69,7 +69,6 @@ object DoraTopBar : TopAppBarType { actionIcon = actionIcon, isShowBottomDivider = isShowBottomDivider, onClickBackIcon = onClickBackIcon, - onClickActonIcon = onClickActonIcon, ) } @@ -110,11 +109,10 @@ sealed interface TopAppBarType { fun BackWithActionIconTopBar( modifier: Modifier, title: String, - actionIcon: Int, + actionIcon: @Composable BoxScope.() -> Unit, isTitleCenter: Boolean, isShowBottomDivider: Boolean, onClickBackIcon: () -> Unit, - onClickActonIcon: () -> Unit, ) @Composable diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt index 1cd146ee..3c4b9017 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt @@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable @@ -211,9 +212,17 @@ fun StorageDetailTopBarByFolderType( modifier = Modifier.fillMaxWidth(), title = title, isTitleCenter = true, - actionIcon = coreR.drawable.ic_more_black, + actionIcon = { + Icon( + modifier = Modifier + .align(Alignment.CenterEnd) + .padding(end = 20.dp) + .clickable { onClickActionIcon() }, + painter = painterResource(id = coreR.drawable.ic_more_black), + contentDescription = "action", + ) + }, onClickBackIcon = onClickBackIcon, - onClickActonIcon = onClickActionIcon, isShowBottomDivider = false, ) } From 88ece4dcba40ff3da5e52c58d25c8bcd4c8872c3 Mon Sep 17 00:00:00 2001 From: ddyeon Date: Fri, 27 Sep 2024 00:41:12 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[feat]=20=ED=99=88=ED=99=94=EB=A9=B4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=9B=B9=EB=B7=B0=20=EC=9D=B4=EB=8F=99?= =?UTF-8?q?=EC=8B=9C=20=EC=97=B0=EA=B2=B0=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dorabangs/navigation/MainNavHost.kt | 25 +++- .../component/topbar/DorabangsTopAppBar.kt | 1 - .../mashup/core/navigation/NavigationRoute.kt | 1 + core/webview/build.gradle.kts | 2 + .../dorabangs/core/model/AISummaryUiModel.kt | 10 ++ .../core/summary/AISummaryNavigation.kt | 41 ++++++ .../dorabangs/core/summary/AISummaryScreen.kt | 126 ++++++++++++++++++ .../dorabangs/core/summary/SummaryTopBar.kt | 45 +++++++ .../dorabangs/core/webview/DoraWebView.kt | 15 ++- .../core/webview/WebViewNavigation.kt | 31 +++-- .../main/res/drawable/icon_summary_star.xml | 15 +++ core/webview/src/main/res/values/string.xml | 4 + .../dorabangs/feature/home/HomeRoute.kt | 5 +- .../feature/navigation/HomeNavigation.kt | 3 +- 14 files changed, 304 insertions(+), 20 deletions(-) create mode 100644 core/webview/src/main/java/com/mashup/dorabangs/core/model/AISummaryUiModel.kt create mode 100644 core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt create mode 100644 core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt create mode 100644 core/webview/src/main/java/com/mashup/dorabangs/core/summary/SummaryTopBar.kt create mode 100644 core/webview/src/main/res/drawable/icon_summary_star.xml create mode 100644 core/webview/src/main/res/values/string.xml diff --git a/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt b/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt index 644d3a58..0e9091ac 100644 --- a/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt +++ b/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt @@ -10,6 +10,9 @@ import com.dorabangs.feature.navigation.navigateToSaveLinkSelectFolder import com.dorabangs.feature.navigation.saveLinkNavigation import com.dorabangs.feature.navigation.saveLinkSelectFolder import com.mashup.core.navigation.NavigationRoute +import com.mashup.dorabangs.core.model.AISummaryUiModel +import com.mashup.dorabangs.core.summary.aiSummaryNavigation +import com.mashup.dorabangs.core.summary.navigateToAISummary import com.mashup.dorabangs.core.webview.navigateToWebView import com.mashup.dorabangs.core.webview.webViewNavigation import com.mashup.dorabangs.feature.folders.model.FolderManageType @@ -63,7 +66,14 @@ fun MainNavHost( }, navigateToCreateFolder = { appState.navController.navigateToHomeCrateFolder() }, navigateToHomeTutorial = { appState.navController.navigateToHomeTutorial() }, - navigateToWebView = { url -> appState.navController.navigateToWebView(url = url) }, + navigateToWebView = { cardInfo -> + val summaryUiModel = AISummaryUiModel( + description = cardInfo.content, + url = cardInfo.url, + keywords = cardInfo.keywordList, + ) + appState.navController.navigateToWebView(summaryUiModel = summaryUiModel) + }, navigateToUnreadStorageDetail = { folder -> appState.navController.navigateToUnreadStorageDetail(folder) }, ) homeCreateFolderNavigation( @@ -163,10 +173,14 @@ fun MainNavHost( ) appState.navController.popBackStackWithClearFocus() }, - navigateToWebView = { url -> appState.navController.navigateToWebView(url = url) }, + navigateToWebView = { url -> + // appState.navController.navigateToWebView(url = url) + }, ) classificationNavigation( - navigateToWebView = { url -> appState.navController.navigateToWebView(url = url) }, + navigateToWebView = { url -> + // appState.navController.navigateToWebView(url = url) + }, onClickBackIcon = { appState.navController.popBackStackWithClearFocus() }, navigateToHome = { appState.navController.popBackStackWithClearFocus() }, ) @@ -193,6 +207,11 @@ fun MainNavHost( ) webViewNavigation( navigateToPopBackStack = { appState.navController.popBackStackWithClearFocus() }, + navigateToAISummary = { summary -> appState.navController.navigateToAISummary(summaryUiModel = summary) }, + ) + + aiSummaryNavigation( + navigateToPopBackStack = { appState.navController.popBackStackWithClearFocus() }, ) } } diff --git a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt index cd76ce10..3c207400 100644 --- a/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt +++ b/core/designsystem/src/main/java/com/mashup/dorabangs/core/designsystem/component/topbar/DorabangsTopAppBar.kt @@ -1,6 +1,5 @@ package com.mashup.dorabangs.core.designsystem.component.topbar -import androidx.annotation.DrawableRes import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box diff --git a/core/navigation/src/main/java/com/mashup/core/navigation/NavigationRoute.kt b/core/navigation/src/main/java/com/mashup/core/navigation/NavigationRoute.kt index 517da2a6..2ebf655a 100644 --- a/core/navigation/src/main/java/com/mashup/core/navigation/NavigationRoute.kt +++ b/core/navigation/src/main/java/com/mashup/core/navigation/NavigationRoute.kt @@ -17,4 +17,5 @@ sealed class NavigationRoute(val route: String) { } object WebViewScreen : NavigationRoute("webView") + object AISummaryScreen : NavigationRoute("summary") } diff --git a/core/webview/build.gradle.kts b/core/webview/build.gradle.kts index cc9fb568..0af4b34a 100644 --- a/core/webview/build.gradle.kts +++ b/core/webview/build.gradle.kts @@ -3,6 +3,7 @@ plugins { alias(libs.plugins.org.jetbrains.kotlin.android) alias(libs.plugins.hilt) alias(libs.plugins.ksp) + alias(libs.plugins.kotlinx.serialization) } android { @@ -67,4 +68,5 @@ dependencies { ksp(libs.hilt.compiler) implementation(libs.hilt.navigation.compose) implementation(libs.compose.webview) + implementation(libs.serialization) } diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/model/AISummaryUiModel.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/model/AISummaryUiModel.kt new file mode 100644 index 00000000..d629f3f2 --- /dev/null +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/model/AISummaryUiModel.kt @@ -0,0 +1,10 @@ +package com.mashup.dorabangs.core.model + +import java.io.Serializable + +@kotlinx.serialization.Serializable +data class AISummaryUiModel( + val description: String? = "", + val keywords: List? = listOf(), + val url: String? = "", +) : Serializable diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt new file mode 100644 index 00000000..eee95ee5 --- /dev/null +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt @@ -0,0 +1,41 @@ +package com.mashup.dorabangs.core.summary + +import android.net.Uri +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavOptions +import androidx.navigation.compose.composable +import androidx.navigation.navArgument +import com.mashup.core.navigation.NavigationRoute +import com.mashup.core.navigation.bundleSerializable +import com.mashup.core.navigation.serializableNavType +import com.mashup.dorabangs.core.model.AISummaryUiModel +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json + +fun NavController.navigateToAISummary(navOptions: NavOptions? = null, summaryUiModel: AISummaryUiModel) { + val summary = Uri.encode(Json.encodeToString(summaryUiModel)) + navigate("${NavigationRoute.AISummaryScreen.route}?summary=$summary", navOptions) +} + +fun NavGraphBuilder.aiSummaryNavigation( + navigateToPopBackStack: () -> Unit, +) { + composable( + route = "${NavigationRoute.AISummaryScreen.route}?summary={summary}", + arguments = listOf( + navArgument(name = "summary") { + serializableNavType() + }, + ), + ) { navBackStackEntry -> + val aiSummary = navBackStackEntry.arguments?.bundleSerializable("summary") as AISummaryUiModel? + + aiSummary?.let { summary -> + AISummaryRoute( + aiSummaryUiModel = summary, + navigateToPopBackStack = navigateToPopBackStack, + ) + } + } +} diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt new file mode 100644 index 00000000..69dc139e --- /dev/null +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt @@ -0,0 +1,126 @@ +package com.mashup.dorabangs.core.summary + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.mashup.dorabangs.core.designsystem.R +import com.mashup.dorabangs.core.designsystem.component.buttons.DoraButtons +import com.mashup.dorabangs.core.designsystem.component.card.FeedCardKeyword +import com.mashup.dorabangs.core.designsystem.component.topbar.DoraTopBar +import com.mashup.dorabangs.core.designsystem.theme.DoraColorTokens +import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens +import com.mashup.dorabangs.core.model.AISummaryUiModel +import com.mashup.dorabangs.core.webview.R as webViewR + +@Composable +fun AISummaryRoute( + aiSummaryUiModel: AISummaryUiModel, + navigateToPopBackStack: () -> Unit, +) { + AISummaryScreen( + aiSummaryUiModel = aiSummaryUiModel, + navigateToPopBackStack = navigateToPopBackStack, + ) +} + +@Composable +fun AISummaryScreen( + aiSummaryUiModel: AISummaryUiModel, + navigateToPopBackStack: () -> Unit, + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier.fillMaxSize().background(color = DoraColorTokens.White), + ) { + DoraTopBar.BackNavigationTopBar( + modifier = Modifier.fillMaxWidth(), + title = "", + isTitleCenter = true, + onClickBackIcon = navigateToPopBackStack, + isShowBottomDivider = true, + ) + Spacer(modifier = Modifier.height(30.dp)) + AISummaryContent( + aiSummaryUiModel = aiSummaryUiModel, + modifier = Modifier.padding(horizontal = 20.dp), + ) + Spacer(modifier = Modifier.weight(1f)) + DoraButtons.DoraBtnMaxFull( + modifier = Modifier + .fillMaxWidth() + .padding(20.dp), + enabled = true, + buttonText = "닫기", + onClickButton = navigateToPopBackStack, + ) + } +} + +@Composable +fun AISummaryContent( + aiSummaryUiModel: AISummaryUiModel, + modifier: Modifier, +) { + Column( + modifier = modifier + .fillMaxWidth() + .wrapContentHeight() + .background(color = DoraColorTokens.White), + ) { + Row( + modifier = Modifier, + ) { + Icon( + modifier = Modifier.size(14.dp), + tint = Color.Unspecified, + painter = painterResource(id = webViewR.drawable.icon_summary_star), + contentDescription = "summary_icon", + ) + Text( + text = stringResource(id = R.string.feed_card_content_title), + modifier = Modifier + .align(Alignment.CenterVertically) + .padding(start = 6.dp), + textAlign = TextAlign.Center, + style = DoraTypoTokens.caption2Bold, + color = DoraColorTokens.G9, + ) + } + Spacer(modifier = Modifier.height(10.dp)) + Text( + text = aiSummaryUiModel.description.orEmpty(), + style = DoraTypoTokens.caption2Medium, + color = DoraColorTokens.G7, + ) + Spacer(modifier = Modifier.height(20.dp)) + FeedCardKeyword(keywordList = aiSummaryUiModel.keywords) + } +} + +@Preview +@Composable +fun PreviewAISummaryScreen() { + AISummaryScreen( + aiSummaryUiModel = AISummaryUiModel(), + modifier = Modifier, + navigateToPopBackStack = {}, + ) +} diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/SummaryTopBar.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/SummaryTopBar.kt new file mode 100644 index 00000000..c2618771 --- /dev/null +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/SummaryTopBar.kt @@ -0,0 +1,45 @@ +package com.mashup.dorabangs.core.summary + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import com.mashup.dorabangs.core.designsystem.theme.DoraColorTokens +import com.mashup.dorabangs.core.designsystem.theme.DoraTypoTokens +import com.mashup.dorabangs.core.webview.R + +@Composable +fun AISummaryTopButton( + modifier: Modifier, + onClickSummary: () -> Unit, +) { + Row( + modifier = modifier + .wrapContentSize() + .clickable { onClickSummary() }, + verticalAlignment = Alignment.CenterVertically, + ) { + Icon( + painter = painterResource(id = R.drawable.icon_summary_star), + tint = Color.Unspecified, + contentDescription = "action", + ) + Text( + modifier = Modifier.padding(start = 4.dp), + style = DoraTypoTokens.caption1Medium, + textAlign = TextAlign.Center, + color = DoraColorTokens.Primary500, + text = stringResource(id = R.string.webview_top_bar_summary), + ) + } +} diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt index 00fbecbe..9ed95ee1 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/DoraWebView.kt @@ -7,20 +7,25 @@ import android.view.WindowManager import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp import com.google.accompanist.web.AccompanistWebChromeClient import com.google.accompanist.web.WebView import com.google.accompanist.web.rememberWebViewState import com.mashup.dorabangs.core.designsystem.component.topbar.DoraTopBar +import com.mashup.dorabangs.core.summary.AISummaryTopButton @SuppressLint("SetJavaScriptEnabled") @Composable fun DoraWebView( url: String, navigateToPopBackStack: () -> Unit, + navigateToAISummary: () -> Unit, modifier: Modifier = Modifier, ) { val state = rememberWebViewState(url) @@ -30,12 +35,20 @@ fun DoraWebView( Column( modifier = modifier.fillMaxSize(), ) { - DoraTopBar.BackNavigationTopBar( + DoraTopBar.BackWithActionIconTopBar( modifier = Modifier.fillMaxWidth(), title = "", isTitleCenter = true, onClickBackIcon = navigateToPopBackStack, isShowBottomDivider = true, + actionIcon = { + AISummaryTopButton( + modifier = Modifier + .align(Alignment.CenterEnd) + .padding(end = 20.dp), + onClickSummary = navigateToAISummary, + ) + }, ) WebView( state = state, diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt index 9e039e5c..636a3911 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt @@ -1,37 +1,44 @@ package com.mashup.dorabangs.core.webview +import android.content.ContentValues.TAG +import android.net.Uri +import android.util.Log import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions -import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.mashup.core.navigation.NavigationRoute -import java.net.URLEncoder -import java.nio.charset.StandardCharsets +import com.mashup.core.navigation.bundleSerializable +import com.mashup.core.navigation.serializableNavType +import com.mashup.dorabangs.core.model.AISummaryUiModel +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json -fun NavController.navigateToWebView(navOptions: NavOptions? = null, url: String?) { - val encodedUrl = URLEncoder.encode(url, StandardCharsets.UTF_8.toString()) - navigate("${NavigationRoute.WebViewScreen.route}?url=$encodedUrl", navOptions) +fun NavController.navigateToWebView(navOptions: NavOptions? = null, summaryUiModel: AISummaryUiModel?) { + val summary = Uri.encode(Json.encodeToString(summaryUiModel)) + navigate("${NavigationRoute.WebViewScreen.route}?summary=$summary", navOptions) } fun NavGraphBuilder.webViewNavigation( navigateToPopBackStack: () -> Unit, + navigateToAISummary: (AISummaryUiModel) -> Unit, ) { composable( - route = "${NavigationRoute.WebViewScreen.route}?url={url}", + route = "${NavigationRoute.WebViewScreen.route}?summary={summary}", arguments = listOf( - navArgument(name = "url") { - type = NavType.StringType - defaultValue = "" + navArgument(name = "summary") { + serializableNavType() }, ), ) { navBackStackEntry -> - val moveUrl = navBackStackEntry.arguments?.getString("url") - moveUrl?.let { url -> + val aiSummary = navBackStackEntry.arguments?.bundleSerializable("summary") as AISummaryUiModel? + Log.d(TAG, "webViewNavigation: aiSummary$aiSummary") + aiSummary?.url?.let { url -> DoraWebView( url = url, navigateToPopBackStack = navigateToPopBackStack, + navigateToAISummary = { navigateToAISummary(aiSummary) }, ) } } diff --git a/core/webview/src/main/res/drawable/icon_summary_star.xml b/core/webview/src/main/res/drawable/icon_summary_star.xml new file mode 100644 index 00000000..a28e4d3f --- /dev/null +++ b/core/webview/src/main/res/drawable/icon_summary_star.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/core/webview/src/main/res/values/string.xml b/core/webview/src/main/res/values/string.xml new file mode 100644 index 00000000..9df1e3ca --- /dev/null +++ b/core/webview/src/main/res/values/string.xml @@ -0,0 +1,4 @@ + + + 요약 보기 + \ No newline at end of file diff --git a/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeRoute.kt b/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeRoute.kt index bcbf0393..89e7ec99 100644 --- a/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeRoute.kt +++ b/feature/home/src/main/java/com/mashup/dorabangs/feature/home/HomeRoute.kt @@ -28,6 +28,7 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.compose.LifecycleEventEffect import com.mashup.dorabangs.core.designsystem.R import com.mashup.dorabangs.core.designsystem.component.bottomsheet.DoraBottomSheet +import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel import com.mashup.dorabangs.core.designsystem.component.dialog.DoraDialog import com.mashup.dorabangs.core.designsystem.component.toast.DoraToast import com.mashup.dorabangs.domain.model.Folder @@ -40,7 +41,7 @@ import org.orbitmvi.orbit.compose.collectSideEffect fun HomeRoute( navigateToCreateFolder: () -> Unit, navigateToHomeTutorial: () -> Unit, - navigateToWebView: (String) -> Unit, + navigateToWebView: (FeedUiModel.FeedCardUiModel) -> Unit, modifier: Modifier = Modifier, isShowToast: Boolean = false, view: View = LocalView.current, @@ -138,7 +139,7 @@ fun HomeRoute( onClickBookMarkButton = viewModel::updateFavoriteItem, onClickCardItem = { cardInfo -> viewModel.updateReadAt(cardInfo) - navigateToWebView(cardInfo.url) + navigateToWebView(cardInfo) }, navigateToClassification = navigateToClassification, navigateSaveScreenWithoutLink = { diff --git a/feature/home/src/main/java/com/mashup/dorabangs/feature/navigation/HomeNavigation.kt b/feature/home/src/main/java/com/mashup/dorabangs/feature/navigation/HomeNavigation.kt index c247a98c..7e62ffef 100644 --- a/feature/home/src/main/java/com/mashup/dorabangs/feature/navigation/HomeNavigation.kt +++ b/feature/home/src/main/java/com/mashup/dorabangs/feature/navigation/HomeNavigation.kt @@ -7,6 +7,7 @@ import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.mashup.core.navigation.NavigationRoute +import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel import com.mashup.dorabangs.domain.model.Folder import com.mashup.dorabangs.feature.home.HomeRoute @@ -23,7 +24,7 @@ fun NavGraphBuilder.homeNavigation( navigateToSaveScreenWithoutLink: () -> Unit, navigateToCreateFolder: () -> Unit, navigateToHomeTutorial: () -> Unit, - navigateToWebView: (String) -> Unit, + navigateToWebView: (FeedUiModel.FeedCardUiModel) -> Unit, navigateToUnreadStorageDetail: (Folder) -> Unit, ) { composable( From 60751c074b84503df146d9dc941bbdf5b7515217 Mon Sep 17 00:00:00 2001 From: devdayeon Date: Fri, 27 Sep 2024 10:23:10 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[feat]=20=EC=9A=94=EC=95=BD=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=ED=99=88=20=ED=99=94=EB=A9=B4=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dorabangs/navigation/MainNavHost.kt | 2 ++ .../core/summary/AISummaryNavigation.kt | 20 ++++++++++++++++--- .../dorabangs/core/summary/AISummaryScreen.kt | 2 +- .../core/webview/WebViewNavigation.kt | 7 +++---- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt b/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt index 0e9091ac..5ebd5b70 100644 --- a/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt +++ b/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt @@ -1,5 +1,7 @@ package com.mashup.dorabangs.navigation +import android.content.ContentValues.TAG +import android.util.Log import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavController diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt index eee95ee5..af51d13b 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt @@ -1,6 +1,8 @@ package com.mashup.dorabangs.core.summary import android.net.Uri +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.core.tween import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -15,19 +17,31 @@ import kotlinx.serialization.json.Json fun NavController.navigateToAISummary(navOptions: NavOptions? = null, summaryUiModel: AISummaryUiModel) { val summary = Uri.encode(Json.encodeToString(summaryUiModel)) - navigate("${NavigationRoute.AISummaryScreen.route}?summary=$summary", navOptions) + navigate("${NavigationRoute.AISummaryScreen.route}/summary=$summary", navOptions) } fun NavGraphBuilder.aiSummaryNavigation( navigateToPopBackStack: () -> Unit, ) { composable( - route = "${NavigationRoute.AISummaryScreen.route}?summary={summary}", + route = "${NavigationRoute.AISummaryScreen.route}/summary={summary}", arguments = listOf( navArgument(name = "summary") { - serializableNavType() + type = serializableNavType() }, ), + enterTransition = { + slideIntoContainer( + towards = AnimatedContentTransitionScope.SlideDirection.Left, + animationSpec = tween(250) + ) + }, + exitTransition = { + slideOutOfContainer( + towards = AnimatedContentTransitionScope.SlideDirection.Right, + animationSpec = tween(400) + ) + } ) { navBackStackEntry -> val aiSummary = navBackStackEntry.arguments?.bundleSerializable("summary") as AISummaryUiModel? diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt index 69dc139e..75938683 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryScreen.kt @@ -111,7 +111,7 @@ fun AISummaryContent( color = DoraColorTokens.G7, ) Spacer(modifier = Modifier.height(20.dp)) - FeedCardKeyword(keywordList = aiSummaryUiModel.keywords) + FeedCardKeyword(keywordList = aiSummaryUiModel.keywords?.take(3)) } } diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt index 636a3911..bb6fb4ed 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt @@ -17,7 +17,7 @@ import kotlinx.serialization.json.Json fun NavController.navigateToWebView(navOptions: NavOptions? = null, summaryUiModel: AISummaryUiModel?) { val summary = Uri.encode(Json.encodeToString(summaryUiModel)) - navigate("${NavigationRoute.WebViewScreen.route}?summary=$summary", navOptions) + navigate("${NavigationRoute.WebViewScreen.route}/summary=$summary", navOptions) } fun NavGraphBuilder.webViewNavigation( @@ -25,15 +25,14 @@ fun NavGraphBuilder.webViewNavigation( navigateToAISummary: (AISummaryUiModel) -> Unit, ) { composable( - route = "${NavigationRoute.WebViewScreen.route}?summary={summary}", + route = "${NavigationRoute.WebViewScreen.route}/summary={summary}", arguments = listOf( navArgument(name = "summary") { - serializableNavType() + type = serializableNavType() }, ), ) { navBackStackEntry -> val aiSummary = navBackStackEntry.arguments?.bundleSerializable("summary") as AISummaryUiModel? - Log.d(TAG, "webViewNavigation: aiSummary$aiSummary") aiSummary?.url?.let { url -> DoraWebView( url = url, From 9fd657678bab44a3f33ddbb8ef9e3dc42a5b84c3 Mon Sep 17 00:00:00 2001 From: devdayeon Date: Fri, 27 Sep 2024 10:51:51 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[fix]=20=EB=A6=B0=ED=8A=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dorabangs/navigation/MainNavHost.kt | 20 +++++++++++++------ .../core/summary/AISummaryNavigation.kt | 6 +++--- .../core/webview/WebViewNavigation.kt | 4 ++-- .../classification/ClassificationScreen.kt | 4 ++-- .../navigation/ClassificationNavigation.kt | 3 ++- .../navigation/StorageDetailNavigation.kt | 3 ++- .../storage/storagedetail/StorageDetail.kt | 4 ++-- 7 files changed, 27 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt b/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt index 5ebd5b70..91a6b8dd 100644 --- a/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt +++ b/app/src/main/java/com/mashup/dorabangs/navigation/MainNavHost.kt @@ -1,7 +1,5 @@ package com.mashup.dorabangs.navigation -import android.content.ContentValues.TAG -import android.util.Log import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavController @@ -175,13 +173,23 @@ fun MainNavHost( ) appState.navController.popBackStackWithClearFocus() }, - navigateToWebView = { url -> - // appState.navController.navigateToWebView(url = url) + navigateToWebView = { cardInfo -> + val summaryUiModel = AISummaryUiModel( + description = cardInfo.content, + url = cardInfo.url, + keywords = cardInfo.keywordList, + ) + appState.navController.navigateToWebView(summaryUiModel = summaryUiModel) }, ) classificationNavigation( - navigateToWebView = { url -> - // appState.navController.navigateToWebView(url = url) + navigateToWebView = { cardInfo -> + val summaryUiModel = AISummaryUiModel( + description = cardInfo.content, + url = cardInfo.url, + keywords = cardInfo.keywordList, + ) + appState.navController.navigateToWebView(summaryUiModel = summaryUiModel) }, onClickBackIcon = { appState.navController.popBackStackWithClearFocus() }, navigateToHome = { appState.navController.popBackStackWithClearFocus() }, diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt index af51d13b..dcd01b0c 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/summary/AISummaryNavigation.kt @@ -33,15 +33,15 @@ fun NavGraphBuilder.aiSummaryNavigation( enterTransition = { slideIntoContainer( towards = AnimatedContentTransitionScope.SlideDirection.Left, - animationSpec = tween(250) + animationSpec = tween(250), ) }, exitTransition = { slideOutOfContainer( towards = AnimatedContentTransitionScope.SlideDirection.Right, - animationSpec = tween(400) + animationSpec = tween(400), ) - } + }, ) { navBackStackEntry -> val aiSummary = navBackStackEntry.arguments?.bundleSerializable("summary") as AISummaryUiModel? diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt index bb6fb4ed..2e850799 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt @@ -1,8 +1,8 @@ package com.mashup.dorabangs.core.webview -import android.content.ContentValues.TAG import android.net.Uri -import android.util.Log +import androidx.compose.animation.AnimatedContentTransitionScope +import androidx.compose.animation.core.tween import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions diff --git a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt index 3af6fdfb..b861b734 100644 --- a/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt +++ b/feature/classification/src/main/java/com/mashup/feature/classification/ClassificationScreen.kt @@ -30,7 +30,7 @@ import org.orbitmvi.orbit.compose.collectAsState fun ClassificationRoute( onClickBackIcon: () -> Unit, navigateToHome: () -> Unit, - navigateToWebView: (String) -> Unit, + navigateToWebView: (FeedUiModel.FeedCardUiModel) -> Unit, classificationViewModel: ClassificationViewModel = hiltViewModel(), ) { val state by classificationViewModel.collectAsState() @@ -47,7 +47,7 @@ fun ClassificationRoute( navigateToHome = navigateToHome, onClickCardItem = { cardInfo -> classificationViewModel.updateReadAt(cardInfo) - navigateToWebView(cardInfo.url) + navigateToWebView(cardInfo) }, ) } diff --git a/feature/classification/src/main/java/com/mashup/feature/classification/navigation/ClassificationNavigation.kt b/feature/classification/src/main/java/com/mashup/feature/classification/navigation/ClassificationNavigation.kt index 8cd3ca4f..18c81250 100644 --- a/feature/classification/src/main/java/com/mashup/feature/classification/navigation/ClassificationNavigation.kt +++ b/feature/classification/src/main/java/com/mashup/feature/classification/navigation/ClassificationNavigation.kt @@ -4,6 +4,7 @@ import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable import com.mashup.core.navigation.NavigationRoute +import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel import com.mashup.feature.classification.ClassificationRoute fun NavController.navigateToClassification() = navigate(NavigationRoute.ClassificationScreen.route) @@ -11,7 +12,7 @@ fun NavController.navigateToClassification() = navigate(NavigationRoute.Classifi fun NavGraphBuilder.classificationNavigation( onClickBackIcon: () -> Unit, navigateToHome: () -> Unit, - navigateToWebView: (String) -> Unit, + navigateToWebView: (FeedUiModel.FeedCardUiModel) -> Unit, ) { composable( route = NavigationRoute.ClassificationScreen.route, diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/navigation/StorageDetailNavigation.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/navigation/StorageDetailNavigation.kt index 0d70198a..09dbcc03 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/navigation/StorageDetailNavigation.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/navigation/StorageDetailNavigation.kt @@ -8,6 +8,7 @@ import androidx.navigation.navArgument import com.mashup.core.navigation.NavigationRoute import com.mashup.core.navigation.bundleSerializable import com.mashup.core.navigation.serializableNavType +import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel import com.mashup.dorabangs.domain.model.Folder import com.mashup.dorabangs.feature.storage.storagedetail.StorageDetailRoute import com.mashup.dorabangs.feature.storage.storagedetail.model.EditActionType @@ -26,7 +27,7 @@ fun NavController.navigateToUnreadStorageDetail(folder: Folder) { fun NavGraphBuilder.storageDetailNavigation( onClickBackIcon: (Boolean) -> Unit, - navigateToWebView: (String) -> Unit, + navigateToWebView: (FeedUiModel.FeedCardUiModel) -> Unit, navigateToStorage: (Boolean) -> Unit, navigateToFolderManager: (String, EditActionType) -> Unit, ) { diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetail.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetail.kt index 90cb62dc..8fbbaae0 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetail.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetail.kt @@ -51,7 +51,7 @@ fun StorageDetailRoute( navigateToStorage: (Boolean) -> Unit, navigateToFolderManager: (String, EditActionType) -> Unit, onClickBackIcon: (Boolean) -> Unit, - navigateToWebView: (String) -> Unit, + navigateToWebView: (FeedUiModel.FeedCardUiModel) -> Unit, modifier: Modifier = Modifier, isVisibleBottomSheet: Boolean = false, isChangedData: Boolean = false, @@ -128,7 +128,7 @@ fun StorageDetailRoute( }, onClickPostItem = { cardInfo -> storageDetailViewModel.updateReadAt(cardInfo) - navigateToWebView(cardInfo.url) + navigateToWebView(cardInfo) }, ) From dc64dddc88d316ffe6856ea3218e864d54040454 Mon Sep 17 00:00:00 2001 From: devdayeon Date: Fri, 27 Sep 2024 13:25:20 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[fix]=20=EB=A6=B0=ED=8A=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt index 2e850799..13b20ce6 100644 --- a/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt +++ b/core/webview/src/main/java/com/mashup/dorabangs/core/webview/WebViewNavigation.kt @@ -1,8 +1,6 @@ package com.mashup.dorabangs.core.webview import android.net.Uri -import androidx.compose.animation.AnimatedContentTransitionScope -import androidx.compose.animation.core.tween import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions From fd034b5a0fe435435496dd371cc15efcb1b21086 Mon Sep 17 00:00:00 2001 From: devdayeon Date: Wed, 2 Oct 2024 09:15:09 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[fix]=20=EB=A6=B0=ED=8A=B8=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storage/storagedetail/StorageDetailHeader.kt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt index 5b550b43..59218f2a 100644 --- a/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt +++ b/feature/storage/src/main/java/com/mashup/dorabangs/feature/storage/storagedetail/StorageDetailHeader.kt @@ -1,18 +1,16 @@ package com.mashup.dorabangs.feature.storage.storagedetail +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon -import androidx.compose.material3.Text -import androidx.compose.material3.VerticalDivider import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import com.mashup.dorabangs.core.designsystem.component.chips.DoraChips import com.mashup.dorabangs.core.designsystem.component.chips.FeedUiModel import com.mashup.dorabangs.core.designsystem.component.topbar.DoraTopBar