Skip to content

Commit

Permalink
[FEAT] SwmLogging UserId 설정 (#156)
Browse files Browse the repository at this point in the history
  • Loading branch information
KxxHyoRim committed Nov 7, 2023
1 parent 55b9baa commit 02d9a59
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 14 deletions.
11 changes: 3 additions & 8 deletions app/src/main/java/com/lgtm/android/LGTMApplication.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.lgtm.android

import android.app.Application
import com.lgtm.android.data.datasource.LgtmPreferenceDataSource
import com.lgtm.domain.repository.AuthRepository
import com.swm.logging.android.SWMLogging
import dagger.hilt.android.HiltAndroidApp
import java.util.Locale
Expand All @@ -11,7 +11,7 @@ import javax.inject.Inject
class LGTMApplication : Application() {

@Inject
lateinit var lgtmPreferenceDataSource: LgtmPreferenceDataSource
lateinit var authRepository: AuthRepository

override fun onCreate() {
super.onCreate()
Expand All @@ -27,12 +27,7 @@ class LGTMApplication : Application() {
}

private fun getUserId(): String {
return "123" // todo : get user id from preference
// lgtmPreferenceDataSource.getValue(
// preferenceKey = LgtmPreferenceDataSource.Companion.PreferenceKey.ACCESS_TOKEN,
// defaultValue = "",
// isEncrypted = true
// )
return authRepository.getMemberId().toString()
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class LgtmPreferenceDataSource @Inject constructor(
return when (defaultValue) {
is String -> preference.getString(key, defaultValue) as T
is Boolean -> preference.getBoolean(key, defaultValue) as T
is Int -> preference.getInt(key, defaultValue) as T
else -> throw IllegalArgumentException("Add data type on ${this.javaClass.simpleName}")
}
}
Expand All @@ -33,6 +34,7 @@ class LgtmPreferenceDataSource @Inject constructor(
when (value) {
is String -> preference.edit(byAsync) { putString(key, value) }
is Boolean -> preference.edit(byAsync) { putBoolean(key, value) }
is Int -> preference.edit(byAsync) { putInt(key, value) }
else -> throw IllegalArgumentException("Add data type on ${this.javaClass.simpleName}")
}
}
Expand All @@ -51,6 +53,7 @@ class LgtmPreferenceDataSource @Inject constructor(
companion object {
enum class PreferenceKey {
MEMBER_TYPE,
MEMBER_ID,
UNKNOWN_MEMBER_TYPE,
ACCESS_TOKEN,
REFRESH_TOKEN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,29 @@ import com.lgtm.domain.entity.response.MemberDataDTO
import com.lgtm.domain.entity.response.SignUpResponseVO
import com.lgtm.domain.firebase.LgtmMessagingService
import com.lgtm.domain.repository.AuthRepository
import com.swm.logging.android.SWMLogging
import javax.inject.Inject

class AuthRepositoryImpl @Inject constructor(
private val lgtmPreferenceDataSource: LgtmPreferenceDataSource,
private val authDataSource: AuthDataSource,
private val lgtmFirebaseMessagingService: LgtmMessagingService
private val lgtmFirebaseMessagingService: LgtmMessagingService,
) : AuthRepository {

override fun saveUserData(memberData: MemberDataDTO) {
saveAccessToken(requireNotNull(memberData.accessToken))
saveRefreshToken(requireNotNull(memberData.refreshToken))
saveMemberType(requireNotNull(memberData.memberType))
saveMemberId(requireNotNull(memberData.memberId))
SWMLogging.setUserId(memberData.memberId.toString())
}

override fun saveUserData(signUpResponseVO: SignUpResponseVO, memberType: String?) {
override fun saveUserData(signUpResponseVO: SignUpResponseVO) {
saveAccessToken(requireNotNull(signUpResponseVO.accessToken))
saveRefreshToken(requireNotNull(signUpResponseVO.refreshToken))
saveMemberType(requireNotNull(memberType)) // todo 추후에 SignUpResponseVO에 memberType이 추가되면 변경
saveMemberType(requireNotNull(signUpResponseVO.memberType))
saveMemberId(requireNotNull(signUpResponseVO.memberId))
SWMLogging.setUserId(signUpResponseVO.memberId.toString())
}

override fun clearUserData() {
Expand Down Expand Up @@ -68,6 +73,23 @@ class AuthRepositoryImpl @Inject constructor(
)
}

override fun saveMemberId(memberId: Int) {
lgtmPreferenceDataSource.setValue(
preferenceKey = PreferenceKey.MEMBER_ID,
value = memberId,
isEncrypted = true,
byAsync = false
)
}

override fun getMemberId(): Int {
return lgtmPreferenceDataSource.getValue(
preferenceKey = PreferenceKey.MEMBER_ID,
defaultValue = -1,
isEncrypted = true
)
}

override fun getMemberType(): Role {
val role = lgtmPreferenceDataSource.getValue(
preferenceKey = PreferenceKey.MEMBER_TYPE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ import com.lgtm.domain.entity.response.SignUpResponseVO

interface AuthRepository {
fun saveUserData(memberData: MemberDataDTO)
fun saveUserData(signUpResponseVO: SignUpResponseVO, memberType: String?)
fun saveUserData(signUpResponseVO: SignUpResponseVO)

fun clearUserData()
fun saveAccessToken(accessToken: String)
fun saveRefreshToken(refreshToken: String)
fun saveMemberType(memberType: String)
fun saveMemberId(memberId: Int)
fun getMemberId(): Int?
fun getMemberType(): Role
fun isAutoLoginAvailable(): Boolean
suspend fun signUpJunior(signUpJuniorVO: SignUpJuniorRequestVO): Result<SignUpResponseVO>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,7 @@ class SignUpViewModel @Inject constructor(
_signUpState.value = NetworkState.Failure(e.message)
return@launch
}.onSuccess {
authRepository.saveUserData(it, it.memberType)
authRepository.saveUserData(it)
_signUpState.value = NetworkState.Success(it)
}.onFailure {
val errorMessage = if (it is LgtmResponseException) it.message else "로그인 실패"
Expand All @@ -404,7 +404,7 @@ class SignUpViewModel @Inject constructor(
_signUpState.value = NetworkState.Failure(e.message)
return@launch
}.onSuccess {
authRepository.saveUserData(it, it.memberType)
authRepository.saveUserData(it)
_signUpState.value = NetworkState.Success(it)
}.onFailure {
val errorMessage = if (it is LgtmResponseException) it.message else "로그인 실패"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,11 @@ object SWMLogging {
fun getUUID(): UUID = uuid
fun getAppVersion(): String = appVersion
fun getUserID(): String = userID

/** 앱 실행시에는 로그아웃 상태였지만, 도중 로그아웃을 하는 유저에 한해 사용됨 */
fun setUserId(userID: String) {
this.userID = userID
}
fun getRegion(): String = region
fun getDeviceModel(): String = deviceModel
}

0 comments on commit 02d9a59

Please sign in to comment.