diff --git a/app/src/main/java/chat/rocket/android/authentication/login/presentation/LoginPresenter.kt b/app/src/main/java/chat/rocket/android/authentication/login/presentation/LoginPresenter.kt index d3be18ae94..3d2c8ecdf8 100644 --- a/app/src/main/java/chat/rocket/android/authentication/login/presentation/LoginPresenter.kt +++ b/app/src/main/java/chat/rocket/android/authentication/login/presentation/LoginPresenter.kt @@ -149,7 +149,9 @@ class LoginPresenter @Inject constructor( icon, logo, username, - thumb + thumb, + token?.userId, + token?.authToken ) saveAccountInteractor.save(account) } diff --git a/app/src/main/java/chat/rocket/android/authentication/loginoptions/presentation/LoginOptionsPresenter.kt b/app/src/main/java/chat/rocket/android/authentication/loginoptions/presentation/LoginOptionsPresenter.kt index c0a0766dff..06d4e6fcb4 100644 --- a/app/src/main/java/chat/rocket/android/authentication/loginoptions/presentation/LoginOptionsPresenter.kt +++ b/app/src/main/java/chat/rocket/android/authentication/loginoptions/presentation/LoginOptionsPresenter.kt @@ -190,7 +190,9 @@ class LoginOptionsPresenter @Inject constructor( icon, logo, username, - thumb + thumb, + token?.userId, + token?.authToken ) saveAccountInteractor.save(account) } diff --git a/app/src/main/java/chat/rocket/android/authentication/registerusername/presentation/RegisterUsernamePresenter.kt b/app/src/main/java/chat/rocket/android/authentication/registerusername/presentation/RegisterUsernamePresenter.kt index a5d21a8762..a39790f5c6 100644 --- a/app/src/main/java/chat/rocket/android/authentication/registerusername/presentation/RegisterUsernamePresenter.kt +++ b/app/src/main/java/chat/rocket/android/authentication/registerusername/presentation/RegisterUsernamePresenter.kt @@ -88,7 +88,9 @@ class RegisterUsernamePresenter @Inject constructor( icon, logo, username, - thumb + thumb, + token?.userId, + token?.authToken ) saveAccountInteractor.save(account) } diff --git a/app/src/main/java/chat/rocket/android/authentication/signup/presentation/SignupPresenter.kt b/app/src/main/java/chat/rocket/android/authentication/signup/presentation/SignupPresenter.kt index 1633e36228..3c0d9014e1 100644 --- a/app/src/main/java/chat/rocket/android/authentication/signup/presentation/SignupPresenter.kt +++ b/app/src/main/java/chat/rocket/android/authentication/signup/presentation/SignupPresenter.kt @@ -109,7 +109,9 @@ class SignupPresenter @Inject constructor( icon, logo, me.username!!, - thumb + thumb, + token?.userId, + token?.authToken ) saveAccountInteractor.save(account) } diff --git a/app/src/main/java/chat/rocket/android/authentication/twofactor/presentation/TwoFAPresenter.kt b/app/src/main/java/chat/rocket/android/authentication/twofactor/presentation/TwoFAPresenter.kt index a6e15b5ca9..107f12eb03 100644 --- a/app/src/main/java/chat/rocket/android/authentication/twofactor/presentation/TwoFAPresenter.kt +++ b/app/src/main/java/chat/rocket/android/authentication/twofactor/presentation/TwoFAPresenter.kt @@ -110,7 +110,9 @@ class TwoFAPresenter @Inject constructor( icon, logo, me.username!!, - thumb + thumb, + token?.userId, + token?.authToken ) saveAccountInteractor.save(account) } diff --git a/app/src/main/java/chat/rocket/android/main/presentation/MainPresenter.kt b/app/src/main/java/chat/rocket/android/main/presentation/MainPresenter.kt index 0ce1fce30e..a7df0cba77 100644 --- a/app/src/main/java/chat/rocket/android/main/presentation/MainPresenter.kt +++ b/app/src/main/java/chat/rocket/android/main/presentation/MainPresenter.kt @@ -2,11 +2,13 @@ package chat.rocket.android.main.presentation import chat.rocket.android.authentication.domain.model.DeepLinkInfo import chat.rocket.android.core.behaviours.AppLanguageView +import chat.rocket.android.helper.UserHelper import chat.rocket.android.push.GroupedPush -import chat.rocket.android.server.domain.GetCurrentLanguageInteractor -import chat.rocket.android.server.domain.RefreshPermissionsInteractor -import chat.rocket.android.server.domain.RefreshSettingsInteractor +import chat.rocket.android.server.domain.* +import chat.rocket.android.server.domain.model.Account import chat.rocket.android.server.infrastructure.ConnectionManagerFactory +import chat.rocket.android.util.extensions.avatarUrl +import chat.rocket.android.util.extensions.serverLogoUrl import javax.inject.Inject import javax.inject.Named @@ -16,10 +18,16 @@ class MainPresenter @Inject constructor( private val appLanguageView: AppLanguageView, private val refreshSettingsInteractor: RefreshSettingsInteractor, private val refreshPermissionsInteractor: RefreshPermissionsInteractor, + private val getSettingsInteractor: GetSettingsInteractor, private val connectionManagerFactory: ConnectionManagerFactory, private var getLanguageInteractor: GetCurrentLanguageInteractor, - private val groupedPush: GroupedPush + private val groupedPush: GroupedPush, + private val tokenRepository: TokenRepository, + private val userHelper: UserHelper, + private val saveAccountInteractor: SaveAccountInteractor, + private val removeAccountInteractor: RemoveAccountInteractor ) { + fun connect() = currentServer?.let { refreshSettingsInteractor.refreshAsync(it) refreshPermissionsInteractor.refreshAsync(it) @@ -44,4 +52,39 @@ class MainPresenter @Inject constructor( } } } + + fun removeOldAccount() = currentServer?.let { + removeAccountInteractor.remove(currentServer) + } + + fun saveNewAccount() { + currentServer?.let { currentServer -> + with(getSettingsInteractor.get(currentServer)) { + val icon = favicon()?.let { + currentServer.serverLogoUrl(it) + } + val logo = wideTile()?.let { + currentServer.serverLogoUrl(it) + } + val token = tokenRepository.get(currentServer) + val thumb = currentServer.avatarUrl( + userHelper.username() ?: "", + token?.userId, + token?.authToken + ) + + val account = Account( + siteName() ?: currentServer, + currentServer, + icon, + logo, + userHelper.username() ?: "", + thumb, + token?.userId, + token?.authToken + ) + saveAccountInteractor.save(account) + } + } + } } diff --git a/app/src/main/java/chat/rocket/android/main/ui/MainActivity.kt b/app/src/main/java/chat/rocket/android/main/ui/MainActivity.kt index 0620ed87b0..14637d78cc 100644 --- a/app/src/main/java/chat/rocket/android/main/ui/MainActivity.kt +++ b/app/src/main/java/chat/rocket/android/main/ui/MainActivity.kt @@ -47,6 +47,8 @@ class MainActivity : AppCompatActivity(), HasActivityInjector, with(presenter) { connect() getAppLanguage() + removeOldAccount() + saveNewAccount() intent.getStringExtra(INTENT_CHAT_ROOM_ID).let { clearNotificationsForChatRoom(it) showChatList(it, deepLinkInfo) diff --git a/app/src/main/java/chat/rocket/android/server/domain/model/Account.kt b/app/src/main/java/chat/rocket/android/server/domain/model/Account.kt index ebb4c0d328..7388076768 100644 --- a/app/src/main/java/chat/rocket/android/server/domain/model/Account.kt +++ b/app/src/main/java/chat/rocket/android/server/domain/model/Account.kt @@ -6,8 +6,10 @@ import se.ansman.kotshi.JsonSerializable data class Account( val serverName: String?, val serverUrl: String, - val serverLogo: String?, - val serverBg: String?, + val serverLogoUrl: String?, + val serverBackgroundImageUrl: String?, val userName: String, - val avatar: String? + val userAvatarUrl: String?, + val authToken: String?, + val userId: String? ) \ No newline at end of file diff --git a/app/src/main/java/chat/rocket/android/servers/adapter/ServerViewHolder.kt b/app/src/main/java/chat/rocket/android/servers/adapter/ServerViewHolder.kt index 6ea75b314d..c4f6c8a98c 100644 --- a/app/src/main/java/chat/rocket/android/servers/adapter/ServerViewHolder.kt +++ b/app/src/main/java/chat/rocket/android/servers/adapter/ServerViewHolder.kt @@ -12,7 +12,7 @@ class ServerViewHolder(itemView: View, private val currentServerUrl: String) : fun bind(account: Account) { with(itemView) { - Glide.with(context).load(account.serverLogo).into(image_server) + Glide.with(context).load(account.serverLogoUrl).into(image_server) text_server_name.text = account.serverName ?: account.serverUrl text_server_url.text = account.serverUrl image_check.isInvisible = currentServerUrl != account.serverUrl