Skip to content

Commit

Permalink
feat : 다이나믹 링크 썸네일 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
KwonDae committed Jul 31, 2022
1 parent 8a5bf71 commit c141956
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,9 @@ package com.yapp.growth.presentation.firebase
import android.content.Context
import android.content.Intent
import android.net.Uri
import com.google.firebase.dynamiclinks.ktx.androidParameters
import com.google.firebase.dynamiclinks.ktx.component1
import com.google.firebase.dynamiclinks.ktx.component2
import com.google.firebase.dynamiclinks.ktx.dynamicLinks
import com.google.firebase.dynamiclinks.ktx.shortLinkAsync
import com.google.firebase.dynamiclinks.ktx.*
import com.google.firebase.ktx.Firebase
import com.yapp.growth.presentation.BuildConfig
import timber.log.Timber

const val DYNAMIC_LINK_PARAM = "dynamic_link_param"
const val PLAN_ID_KEY_NAME = "planId"
Expand All @@ -27,12 +22,23 @@ fun getDeepLink(scheme: String, key: String?, id: String?): Uri {
fun onDynamicLinkClick(
context: Context,
scheme: SchemeType,
id: String? = null
id: String? = null,
thumbNailTitle: String,
thumbNailDescription: String,
thumbNailImageUrl: String,
) {
Firebase.dynamicLinks.shortLinkAsync {
link = getDeepLink(scheme.name, scheme.key, id)
domainUriPrefix = BuildConfig.PLANZ_FIREBASE_PREFIX
androidParameters(context.packageName) { }
iosParameters(context.packageName) {
setFallbackUrl(Uri.parse("https://jalynne.notion.site/3379be16ecc04914bb98f8a57c980a46"))
}
socialMetaTagParameters {
title = thumbNailTitle
description = thumbNailDescription
imageUrl = Uri.parse(thumbNailImageUrl)
}

}.addOnSuccessListener { (shortLink, _) ->
runCatching {
Expand All @@ -43,7 +49,7 @@ fun onDynamicLinkClick(
context.startActivity(Intent.createChooser(sendIntent, "Share"))
}
.onFailure {
Timber.tag("SHORTLINK").e(it)

}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,20 @@ package com.yapp.growth.presentation.ui.createPlan

import android.content.Intent
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.navigation.NavHostController
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navArgument
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.yapp.growth.presentation.theme.BackgroundColor1
import com.yapp.growth.presentation.ui.createPlan.date.DateScreen
import com.yapp.growth.presentation.ui.createPlan.share.ShareScreen
import com.yapp.growth.presentation.ui.createPlan.theme.ThemeScreen
Expand All @@ -24,6 +29,22 @@ fun CreatePlanScreen(
exitCreatePlan: () -> Unit,
startShareActivity: (Intent) -> Unit,
) {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination

val systemUiController = rememberSystemUiController()
val useDarkIcons = MaterialTheme.colors.isLight
var statusBarColor: Color by remember { mutableStateOf(Color.White) }

statusBarColor = when (currentDestination?.route) {
CreatePlanScreenRoute.SHARE.route -> {
BackgroundColor1
}
else -> {
Color.White
}
}

Scaffold { innerPadding ->
NavHost(
modifier = Modifier.padding(innerPadding),
Expand Down Expand Up @@ -92,6 +113,17 @@ fun CreatePlanScreen(
}
}
}

SideEffect {
systemUiController.setSystemBarsColor(
color = statusBarColor,
darkIcons = useDarkIcons
)

systemUiController.setNavigationBarColor(
color = BackgroundColor1
)
}
}

enum class CreatePlanScreenRoute(val route: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,14 @@ fun ShareScreen(
}
}
}

LaunchedEffect(Unit) {
viewModel.getDynamicLink(context)
viewModel.getDynamicLink(
context = context,
thumbNailTitle = context.getString(R.string.share_thumbnail_title),
thumbNailDescription = context.getString(R.string.share_thumbnail_description),
thumbNailImageUrl = BuildConfig.BASE_URL + context.getString(R.string.share_plan_share_feed_template_image_url)
)
}

LaunchedEffect(key1 = viewModel.effect) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package com.yapp.growth.presentation.ui.createPlan.share

import android.content.Context
import android.net.Uri
import androidx.lifecycle.SavedStateHandle
import com.google.firebase.dynamiclinks.ktx.*
import com.google.firebase.ktx.Firebase
import com.yapp.growth.base.BaseViewModel
import com.yapp.growth.presentation.BuildConfig
import com.yapp.growth.presentation.R
import com.yapp.growth.presentation.firebase.SchemeType
import com.yapp.growth.presentation.firebase.getDeepLink
import com.yapp.growth.presentation.ui.createPlan.share.ShareContract.*
Expand Down Expand Up @@ -45,12 +47,23 @@ class ShareViewModel @Inject constructor(
fun getDynamicLink(
context: Context,
scheme: SchemeType = SchemeType.RESPOND,
id: String = planId.toString()
id: String = planId.toString(),
thumbNailTitle: String,
thumbNailDescription: String,
thumbNailImageUrl: String,
) {
Firebase.dynamicLinks.shortLinkAsync {
link = getDeepLink(scheme.name, scheme.key, id)
domainUriPrefix = BuildConfig.PLANZ_FIREBASE_PREFIX
androidParameters(context.packageName) { }
iosParameters(context.packageName) {
setFallbackUrl(Uri.parse("https://jalynne.notion.site/3379be16ecc04914bb98f8a57c980a46"))
}
socialMetaTagParameters {
title = thumbNailTitle
description = thumbNailDescription
imageUrl = Uri.parse(thumbNailImageUrl)
}

}.addOnSuccessListener { (shortLink, _) ->
updateState { copy(shareUrl = shortLink.toString()) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.compose.ui.res.stringResource
import androidx.constraintlayout.compose.ConstraintLayout
import androidx.constraintlayout.compose.Dimension
import androidx.hilt.navigation.compose.hiltViewModel
import com.yapp.growth.presentation.BuildConfig
import com.yapp.growth.presentation.R
import com.yapp.growth.presentation.component.*
import com.yapp.growth.presentation.firebase.SchemeType
Expand Down Expand Up @@ -50,7 +51,14 @@ fun FixPlanScreen(
PlanzBackAndShareAppBar(
title = stringResource(id = R.string.fix_plan_title_text),
onClickBackIcon = { viewModel.setEvent(FixPlanEvent.OnClickBackButton) },
onClickShareIcon = { onDynamicLinkClick(context, SchemeType.RESPOND, uiState.planId.toString()) }
onClickShareIcon = { onDynamicLinkClick(
context, SchemeType.RESPOND,
uiState.planId.toString(),
thumbNailTitle = context.getString(R.string.share_thumbnail_title),
thumbNailDescription = context.getString(R.string.share_thumbnail_description),
thumbNailImageUrl = BuildConfig.BASE_URL + context.getString(R.string.share_plan_share_feed_template_image_url)
)
}
)
}
) { padding ->
Expand Down
6 changes: 4 additions & 2 deletions presentation/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,6 @@
<string name="share_plan_share_feed_template_title">약속 요청이 도착했어요!</string>
<string name="share_plan_share_feed_template_description">가능한 약속 날짜와 시간을 응답해 주세요!</string>
<string name="share_plan_share_feed_template_image_url">/images/share-feed.png</string>
<string name="share_plan_share_feed_template_web_url">/images/share-feed.png</string> <!-- 임시 URL -->
<string name="share_plan_share_feed_template_mobile_url">/images/share-feed.png</string> <!-- 임시 URL -->

<!-- 약속 응답 -->
<string name="respond_plan_title_text">약속응답</string>
Expand Down Expand Up @@ -156,6 +154,10 @@
<!-- 약속 응답 상태 -->
<string name="respond_plan_already_confirm_info_text">이미 확정된 약속입니다.</string>

<!-- 약속 공유 썸네일 -->
<string name="share_thumbnail_title">"약속 조율 요청이 도착했어요!"</string>
<string name="share_thumbnail_description">"정말 편리한 약속잡기, Planz"</string>

<string name="icon_exit_content_description">Exit Icon</string>
<string name="icon_create_content_description">Create Icon</string>
<string name="icon_check_content_description">Check Icon</string>
Expand Down

0 comments on commit c141956

Please sign in to comment.