Skip to content

Commit 121e082

Browse files
authored
Merge pull request #59 from SEONGGYU96/hotfix/npe_after_kill_process
Hotfix/npe after kill process
2 parents a442ef3 + f47be1d commit 121e082

File tree

11 files changed

+54
-44
lines changed

11 files changed

+54
-44
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ android {
1616
applicationId "org.sopt.santamanitto"
1717
minSdkVersion 23
1818
targetSdkVersion 30
19-
versionCode 4
20-
versionName "1.1.0"
19+
versionCode 5
20+
versionName "1.1.1"
2121

2222
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2323
}

app/src/main/java/org/sopt/santamanitto/network/NetworkModule.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@ import dagger.hilt.android.components.ApplicationComponent
77
import okhttp3.OkHttpClient
88
import okhttp3.logging.HttpLoggingInterceptor
99
import org.sopt.santamanitto.SecretString
10-
import org.sopt.santamanitto.user.AccessTokenContainer
10+
import org.sopt.santamanitto.preference.UserPreferenceManager
1111
import retrofit2.Retrofit
1212
import retrofit2.converter.gson.GsonConverterFactory
13-
import javax.inject.Named
1413
import javax.inject.Qualifier
1514
import javax.inject.Singleton
1615

@@ -33,11 +32,11 @@ class NetworkModule {
3332
@Provides
3433
@Singleton
3534
@AuthInterceptorOkHttpClient
36-
fun provideAuthInterceptorOkHttpClient(accessTokenContainer: AccessTokenContainer): OkHttpClient {
35+
fun provideAuthInterceptorOkHttpClient(userPreferenceManager: UserPreferenceManager): OkHttpClient {
3736
return OkHttpClient.Builder()
3837
.addInterceptor {
3938
val request = it.request().newBuilder()
40-
.addHeader("jwt", accessTokenContainer.accessToken)
39+
.addHeader("jwt", userPreferenceManager.getAccessToken()!!)
4140
.build()
4241
it.proceed(request)
4342
}

app/src/main/java/org/sopt/santamanitto/preference/SharedPreferenceModule.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class SharedPreferenceModule {
2424
SharedPreferenceManagerImpl(sharedPreferences)
2525

2626
@Provides
27+
@Singleton
2728
fun provideUserPreferenceManager(sharedPreferenceManager: SharedPreferenceManager): UserPreferenceManager =
2829
UserPreferenceManager(sharedPreferenceManager)
2930
}

app/src/main/java/org/sopt/santamanitto/room/manittoroom/ManittoRoomActivity.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package org.sopt.santamanitto.room.manittoroom
22

3-
import androidx.appcompat.app.AppCompatActivity
43
import android.os.Bundle
54
import android.util.Log
65
import androidx.activity.viewModels
7-
import androidx.databinding.DataBindingUtil
8-
import androidx.databinding.DataBindingUtil.*
6+
import androidx.appcompat.app.AppCompatActivity
7+
import androidx.databinding.DataBindingUtil.setContentView
98
import dagger.hilt.android.AndroidEntryPoint
109
import org.sopt.santamanitto.R
1110
import org.sopt.santamanitto.databinding.ActivityManittoRoomBinding

app/src/main/java/org/sopt/santamanitto/room/manittoroom/fragment/FinishFragment.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,6 @@ class FinishFragment: Fragment() {
2020

2121
private val manittoRoomViewModel: ManittoRoomViewModel by activityViewModels()
2222

23-
override fun onCreate(savedInstanceState: Bundle?) {
24-
super.onCreate(savedInstanceState)
25-
manittoRoomViewModel.run {
26-
refreshManittoRoomInfo()
27-
getPersonalRelationInfo()
28-
}
29-
}
30-
3123
override fun onCreateView(
3224
inflater: LayoutInflater,
3325
container: ViewGroup?,
@@ -47,6 +39,11 @@ class FinishFragment: Fragment() {
4739
})
4840
}
4941

42+
manittoRoomViewModel.run {
43+
refreshManittoRoomInfo()
44+
getPersonalRelationInfo()
45+
}
46+
5047
setOnClickListener()
5148

5249
return binding.root

app/src/main/java/org/sopt/santamanitto/room/manittoroom/fragment/MatchedFragment.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,6 @@ class MatchedFragment : Fragment() {
1919

2020
private val manittoRoomViewModel: ManittoRoomViewModel by activityViewModels()
2121

22-
override fun onCreate(savedInstanceState: Bundle?) {
23-
super.onCreate(savedInstanceState)
24-
manittoRoomViewModel.run {
25-
refreshManittoRoomInfo()
26-
getPersonalRelationInfo()
27-
}
28-
}
29-
3022
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
3123
binding = FragmentMatchedBinding.inflate(inflater, container, false).apply {
3224
viewModel = manittoRoomViewModel
@@ -41,6 +33,12 @@ class MatchedFragment : Fragment() {
4133
}
4234
})
4335
}
36+
37+
manittoRoomViewModel.run {
38+
refreshManittoRoomInfo()
39+
getPersonalRelationInfo()
40+
}
41+
4442
initManittoTitle()
4543

4644
setOnClickListener()

app/src/main/java/org/sopt/santamanitto/room/manittoroom/fragment/ResultFragment.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class ResultFragment: Fragment() {
3535
recyclerviewResult.adapter = resultAdapter
3636
}
3737

38+
if (manittoRoomViewModel.members.value.isNullOrEmpty()) {
39+
manittoRoomViewModel.refreshManittoRoomInfo()
40+
}
41+
3842
manittoRoomViewModel.members.observe(viewLifecycleOwner) {
3943
binding.textviewResultTitle.text = String.format(getString(R.string.result_title), it.size)
4044
}

app/src/main/java/org/sopt/santamanitto/user/AccessTokenContainer.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

app/src/main/java/org/sopt/santamanitto/user/UserModule.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import dagger.Provides
88
import dagger.hilt.InstallIn
99
import dagger.hilt.android.components.ApplicationComponent
1010
import dagger.hilt.android.qualifiers.ApplicationContext
11+
import org.sopt.santamanitto.preference.UserPreferenceManager
1112
import org.sopt.santamanitto.user.data.source.UserCachedDataSource
1213
import org.sopt.santamanitto.user.data.source.UserDataSource
1314
import javax.inject.Named
@@ -28,10 +29,6 @@ class UserModule {
2829
@Named("cached")
2930
fun provideUserDataSource(
3031
@Named("remote") userRemoteDataSource: UserDataSource,
31-
accessTokenContainer: AccessTokenContainer
32-
) : UserDataSource = UserCachedDataSource(userRemoteDataSource, accessTokenContainer)
33-
34-
@Provides
35-
@Singleton
36-
fun provideAccessToken() : AccessTokenContainer = AccessTokenContainer()
32+
userPreferenceManager: UserPreferenceManager
33+
) : UserDataSource = UserCachedDataSource(userRemoteDataSource, userPreferenceManager)
3734
}

app/src/main/java/org/sopt/santamanitto/user/data/source/UserCachedDataSource.kt

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package org.sopt.santamanitto.user.data.source
22

3+
import org.sopt.santamanitto.preference.UserPreferenceManager
34
import org.sopt.santamanitto.room.data.JoinedRoom
4-
import org.sopt.santamanitto.user.AccessTokenContainer
55
import org.sopt.santamanitto.user.data.LoginUser
66
import org.sopt.santamanitto.user.data.User
77
import org.sopt.santamanitto.user.data.source.UserDataSource.*
88
import javax.inject.Named
99

1010
class UserCachedDataSource(
1111
@Named("remote") private val userRemoteDataSource: UserDataSource,
12-
private val accessTokenContainer: AccessTokenContainer
12+
private val userPreferenceManager: UserPreferenceManager
1313
): UserDataSource {
1414

1515
private var _cachedLoginUser: LoginUser? = null
@@ -27,7 +27,7 @@ class UserCachedDataSource(
2727
override fun login(serialNumber: String, callback: LoginCallback) {
2828
userRemoteDataSource.login(serialNumber, object : LoginCallback {
2929
override fun onLoginSuccess(loginUser: LoginUser) {
30-
accessTokenContainer.accessToken = loginUser.accessToken
30+
initUserPreference(loginUser, serialNumber)
3131
_cachedLoginUser = loginUser
3232
callback.onLoginSuccess(loginUser)
3333
}
@@ -41,7 +41,7 @@ class UserCachedDataSource(
4141
override fun createAccount(userName: String, serialNumber: String, callback: CreateAccountCallback) {
4242
userRemoteDataSource.createAccount(userName, serialNumber, object: CreateAccountCallback {
4343
override fun onCreateAccountSuccess(loginUser: LoginUser) {
44-
accessTokenContainer.accessToken = loginUser.accessToken
44+
initUserPreference(loginUser, serialNumber)
4545
_cachedLoginUser = loginUser
4646
callback.onCreateAccountSuccess(loginUser)
4747
}
@@ -53,14 +53,17 @@ class UserCachedDataSource(
5353
}
5454

5555
override fun getUserId(): Int {
56+
initCachedLoginUser()
5657
return cachedLoginUser!!.id
5758
}
5859

5960
override fun getAccessToken(): String {
61+
initCachedLoginUser()
6062
return cachedLoginUser!!.accessToken
6163
}
6264

6365
override fun getUserName(): String {
66+
initCachedLoginUser()
6467
return cachedLoginUser!!.userName
6568
}
6669

@@ -98,4 +101,21 @@ class UserCachedDataSource(
98101
})
99102
}
100103
}
104+
105+
private fun initUserPreference(loginUser: LoginUser, serialNumber: String) {
106+
userPreferenceManager.run {
107+
setAccessToken(loginUser.accessToken)
108+
setUserId(loginUser.id)
109+
setUserUpdateTime(loginUser.userName)
110+
setSerialNumber(serialNumber)
111+
}
112+
}
113+
114+
private fun initCachedLoginUser() {
115+
if (_cachedLoginUser == null) {
116+
userPreferenceManager.let {
117+
_cachedLoginUser = LoginUser(it.getUserName()!!, it.getSerialNumber()!!, it.getUserId()!!, it.getAccessToken()!!)
118+
}
119+
}
120+
}
101121
}

0 commit comments

Comments
 (0)