mirror of
https://github.com/nextcloud/talk-android
synced 2025-08-02 17:45:21 +01:00
Smaller improvements overall
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
739e63782f
commit
5e7866be53
@ -85,6 +85,19 @@ abstract class BaseController : ButterKnifeController(), ComponentCallbacks {
|
|||||||
return floatingActionButton
|
return floatingActionButton
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected val appBar: AppBarLayout?
|
||||||
|
get() {
|
||||||
|
var appBarLayout: AppBarLayout? = null
|
||||||
|
activity?.let {
|
||||||
|
if (it is MainActivity) {
|
||||||
|
appBarLayout = it.appBar
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return appBarLayout
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
android.R.id.home -> {
|
android.R.id.home -> {
|
||||||
|
@ -98,7 +98,7 @@ class NextcloudTalkRepositoryImpl(private val apiService: ApiService) : Nextclou
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun registerPushWithProxyForUser(user: UserNgEntity, options: Map<String, String>): Any {
|
override suspend fun registerPushWithProxyForUser(user: UserNgEntity, options: Map<String, String>): Any {
|
||||||
return apiService.unregisterForPushWithProxy(ApiUtils.getUrlPushProxy(), options)
|
return apiService.registerForPushWithProxy(ApiUtils.getUrlPushProxy(), options)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun unregisterPushWithProxyForUser(user: UserNgEntity, options: Map<String, String>): Any {
|
override suspend fun unregisterPushWithProxyForUser(user: UserNgEntity, options: Map<String, String>): Any {
|
||||||
|
@ -27,7 +27,6 @@ import com.nextcloud.talk.models.json.generic.GenericOverall
|
|||||||
import com.nextcloud.talk.models.json.push.PushRegistrationOverall
|
import com.nextcloud.talk.models.json.push.PushRegistrationOverall
|
||||||
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall
|
import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall
|
||||||
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
|
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
|
||||||
import io.reactivex.Observable
|
|
||||||
import retrofit2.http.*
|
import retrofit2.http.*
|
||||||
|
|
||||||
interface ApiService {
|
interface ApiService {
|
||||||
|
@ -65,10 +65,12 @@ class LoginEntryView(val bundle: Bundle) : BaseView() {
|
|||||||
|
|
||||||
@SuppressLint("SetJavaScriptEnabled")
|
@SuppressLint("SetJavaScriptEnabled")
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
|
||||||
actionBar?.hide()
|
|
||||||
viewModel = viewModelProvider(factory).get(LoginEntryViewModel::class.java)
|
viewModel = viewModelProvider(factory).get(LoginEntryViewModel::class.java)
|
||||||
val view = super.onCreateView(inflater, container)
|
val view = super.onCreateView(inflater, container)
|
||||||
|
|
||||||
|
appBar?.isVisible = false
|
||||||
|
actionBar?.hide()
|
||||||
|
|
||||||
assembledPrefix = resources?.getString(R.string.nc_talk_login_scheme) + protocolSuffix + "login/"
|
assembledPrefix = resources?.getString(R.string.nc_talk_login_scheme) + protocolSuffix + "login/"
|
||||||
|
|
||||||
viewModel.state.observe(this@LoginEntryView, Observer {
|
viewModel.state.observe(this@LoginEntryView, Observer {
|
||||||
|
@ -19,7 +19,9 @@ import com.nextcloud.talk.newarch.domain.usecases.base.UseCaseResponse
|
|||||||
import com.nextcloud.talk.newarch.local.models.UserNgEntity
|
import com.nextcloud.talk.newarch.local.models.UserNgEntity
|
||||||
import com.nextcloud.talk.utils.PushUtils
|
import com.nextcloud.talk.utils.PushUtils
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences
|
import com.nextcloud.talk.utils.preferences.AppPreferences
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.withContext
|
||||||
import org.koin.core.parameter.parametersOf
|
import org.koin.core.parameter.parametersOf
|
||||||
import java.net.URLDecoder
|
import java.net.URLDecoder
|
||||||
|
|
||||||
@ -107,7 +109,7 @@ class LoginEntryViewModel constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getProfile(loginData: LoginData) {
|
private suspend fun getProfile(loginData: LoginData) {
|
||||||
user.username = loginData.username!!
|
user.username = loginData.username!!
|
||||||
user.baseUrl = loginData.serverUrl!!
|
user.baseUrl = loginData.serverUrl!!
|
||||||
user.token = loginData.token
|
user.token = loginData.token
|
||||||
@ -128,7 +130,7 @@ class LoginEntryViewModel constructor(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getCapabilities() {
|
private suspend fun getCapabilities() {
|
||||||
getCapabilitiesUseCase.invoke(viewModelScope, parametersOf(user.baseUrl), object : UseCaseResponse<CapabilitiesOverall> {
|
getCapabilitiesUseCase.invoke(viewModelScope, parametersOf(user.baseUrl), object : UseCaseResponse<CapabilitiesOverall> {
|
||||||
override suspend fun onSuccess(result: CapabilitiesOverall) {
|
override suspend fun onSuccess(result: CapabilitiesOverall) {
|
||||||
user.capabilities = result.ocs.data.capabilities
|
user.capabilities = result.ocs.data.capabilities
|
||||||
@ -141,15 +143,18 @@ class LoginEntryViewModel constructor(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getSignalingSettings() {
|
private suspend fun getSignalingSettings() {
|
||||||
getSignalingSettingsUseCase.invoke(viewModelScope, parametersOf(user), object : UseCaseResponse<SignalingSettingsOverall> {
|
getSignalingSettingsUseCase.invoke(viewModelScope, parametersOf(user), object : UseCaseResponse<SignalingSettingsOverall> {
|
||||||
override suspend fun onSuccess(result: SignalingSettingsOverall) {
|
override suspend fun onSuccess(result: SignalingSettingsOverall) {
|
||||||
user.signalingSettings = result.ocs.signalingSettings
|
withContext(Dispatchers.IO) {
|
||||||
val pushConfiguration = PushConfiguration()
|
user.signalingSettings = result.ocs.signalingSettings
|
||||||
val pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PENDING, 0)
|
val pushConfiguration = PushConfiguration()
|
||||||
pushConfiguration.pushConfigurationStateWrapper = pushConfigurationStateWrapper
|
val pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PENDING, 0)
|
||||||
usersRepository.insertUser(user)
|
pushConfiguration.pushConfigurationStateWrapper = pushConfigurationStateWrapper
|
||||||
registerForPush()
|
usersRepository.insertUser(user)
|
||||||
|
setAdjustedUserAsActive()
|
||||||
|
registerForPush()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onError(errorModel: ErrorModel?) {
|
override suspend fun onError(errorModel: ErrorModel?) {
|
||||||
@ -161,31 +166,37 @@ class LoginEntryViewModel constructor(
|
|||||||
private suspend fun registerForPush() {
|
private suspend fun registerForPush() {
|
||||||
val token = appPreferences.pushToken
|
val token = appPreferences.pushToken
|
||||||
if (!token.isNullOrBlank()) {
|
if (!token.isNullOrBlank()) {
|
||||||
user.pushConfiguration?.pushToken = token
|
withContext(Dispatchers.IO) {
|
||||||
usersRepository.updateUser(user)
|
user.pushConfiguration?.pushToken = token
|
||||||
registerForPushWithServer(token)
|
usersRepository.updateUser(user)
|
||||||
|
registerForPushWithServer(token)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_MISSING_TOKEN))
|
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_MISSING_TOKEN))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun registerForPushWithServer(token: String) {
|
private suspend fun registerForPushWithServer(token: String) {
|
||||||
val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(context, token)
|
val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(context, token)
|
||||||
registerPushWithServerUseCase.invoke(viewModelScope, parametersOf(user, options), object : UseCaseResponse<PushRegistrationOverall> {
|
registerPushWithServerUseCase.invoke(viewModelScope, parametersOf(user, options), object : UseCaseResponse<PushRegistrationOverall> {
|
||||||
override suspend fun onSuccess(result: PushRegistrationOverall) {
|
override suspend fun onSuccess(result: PushRegistrationOverall) {
|
||||||
user.pushConfiguration?.deviceIdentifier = result.ocs.data.deviceIdentifier
|
withContext(Dispatchers.IO) {
|
||||||
user.pushConfiguration?.deviceIdentifierSignature = result.ocs.data.signature
|
user.pushConfiguration?.deviceIdentifier = result.ocs.data.deviceIdentifier
|
||||||
user.pushConfiguration?.userPublicKey = result.ocs.data.publicKey
|
user.pushConfiguration?.deviceIdentifierSignature = result.ocs.data.signature
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.SERVER_REGISTRATION_DONE, null)
|
user.pushConfiguration?.userPublicKey = result.ocs.data.publicKey
|
||||||
usersRepository.updateUser(user)
|
user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.SERVER_REGISTRATION_DONE, null)
|
||||||
registerForPushWithProxy()
|
usersRepository.updateUser(user)
|
||||||
|
registerForPushWithProxy()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onError(errorModel: ErrorModel?) {
|
override suspend fun onError(errorModel: ErrorModel?) {
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_SERVER_REGISTRATION
|
withContext(Dispatchers.IO) {
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code
|
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_SERVER_REGISTRATION
|
||||||
usersRepository.updateUser(user)
|
user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code
|
||||||
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_SERVER_FAILED))
|
usersRepository.updateUser(user)
|
||||||
|
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_SERVER_FAILED))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -196,22 +207,29 @@ class LoginEntryViewModel constructor(
|
|||||||
if (options != null) {
|
if (options != null) {
|
||||||
registerPushWithProxyUseCase.invoke(viewModelScope, parametersOf(user, options), object : UseCaseResponse<Any> {
|
registerPushWithProxyUseCase.invoke(viewModelScope, parametersOf(user, options), object : UseCaseResponse<Any> {
|
||||||
override suspend fun onSuccess(result: Any) {
|
override suspend fun onSuccess(result: Any) {
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PROXY_REGISTRATION_DONE, null)
|
withContext(Dispatchers.IO) {
|
||||||
usersRepository.updateUser(user)
|
user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PROXY_REGISTRATION_DONE, null)
|
||||||
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, if (!updatingUser) LoginEntryStateClarification.ACCOUNT_CREATED else LoginEntryStateClarification.ACCOUNT_UPDATED))
|
usersRepository.updateUser(user)
|
||||||
|
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, if (!updatingUser) LoginEntryStateClarification.ACCOUNT_CREATED else LoginEntryStateClarification.ACCOUNT_UPDATED))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun onError(errorModel: ErrorModel?) {
|
override suspend fun onError(errorModel: ErrorModel?) {
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION
|
withContext(Dispatchers.IO) {
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code
|
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION
|
||||||
usersRepository.updateUser(user)
|
user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code
|
||||||
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED))
|
usersRepository.updateUser(user)
|
||||||
|
setAdjustedUserAsActive()
|
||||||
|
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION
|
withContext(Dispatchers.IO) {
|
||||||
usersRepository.updateUser(user)
|
user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION
|
||||||
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED))
|
usersRepository.updateUser(user)
|
||||||
|
state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,10 +48,12 @@ class ServerEntryView : BaseView() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup): View {
|
||||||
actionBar?.hide()
|
|
||||||
viewModel = viewModelProvider(factory).get(ServerEntryViewModel::class.java)
|
viewModel = viewModelProvider(factory).get(ServerEntryViewModel::class.java)
|
||||||
val view = super.onCreateView(inflater, container)
|
val view = super.onCreateView(inflater, container)
|
||||||
|
|
||||||
|
appBar?.isVisible = false
|
||||||
|
actionBar?.hide()
|
||||||
|
|
||||||
view.serverEntryTextInputEditText.setCompoundDrawablesWithIntrinsicBounds(null, null, resources?.getDrawable(R.drawable.ic_arrow_forward_white_24px), null)
|
view.serverEntryTextInputEditText.setCompoundDrawablesWithIntrinsicBounds(null, null, resources?.getDrawable(R.drawable.ic_arrow_forward_white_24px), null)
|
||||||
view.serverEntryTextInputEditText.compoundDrawables[2].alpha = 99
|
view.serverEntryTextInputEditText.compoundDrawables[2].alpha = 99
|
||||||
|
|
||||||
|
@ -41,6 +41,10 @@ class PushConfigurationConverter {
|
|||||||
|
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
fun fromStringToPushConfiguration(value: String): PushConfiguration? {
|
fun fromStringToPushConfiguration(value: String): PushConfiguration? {
|
||||||
|
if (value.isNullOrBlank()) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
return json.parse(PushConfiguration.serializer(), value)
|
return json.parse(PushConfiguration.serializer(), value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user