Skip to content

Commit 2ecb5b2

Browse files
authored
Merge pull request #110 from FindYou-Kuit/fix-qa
Fix qa
2 parents a6c3be5 + f2bff24 commit 2ecb5b2

18 files changed

Lines changed: 158 additions & 49 deletions

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ android {
2424
applicationId = "com.kuit.findu"
2525
minSdk = 28
2626
targetSdk = 35
27-
versionCode = 5
28-
versionName = "1.0.4"
27+
versionCode = 12
28+
versionName = "1.0.11"
2929

3030
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3131
buildConfigField("String", "GPT_KEY", properties["GPT_KEY"].toString())

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1212
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- CameraX -->
1313
<uses-permission android:name="android.permission.CAMERA" />
14+
<uses-permission android:name="com.google.android.gms.permission.AD_ID"
15+
tools:ignore="AdvertisingIdPolicy" />
1416

1517
<queries>
1618
<package android:name="com.nhn.android.nmap" />
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.kuit.findu.data.dataremote.util
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import com.kuit.findu.data.datalocal.datasource.TokenLocalDataSource
6+
import com.kuit.findu.presentation.ui.login.LoginActivity
7+
import dagger.hilt.android.qualifiers.ApplicationContext
8+
import okhttp3.Interceptor
9+
import okhttp3.Response
10+
import javax.inject.Inject
11+
12+
class AuthAuthenticator @Inject constructor(
13+
private val tokenLocalDataSource: TokenLocalDataSource,
14+
@ApplicationContext private val context: Context
15+
) : Interceptor {
16+
override fun intercept(chain: Interceptor.Chain): Response {
17+
val request = chain.request()
18+
val response = chain.proceed(request)
19+
20+
// 401 Unauthorized 에러 감지
21+
if (response.code == 401) {
22+
// 토큰 삭제
23+
tokenLocalDataSource.clearToken()
24+
25+
// 로그인 화면으로 이동
26+
val intent = Intent(context, LoginActivity::class.java).apply {
27+
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
28+
}
29+
context.startActivity(intent)
30+
}
31+
32+
return response
33+
}
34+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.kuit.findu.data.dataremote.util
2+
3+
class AuthenticationException: Exception()

app/src/main/java/com/kuit/findu/di/NetworkModule.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFact
66
import com.kuit.findu.BuildConfig
77
import com.kuit.findu.BuildConfig.DEBUG
88
import com.kuit.findu.data.datalocal.datasource.TokenLocalDataSource
9+
import com.kuit.findu.data.dataremote.util.AuthAuthenticator
910
import com.kuit.findu.data.dataremote.util.AuthInterceptor
1011
import com.kuit.findu.data.dataremote.util.ErrorTrackingInterceptor
1112
import dagger.Module
@@ -42,15 +43,17 @@ object NetworkModule {
4243
fun providesOkHttpClient(
4344
loggingInterceptor: HttpLoggingInterceptor,
4445
authInterceptor: AuthInterceptor,
46+
authAuthenticator: AuthAuthenticator,
4547
errorTrackingInterceptor: ErrorTrackingInterceptor,
4648
): OkHttpClient =
4749
OkHttpClient.Builder().apply {
4850
connectTimeout(10, TimeUnit.SECONDS)
4951
writeTimeout(10, TimeUnit.SECONDS)
5052
readTimeout(10, TimeUnit.SECONDS)
53+
addInterceptor(authInterceptor)
5154
if (DEBUG) addInterceptor(loggingInterceptor)
5255
else addInterceptor(errorTrackingInterceptor)
53-
addInterceptor(authInterceptor)
56+
addInterceptor(authAuthenticator)
5457
}.build()
5558

5659
@Provides
@@ -69,6 +72,15 @@ object NetworkModule {
6972
return AuthInterceptor(tokenLocalDataSource, context)
7073
}
7174

75+
@Provides
76+
@Singleton
77+
fun provideAuthAuthenticator(
78+
tokenLocalDataSource: TokenLocalDataSource,
79+
@ApplicationContext context: Context,
80+
): AuthAuthenticator {
81+
return AuthAuthenticator(tokenLocalDataSource, context)
82+
}
83+
7284
@Provides
7385
@Singleton
7486
fun provideErrorTrackingInterceptor(

app/src/main/java/com/kuit/findu/presentation/ui/home/HomeFragment.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.kuit.findu.presentation.ui.home.composeview.HomeScreen
2424
import com.kuit.findu.presentation.ui.home.viewmodel.HomeUiEffect
2525
import com.kuit.findu.presentation.ui.home.viewmodel.HomeUiEvent
2626
import com.kuit.findu.presentation.ui.home.viewmodel.HomeViewModel
27+
import com.kuit.findu.presentation.ui.login.LoginActivity
2728
import com.kuit.findu.presentation.util.permission.LocationPermissionManager.hasLocationPermission
2829
import dagger.hilt.android.AndroidEntryPoint
2930

@@ -89,11 +90,13 @@ class HomeFragment : Fragment() {
8990
is HomeUiEffect.NavigateToFindReport -> {
9091
navigateToFindReport()
9192
}
93+
9294
is HomeUiEffect.NavigateToLostReport -> {
9395
navigateToLostReport()
9496
}
9597

9698
is HomeUiEffect.Dial -> call120()
99+
is HomeUiEffect.NavigateToLogin -> startLoginActivity()
97100
}
98101
}
99102
}
@@ -173,6 +176,11 @@ class HomeFragment : Fragment() {
173176
)
174177
}
175178

179+
private fun startLoginActivity() {
180+
val intent = Intent(requireContext(), LoginActivity::class.java)
181+
startActivity(intent)
182+
requireActivity().finish()
183+
}
176184

177185
private fun navigateToProtectDetail(id: String, tag: String, name: String) {
178186
when (tag) {

app/src/main/java/com/kuit/findu/presentation/ui/home/viewmodel/HomeViewModel.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.kuit.findu.presentation.ui.home.viewmodel
22

3+
import android.util.Log
34
import androidx.lifecycle.ViewModel
45
import androidx.lifecycle.viewModelScope
6+
import com.kuit.findu.data.dataremote.util.AuthenticationException
57
import com.kuit.findu.domain.model.HomeData
68
import com.kuit.findu.domain.model.ProtectAnimal
79
import com.kuit.findu.domain.model.ReportAnimal
@@ -78,6 +80,7 @@ sealed class HomeUiEffect {
7880
data class ShowToast(val message: String) : HomeUiEffect()
7981

8082
data object Dial : HomeUiEffect()
83+
data object NavigateToLogin : HomeUiEffect()
8184
}
8285

8386
@HiltViewModel
@@ -140,6 +143,11 @@ class HomeViewModel @Inject constructor(
140143
}
141144
},
142145
onFailure = { error ->
146+
Log.e("HomeViewModel", "loadHomeData: $error")
147+
if(error.message?.contains("401") == true) {
148+
_uiEffect.send(HomeUiEffect.NavigateToLogin)
149+
return@fold
150+
}
143151
_uiState.update {
144152
it.copy(
145153
loadState = LoadState.Error,

app/src/main/java/com/kuit/findu/presentation/ui/login/composeview/LoginScreen.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import com.kuit.findu.ui.theme.FindUTheme
2828
fun LoginScreen(
2929
kakaoLoginButtonClicked: () -> Unit,
3030
withoutSignUpButtonClicked: () -> Unit,
31-
modifier: Modifier = Modifier
31+
modifier: Modifier = Modifier,
3232
) {
3333
Column(
3434
modifier = modifier
@@ -66,12 +66,13 @@ fun LoginScreen(
6666
tint = Color.Unspecified,
6767
)
6868
Spacer(modifier = Modifier.height(53.dp))
69-
Icon(
70-
painter = painterResource(R.drawable.img_kakao_login),
71-
contentDescription = null,
72-
modifier = Modifier.noRippleClickable(kakaoLoginButtonClicked),
73-
tint = Color.Unspecified
74-
)
69+
// Icon(
70+
// painter = painterResource(R.drawable.img_kakao_login),
71+
// contentDescription = null,
72+
// modifier = Modifier.noRippleClickable(),
73+
// tint = Color.Unspecified
74+
// )
75+
Spacer(modifier = Modifier.height(50.dp))
7576
Spacer(modifier = Modifier.height(15.dp))
7677
Text(
7778
text = stringResource(R.string.login_without_signup),

app/src/main/java/com/kuit/findu/presentation/ui/my/MyFragment.kt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,14 @@ class MyFragment : Fragment() {
186186
// clMyAlarmSetting.setOnClickListener {
187187
// myViewModel.toggleAlarmSetting()
188188
// }
189-
binding.clMyAlarmSetting.isEnabled = false
189+
// binding.clMyAlarmSetting.isEnabled = false
190+
191+
clMyGotoLogin.setOnClickListener {
192+
with(requireActivity()) {
193+
startActivity(Intent(requireContext(), LoginActivity::class.java))
194+
finish()
195+
}
196+
}
190197

191198
setupVersion()
192199
}
@@ -250,6 +257,14 @@ class MyFragment : Fragment() {
250257
.load(type.drawableRes)
251258
.into(binding.ivMyIllust)
252259
}
260+
261+
if(it.nickname == "게스트") {
262+
binding.ivMyEditPen.visibility = View.GONE
263+
binding.clMyWithdrawal.visibility = View.GONE
264+
binding.clMyLogout.visibility = View.GONE
265+
} else {
266+
binding.clMyGotoLogin.visibility = View.GONE
267+
}
253268
}
254269
}
255270
}
@@ -284,9 +299,9 @@ class MyFragment : Fragment() {
284299
}
285300
launch {
286301
myViewModel.alarmEnabled.collect { enabled ->
287-
binding.ivMyAlarmIcon.setImageResource(
288-
if (enabled) R.drawable.img_my_alarm_on else R.drawable.img_my_alarm_off
289-
)
302+
// binding.ivMyAlarmIcon.setImageResource(
303+
// if (enabled) R.drawable.img_my_alarm_on else R.drawable.img_my_alarm_off
304+
// )
290305
}
291306
}
292307
}

app/src/main/java/com/kuit/findu/presentation/ui/search/detail/SearchDisappearDetailFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class SearchDisappearDetailFragment : Fragment() {
5656

5757
binding.mapView.getMapAsync { nMap ->
5858
naverMap = nMap
59+
naverMap?.uiSettings?.isLogoClickEnabled = false
5960
pendingLocation?.let { location ->
6061
setupMap(location.latitude, location.longitude)
6162
}

0 commit comments

Comments
 (0)