diff --git a/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt b/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt index 045df278cdef0a95a999d3107892f7b2c0f0bc45..7ce32a11f6c16e442eb768aa936a1459ef0bbdef 100644 --- a/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt +++ b/app/src/main/java/jp/atled/agileworks/model/NotificationRepository.kt @@ -38,7 +38,7 @@ class NotificationRepository(_serverNumber: Int? = null) { fun clearToken(onResult: (Boolean) -> Unit) { Log.d("AgileWorks", "firebase token clean") - ApiClient.reCreateLogout() + ApiClient.reCreateLogout(serverNumber) LogoutRepository.getInstance().getLogout { FcmRepository().removeFcmToken { Log.d("AgileWorks", "firebase token clean -> ${successOrFailured(it)}") diff --git a/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt b/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt index 66475d3e4305304a6f45847ec0dd87ee1983159e..068b008114c4caf13d925d023b40642eab5dacf3 100644 --- a/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt +++ b/app/src/main/java/jp/atled/agileworks/model/api/ApiClient.kt @@ -25,8 +25,8 @@ object ApiClient { instance = createRetrofitInstance(isLogout = false) } var instanceLogout: ApiService = createRetrofitInstance(isLogout = true) - fun reCreateLogout() { - instanceLogout = createRetrofitInstance(isLogout = true) + fun reCreateLogout(serverNumber: Int? = null) { + instanceLogout = createRetrofitInstance(serverNumber, isLogout = true) } private fun createRetrofitInstance(serverNumber: Int? = null, isLogout: Boolean): ApiService { return Retrofit.Builder().run { diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index f341ac5f131d5af0792754ffaab5fa5170d8811d..7a3ada6fb46f699e38ce03d3e81d5129936040b7 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -395,11 +395,14 @@ class LoginFragment: Fragment() { } private fun relogin() { - LoginUtil.clearAuthStateAndNotificationToken { - // relogin() の契機のひとつ、通知タップからの再認証の失敗時に MainActivity をスタックに残さないように。 - shouldClearTaskOnOAuthFailure = true - startAuthorization() + val serverList = ServerRepository().loadServerList() + for (serverNumber in serverList) { + LoginUtil.clearAuthStateAndNotificationToken(serverNumber) { + // relogin() の契機のひとつ、通知タップからの再認証の失敗時に MainActivity をスタックに残さないように。 + shouldClearTaskOnOAuthFailure = true + } } + ServerRepository().removeServerList() } fun startAuthorization() { diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt index 60f13a351da5e56d83ab4eb092816d7d689d2980..ac67b45e1a868660a44ef900cb1dbd9a463af91a 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginUtil.kt @@ -7,12 +7,12 @@ import jp.atled.agileworks.view.ui.documentweb.DocumentWebFragment import kotlinx.android.synthetic.main.activity_direct_open_document.* object LoginUtil { - fun clearAuthStateAndNotificationToken(onResponse: (Boolean) -> Unit) { - NotificationRepository().clearToken { + fun clearAuthStateAndNotificationToken(serverNumber: Int? = null, onResponse: (Boolean) -> Unit) { + NotificationRepository(serverNumber).clearToken() { // FCM トークンの削除に API 呼び出しを伴うので、トークン削除できてからリポジトリをクリアする。 - AuthStateRepository().clear() + AuthStateRepository(serverNumber).clear() OAuthService.resetAuthState() - DeviceInfoRepository().removeDeviceInfo() + DeviceInfoRepository(serverNumber).removeDeviceInfo() onResponse(it) } }