diff --git a/.github/workflows/pr_builder.yml b/.github/workflows/pr_builder.yml
index a21a3c0ad..bb4da3d10 100644
--- a/.github/workflows/pr_builder.yml
+++ b/.github/workflows/pr_builder.yml
@@ -45,7 +45,7 @@ jobs:
- name: Access BASE_URL
env:
HFM_BASE_URL: ${{ secrets.BASE_URL }}
- run: echo "base.url=\"$BASE_URL\"" >> local.properties
+ run: echo "dev.base.url=\"$BASE_URL\"" >> local.properties
- name: Access IO_SENTRY_DSN
env:
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7cbeef69b..f01aa69a3 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -26,12 +26,10 @@ android {
applicationId = "org.sopt.pingle"
minSdk = 28
targetSdk = 34
- versionCode = 15
- versionName = "1.1.0"
+ versionCode = 16
+ versionName = "2.0.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- buildConfigField("String", "BASE_URL", properties["base.url"].toString())
- buildConfigField("String", "ACCESS_TOKEN", properties["access.token"].toString())
buildConfigField(
"String",
"NAVER_MAP_CLIENT_ID",
@@ -50,11 +48,13 @@ android {
buildTypes {
debug {
isMinifyEnabled = false
+ buildConfigField("String", "BASE_URL", properties["dev.base.url"].toString())
buildConfigField("String", "AMPLITUDE_API_KEY", properties["amplitude.dev.api.key"].toString())
}
release {
isMinifyEnabled = true
isShrinkResources = true
+ buildConfigField("String", "BASE_URL", properties["prod.base.url"].toString())
buildConfigField("String", "AMPLITUDE_API_KEY", properties["amplitude.prod.api.key"].toString())
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b8920df5c..5f541aa11 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -82,16 +82,12 @@
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity" />
+
-
-
+
(R.layout.activity_auth
}
private fun addListeners() {
- binding.btnAuthKakao.setOnClickListener {
+ binding.btnAuthKakao.setOnSingleClickListener {
kakaoAuthService.loginKakao(viewModel::login, viewModel::saveAccount)
AmplitudeUtils.trackEventWithProperty(START_SIGNUP, SIGNUP_TYPE, KAKAO)
}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/auth/AuthViewModel.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/auth/AuthViewModel.kt
index 661385306..180fa21bb 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/auth/AuthViewModel.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/auth/AuthViewModel.kt
@@ -32,11 +32,11 @@ class AuthViewModel @Inject constructor(
authRepository.postLogin(
kakaoAccessToken,
RequestAuthDto(LOGIN_PLATFORM)
- ).onSuccess { authEntitiy ->
+ ).onSuccess { authEntity ->
with(localStorage) {
isLogin = true
- accessToken = (HEADER_BEARER + authEntitiy.accessToken)
- refreshToken = (HEADER_BEARER + authEntitiy.refreshToken)
+ accessToken = (HEADER_BEARER + authEntity.accessToken)
+ refreshToken = (HEADER_BEARER + authEntity.refreshToken)
}
_loginState.value = UiState.Success(Unit)
}.onFailure {
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/joingroup/JoinGroupCodeActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/joingroup/JoinGroupCodeActivity.kt
index e6ca4682b..2ebb2785b 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/joingroup/JoinGroupCodeActivity.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/joingroup/JoinGroupCodeActivity.kt
@@ -18,6 +18,7 @@ import org.sopt.pingle.util.component.PingleSnackbar
import org.sopt.pingle.util.context.hideKeyboard
import org.sopt.pingle.util.context.stringOf
import org.sopt.pingle.util.view.UiState
+import org.sopt.pingle.util.view.setOnSingleClickListener
import timber.log.Timber
@AndroidEntryPoint
@@ -45,10 +46,10 @@ class JoinGroupCodeActivity :
hideKeyboard(binding.etJoinGroupCodeInvitation)
}
- binding.btnJoinGroupCodeNext.setOnClickListener {
+ binding.btnJoinGroupCodeNext.setOnSingleClickListener {
viewModel.joinGroupCodeState(
teamId = teamId,
- joinGroupEntity = JoinGroupCodeEntity(viewModel.joinGroupCodeEditText.value.toString())
+ joinGroupEntity = JoinGroupCodeEntity(viewModel.joinGroupCodeEditText.value)
)
AmplitudeUtils.trackEvent(CLICK_EXISTINGGROUP_ENTER)
@@ -141,7 +142,7 @@ class JoinGroupCodeActivity :
companion object {
const val TEAM_ID = "teamId"
const val GROUP_NAME = "groupName"
- const val LOADING = "Loding"
+ const val LOADING = "Loading"
const val EMPTY = "Empty"
const val JOIN_GROUP_CODE_ACTIVITY = "JoinGroupCodeActivity"
const val SNACKBAR_BOTTOM_MARGIN = 97
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/main/home/map/MapFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/main/home/map/MapFragment.kt
index b57d3e5f9..37dd1c7b9 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/main/home/map/MapFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/main/home/map/MapFragment.kt
@@ -358,7 +358,7 @@ class MapFragment : BindingFragment(R.layout.fragment_map),
private fun makeMarkers(pinEntityList: List) {
homeViewModel.clearMarkerModelData()
- pinEntityList.mapIndexed { index, pinEntity ->
+ pinEntityList.mapIndexed { _, pinEntity ->
pinEntity.toMarkerModel().apply {
this.marker.apply {
map = naverMap
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/main/more/MoreFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/main/more/MoreFragment.kt
index ac333c66a..64648535f 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/main/more/MoreFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/main/more/MoreFragment.kt
@@ -25,6 +25,7 @@ import org.sopt.pingle.util.component.PingleSnackbar
import org.sopt.pingle.util.fragment.navigateToWebView
import org.sopt.pingle.util.fragment.stringOf
import org.sopt.pingle.util.view.UiState
+import org.sopt.pingle.util.view.setOnSingleClickListener
import timber.log.Timber
@AndroidEntryPoint
@@ -55,11 +56,11 @@ class MoreFragment : BindingFragment(R.layout.fragment_more
}
private fun addListeners() {
- binding.tvMoreContactTitle.setOnClickListener {
+ binding.tvMoreContactTitle.setOnSingleClickListener {
startActivity(navigateToWebView(CONTACT))
}
- binding.tvMoreNoticeTitle.setOnClickListener {
+ binding.tvMoreNoticeTitle.setOnSingleClickListener {
startActivity(navigateToWebView(NOTICE))
}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planlocation/PlanLocationFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planlocation/PlanLocationFragment.kt
index df5022397..4041108db 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planlocation/PlanLocationFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planlocation/PlanLocationFragment.kt
@@ -30,6 +30,11 @@ class PlanLocationFragment :
collectData()
}
+ override fun onDestroyView() {
+ binding.rvPlanLocationList.adapter = null
+ super.onDestroyView()
+ }
+
private fun initLayout() {
binding.rvPlanLocationList.adapter = planLocationAdapter
}
@@ -77,9 +82,4 @@ class PlanLocationFragment :
private fun deleteOldPosition(position: Int) {
planLocationViewModel.updatePlanLocationList(position)
}
-
- override fun onDestroyView() {
- binding.rvPlanLocationList.adapter = null
- super.onDestroyView()
- }
}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planopenchatting/PlanOpenChattingFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planopenchatting/PlanOpenChattingFragment.kt
index b895f8484..f61a821fe 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planopenchatting/PlanOpenChattingFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/plan/planopenchatting/PlanOpenChattingFragment.kt
@@ -33,7 +33,7 @@ class PlanOpenChattingFragment :
}
private fun collectData() {
- planViewModel.planOpenChattingLink.flowWithLifecycle(viewLifecycleOwner.lifecycle).onEach { openChattingLink ->
+ planViewModel.planOpenChattingLink.flowWithLifecycle(viewLifecycleOwner.lifecycle).onEach {
planViewModel.validityOpenChattingLink()
}.launchIn(viewLifecycleOwner.lifecycleScope)
}
diff --git a/app/src/main/java/org/sopt/pingle/util/base/BindingFragment.kt b/app/src/main/java/org/sopt/pingle/util/base/BindingFragment.kt
index 263c09992..49212351d 100644
--- a/app/src/main/java/org/sopt/pingle/util/base/BindingFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/util/base/BindingFragment.kt
@@ -24,8 +24,4 @@ abstract class BindingFragment(@LayoutRes private val layou
binding.lifecycleOwner = this.viewLifecycleOwner
return binding.root
}
-
- override fun onDestroyView() {
- super.onDestroyView()
- }
}
diff --git a/app/src/main/java/org/sopt/pingle/util/component/AllModalDialogFragment.kt b/app/src/main/java/org/sopt/pingle/util/component/AllModalDialogFragment.kt
index 45794f1cb..882271533 100644
--- a/app/src/main/java/org/sopt/pingle/util/component/AllModalDialogFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/util/component/AllModalDialogFragment.kt
@@ -7,6 +7,7 @@ import android.view.View
import org.sopt.pingle.R
import org.sopt.pingle.databinding.DialogAllModalBinding
import org.sopt.pingle.util.base.BindingDialogFragment
+import org.sopt.pingle.util.view.setOnSingleClickListener
class AllModalDialogFragment(
private val title: String,
@@ -42,12 +43,12 @@ class AllModalDialogFragment(
}
private fun addListeners() {
- binding.btnAllModalButton.setOnClickListener {
+ binding.btnAllModalButton.setOnSingleClickListener {
clickBtn()
dismiss()
}
- binding.tvAllModalTextButton.setOnClickListener {
+ binding.tvAllModalTextButton.setOnSingleClickListener {
clickTextBtn()
dismiss()
}
diff --git a/app/src/main/java/org/sopt/pingle/util/component/PingleCardBottom.kt b/app/src/main/java/org/sopt/pingle/util/component/PingleCardBottom.kt
index f43540d38..bc16663df 100644
--- a/app/src/main/java/org/sopt/pingle/util/component/PingleCardBottom.kt
+++ b/app/src/main/java/org/sopt/pingle/util/component/PingleCardBottom.kt
@@ -10,6 +10,7 @@ import org.sopt.pingle.databinding.BottomCardPingleBinding
import org.sopt.pingle.domain.model.PingleEntity
import org.sopt.pingle.presentation.mapper.isCompleted
import org.sopt.pingle.util.view.DateTimeUtils
+import org.sopt.pingle.util.view.setOnSingleClickListener
import org.sopt.pingle.util.view.stringOf
@SuppressLint("CustomViewStyleable")
@@ -31,11 +32,11 @@ class PingleCardBottom @JvmOverloads constructor(
}
private fun addListeners() {
- binding.btnCardBottomMapChat.setOnClickListener {
+ binding.btnCardBottomMapChat.setOnSingleClickListener {
onChatButtonClick()
}
- binding.btnCardBottomMapParticipate.setOnClickListener {
+ binding.btnCardBottomMapParticipate.setOnClickListener() {
onParticipateButtonClick(pinId)
}
}
diff --git a/app/src/main/java/org/sopt/pingle/util/component/PingleModalDialogFragment.kt b/app/src/main/java/org/sopt/pingle/util/component/PingleModalDialogFragment.kt
index d3e2edd17..10faa730b 100644
--- a/app/src/main/java/org/sopt/pingle/util/component/PingleModalDialogFragment.kt
+++ b/app/src/main/java/org/sopt/pingle/util/component/PingleModalDialogFragment.kt
@@ -8,6 +8,7 @@ import org.sopt.pingle.databinding.DialogPingleModalBinding
import org.sopt.pingle.presentation.type.CategoryType
import org.sopt.pingle.util.base.BindingDialogFragment
import org.sopt.pingle.util.fragment.colorOf
+import org.sopt.pingle.util.view.setOnSingleClickListener
class PingleModalDialogFragment(
private val category: CategoryType,
@@ -39,12 +40,12 @@ class PingleModalDialogFragment(
}
private fun addListeners() {
- binding.btnPingleModal.setOnClickListener {
+ binding.btnPingleModal.setOnSingleClickListener {
clickBtn()
dismiss()
}
- binding.layoutPingleModalBackground.setOnClickListener {
+ binding.layoutPingleModalBackground.setOnSingleClickListener {
dismiss()
}
}
diff --git a/app/src/main/java/org/sopt/pingle/util/view/ViewExt.kt b/app/src/main/java/org/sopt/pingle/util/view/ViewExt.kt
index 4e2e8039a..081edca73 100644
--- a/app/src/main/java/org/sopt/pingle/util/view/ViewExt.kt
+++ b/app/src/main/java/org/sopt/pingle/util/view/ViewExt.kt
@@ -36,3 +36,19 @@ fun View.copyGroupCode(copyCode: String) {
snackbarType = SnackbarType.CHECK
)
}
+
+inline fun View.setOnSingleClickListener(
+ delay: Long = 500L,
+ crossinline block: (View) -> Unit
+) {
+ var isClickable = true
+ setOnClickListener { view ->
+ if (isClickable) {
+ isClickable = false
+ block(view)
+ view.postDelayed({
+ isClickable = true
+ }, delay)
+ }
+ }
+}
diff --git a/app/src/main/res/drawable-xhdpi/img_work_graphic.png b/app/src/main/res/drawable-xhdpi/img_work_graphic.png
deleted file mode 100644
index 9a25c089c..000000000
Binary files a/app/src/main/res/drawable-xhdpi/img_work_graphic.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_work_graphic.png b/app/src/main/res/drawable-xxhdpi/img_work_graphic.png
deleted file mode 100644
index 1603cf064..000000000
Binary files a/app/src/main/res/drawable-xxhdpi/img_work_graphic.png and /dev/null differ
diff --git a/app/src/main/res/drawable/img_work_graphic.png b/app/src/main/res/drawable/img_work_graphic.png
deleted file mode 100644
index 82ed05fca..000000000
Binary files a/app/src/main/res/drawable/img_work_graphic.png and /dev/null differ
diff --git a/app/src/main/res/drawable/selector_indicator_onboarding.xml b/app/src/main/res/drawable/selector_indicator_onboarding.xml
index 1cd0ca1c5..622e347b6 100644
--- a/app/src/main/res/drawable/selector_indicator_onboarding.xml
+++ b/app/src/main/res/drawable/selector_indicator_onboarding.xml
@@ -1,6 +1,6 @@
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_indicator_onboarding_deselect_8.xml b/app/src/main/res/drawable/shape_ring_g_03.xml
similarity index 100%
rename from app/src/main/res/drawable/shape_indicator_onboarding_deselect_8.xml
rename to app/src/main/res/drawable/shape_ring_g_03.xml
diff --git a/app/src/main/res/drawable/shape_indicator_onboarding_select_8.xml b/app/src/main/res/drawable/shape_ring_white.xml
similarity index 100%
rename from app/src/main/res/drawable/shape_indicator_onboarding_select_8.xml
rename to app/src/main/res/drawable/shape_ring_white.xml
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4f9d0a159..2d7e69c9c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -260,10 +260,6 @@
다음으로
건너뛰기
-
- 아직 공사중!
- 아직 구현중인 기능이에요\n조금만 기다려주세요
-
참여현황
개최자
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 35f929f10..75f1236c8 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -16,9 +16,9 @@ splash = "1.0.1"
# Google
material = "1.11.0"
-google-services = "4.4.0"
+google-services = "4.4.1"
firebase-crashlytics = "2.9.9"
-firebase-bom = "32.7.1"
+firebase-bom = "32.7.4"
# Test
junit = "4.13.2"
@@ -38,7 +38,7 @@ retrofit-kotlin-serialization-converter = "1.0.0"
kotlin-serialization-json = "1.5.1"
sentry = "4.1.1"
naver-maps = "3.17.0"
-play-services-location = "21.0.1"
+play-services-location = "21.2.0"
progress-bar = "1.1.3"
kakao = "2.15.0"
amplitude = "1.+"