Skip to content

Commit

Permalink
[feat] #172 survey popup ui
Browse files Browse the repository at this point in the history
  • Loading branch information
leeseokchan00 committed Sep 29, 2024
1 parent 66c680d commit 68130aa
Show file tree
Hide file tree
Showing 6 changed files with 148 additions and 0 deletions.
5 changes: 5 additions & 0 deletions core/designsystem/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,11 @@
<string name="home_user_clip">님의 클립</string>
<string name="home_this_week_link">이주의 링크</string>
<string name="home_this_week_recommend">이주의 추천 사이트</string>
<string name="home_survey_title">1분 설문조사 참여하고\n스타벅스 기프티콘 받기</string>
<string name="home_survey_subtitle">토스터 사용 피드백을 남겨주시면\n추첨을 통해 기프티콘을 드려요!</string>
<string name="home_survey_button">참여하기</string>
<string name="home_survey_skip"><u>일주일간 보지 않기</u></string>


<!-- error -->
<string name="error_clip_length">클립의 이름은 최대 15자까지 입력 가능해요</string>
Expand Down
1 change: 1 addition & 0 deletions feature/home/src/main/java/org/sopt/home/HomeContract.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,5 @@ sealed interface HomeSideEffect {
data object NavigateClipLink : HomeSideEffect
data object NavigateWebView : HomeSideEffect
data object ShowBottomSheet : HomeSideEffect
data object ShowPopupInfo : HomeSideEffect
}
9 changes: 9 additions & 0 deletions feature/home/src/main/java/org/sopt/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>({ FragmentHomeBinding.

private fun initView() {
initAdapter()
viewModel.showPopupInfo()
}

private fun collectState() {
Expand All @@ -62,13 +63,16 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>({ FragmentHomeBinding.
is HomeSideEffect.NavigateClipLink -> navigateToDestination(
"featureSaveLink://ClipLinkFragment/${viewModel.container.stateFlow.value.categoryId}/${viewModel.container.stateFlow.value.categoryName}",
)

is HomeSideEffect.ShowBottomSheet -> showHomeBottomSheet()
is HomeSideEffect.NavigateWebView -> {
val encodedURL = URLEncoder.encode(viewModel.container.stateFlow.value.url, StandardCharsets.UTF_8.toString())
navigateToDestination(
"featureSaveLink://webViewFragment/${0}/${false}/${false}/$encodedURL",
)
}

is HomeSideEffect.ShowPopupInfo -> showPopupInfo()
}
}

Expand All @@ -82,6 +86,7 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>({ FragmentHomeBinding.
getWeekBestLink()
}
}

private fun navigateToSetting() {
binding.ivHomeSetting.onThrottleClick {
viewModel.navigateSetting()
Expand Down Expand Up @@ -154,4 +159,8 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>({ FragmentHomeBinding.
}
}
}

private fun showPopupInfo() {
SurveyDialogFragment().show(parentFragmentManager, this.tag)
}
}
1 change: 1 addition & 0 deletions feature/home/src/main/java/org/sopt/home/HomeViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ class HomeViewModel @Inject constructor(
fun navigateSearch() = intent { postSideEffect(HomeSideEffect.NavigateSearch) }
fun navigateSetting() = intent { postSideEffect(HomeSideEffect.NavigateSetting) }
fun showBottomSheet() = intent { postSideEffect(HomeSideEffect.ShowBottomSheet) }
fun showPopupInfo() = intent { postSideEffect(HomeSideEffect.ShowPopupInfo) }

@OptIn(OrbitExperimental::class)
fun navigateClipLink(categoryId: Long?, categoryName: String?) = blockingIntent {
Expand Down
42 changes: 42 additions & 0 deletions feature/home/src/main/java/org/sopt/home/SurveyDialogFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package org.sopt.home

import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import org.sopt.home.databinding.FragmentSurveyDialogBinding
import org.sopt.ui.base.BindingDialogFragment
import org.sopt.ui.view.onThrottleClick

class SurveyDialogFragment : BindingDialogFragment<FragmentSurveyDialogBinding>(
{ FragmentSurveyDialogBinding.inflate(it) },
) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_FRAME, android.R.style.Theme_Dialog)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

binding.ivSurveyDialogClose.onThrottleClick {
dismiss()
}

binding.btnSurveyDialog.onThrottleClick {
dismiss()
}

binding.btnSurveyDialogSkip.onThrottleClick {
dismiss()
}
}

override fun onStart() {
super.onStart()
val dialog = dialog
if (dialog != null) {
dialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}
}
}
90 changes: 90 additions & 0 deletions feature/home/src/main/res/layout/fragment_survey_dialog.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="30dp"
android:background="@drawable/shape_white_fill_12_rect">

<TextView
android:id="@+id/tv_survey_dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="20dp"
android:text="@string/home_survey_title"
android:textAppearance="@style/Typography.suit.bold_20"
android:textColor="@color/neutrals800"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/tv_survey_dialog_subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/home_survey_subtitle"
android:textAppearance="@style/Typography.suit.regular_16_128"
android:textColor="@color/neutrals800"
app:layout_constraintStart_toStartOf="@id/tv_survey_dialog_title"
app:layout_constraintTop_toBottomOf="@id/tv_survey_dialog_title" />

<ImageView
android:id="@+id/iv_survey_dialog_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="21dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="10dp"
android:padding="12dp"
android:src="@drawable/ic_close_24"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_survey_dialog_subtitle"
app:layout_constraintTop_toTopOf="parent" />

<ImageView
android:id="@+id/iv_survey_dialog"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="18dp"
android:adjustViewBounds="true"
android:src="@drawable/img_notification_permission"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_survey_dialog_subtitle" />

<TextView
android:id="@+id/btn_survey_dialog"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="18dp"
android:layout_marginBottom="24dp"
android:background="@drawable/shape_primary_fill_8_rect"
android:gravity="center"
android:paddingVertical="14dp"
android:text="@string/home_survey_button"
android:textAppearance="@style/Typography.suit.bold_16"
android:textColor="@color/neutrals_white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_survey_dialog" />

<TextView
android:id="@+id/btn_survey_dialog_skip"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="@string/home_survey_skip"
android:textAppearance="@style/Typography.suit.regular_14"
android:textColor="@color/neutrals800"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_survey_dialog" />

</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit 68130aa

Please sign in to comment.