mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
Merge pull request #2222 from nextcloud/chore/1549/roomMigration4
Migrate further areas to room
This commit is contained in:
commit
fd727322ac
@ -31,8 +31,8 @@ import com.facebook.drawee.backends.pipeline.Fresco;
|
|||||||
import com.facebook.drawee.interfaces.DraweeController;
|
import com.facebook.drawee.interfaces.DraweeController;
|
||||||
import com.nextcloud.talk.R;
|
import com.nextcloud.talk.R;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
|
import com.nextcloud.talk.data.user.model.User;
|
||||||
import com.nextcloud.talk.databinding.AccountItemBinding;
|
import com.nextcloud.talk.databinding.AccountItemBinding;
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
|
||||||
import com.nextcloud.talk.models.json.participants.Participant;
|
import com.nextcloud.talk.models.json.participants.Participant;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.DisplayUtils;
|
import com.nextcloud.talk.utils.DisplayUtils;
|
||||||
@ -51,13 +51,13 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
|
|||||||
IFilterable<String> {
|
IFilterable<String> {
|
||||||
|
|
||||||
private final Participant participant;
|
private final Participant participant;
|
||||||
private final UserEntity userEntity;
|
private final User user;
|
||||||
@Nullable
|
@Nullable
|
||||||
private final Account account;
|
private final Account account;
|
||||||
|
|
||||||
public AdvancedUserItem(Participant participant, UserEntity userEntity, @Nullable Account account) {
|
public AdvancedUserItem(Participant participant, User user, @Nullable Account account) {
|
||||||
this.participant = participant;
|
this.participant = participant;
|
||||||
this.userEntity = userEntity;
|
this.user = user;
|
||||||
this.account = account;
|
this.account = account;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,8 +82,8 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
|
|||||||
return participant;
|
return participant;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserEntity getEntity() {
|
public User getUser() {
|
||||||
return userEntity;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@ -117,21 +117,21 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
|
|||||||
holder.binding.userName.setText(participant.getDisplayName());
|
holder.binding.userName.setText(participant.getDisplayName());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userEntity != null && !TextUtils.isEmpty(userEntity.getBaseUrl())) {
|
if (user != null && !TextUtils.isEmpty(user.getBaseUrl())) {
|
||||||
String host = Uri.parse(userEntity.getBaseUrl()).getHost();
|
String host = Uri.parse(user.getBaseUrl()).getHost();
|
||||||
if (!TextUtils.isEmpty(host)) {
|
if (!TextUtils.isEmpty(host)) {
|
||||||
holder.binding.account.setText(Uri.parse(userEntity.getBaseUrl()).getHost());
|
holder.binding.account.setText(Uri.parse(user.getBaseUrl()).getHost());
|
||||||
} else {
|
} else {
|
||||||
holder.binding.account.setText(userEntity.getBaseUrl());
|
holder.binding.account.setText(user.getBaseUrl());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
holder.binding.userIcon.getHierarchy().setPlaceholderImage(R.drawable.account_circle_48dp);
|
holder.binding.userIcon.getHierarchy().setPlaceholderImage(R.drawable.account_circle_48dp);
|
||||||
holder.binding.userIcon.getHierarchy().setFailureImage(R.drawable.account_circle_48dp);
|
holder.binding.userIcon.getHierarchy().setFailureImage(R.drawable.account_circle_48dp);
|
||||||
|
|
||||||
if (userEntity != null && userEntity.getBaseUrl() != null &&
|
if (user != null && user.getBaseUrl() != null &&
|
||||||
userEntity.getBaseUrl().startsWith("http://") ||
|
user.getBaseUrl().startsWith("http://") ||
|
||||||
userEntity.getBaseUrl().startsWith("https://")) {
|
user.getBaseUrl().startsWith("https://")) {
|
||||||
|
|
||||||
DraweeController draweeController = Fresco.newDraweeControllerBuilder()
|
DraweeController draweeController = Fresco.newDraweeControllerBuilder()
|
||||||
.setOldController(holder.binding.userIcon.getController())
|
.setOldController(holder.binding.userIcon.getController())
|
||||||
@ -139,7 +139,7 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
|
|||||||
.setImageRequest(
|
.setImageRequest(
|
||||||
DisplayUtils.getImageRequestForUrl(
|
DisplayUtils.getImageRequestForUrl(
|
||||||
ApiUtils.getUrlForAvatar(
|
ApiUtils.getUrlForAvatar(
|
||||||
userEntity.getBaseUrl(),
|
user.getBaseUrl(),
|
||||||
participant.getCalculatedActorId(),
|
participant.getCalculatedActorId(),
|
||||||
true)))
|
true)))
|
||||||
.build();
|
.build();
|
||||||
|
@ -59,10 +59,9 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
|
|||||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||||
import com.nextcloud.talk.controllers.base.NewBaseController
|
import com.nextcloud.talk.controllers.base.NewBaseController
|
||||||
import com.nextcloud.talk.controllers.util.viewBinding
|
import com.nextcloud.talk.controllers.util.viewBinding
|
||||||
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.databinding.ControllerProfileBinding
|
import com.nextcloud.talk.databinding.ControllerProfileBinding
|
||||||
import com.nextcloud.talk.databinding.UserInfoDetailsTableItemBinding
|
import com.nextcloud.talk.databinding.UserInfoDetailsTableItemBinding
|
||||||
import com.nextcloud.talk.models.database.CapabilitiesUtil
|
|
||||||
import com.nextcloud.talk.models.database.UserEntity
|
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOverall
|
import com.nextcloud.talk.models.json.generic.GenericOverall
|
||||||
import com.nextcloud.talk.models.json.userprofile.Scope
|
import com.nextcloud.talk.models.json.userprofile.Scope
|
||||||
import com.nextcloud.talk.models.json.userprofile.UserProfileData
|
import com.nextcloud.talk.models.json.userprofile.UserProfileData
|
||||||
@ -70,6 +69,7 @@ import com.nextcloud.talk.models.json.userprofile.UserProfileFieldsOverall
|
|||||||
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
|
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
|
||||||
import com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity
|
import com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity
|
||||||
import com.nextcloud.talk.ui.dialog.ScopeDialog
|
import com.nextcloud.talk.ui.dialog.ScopeDialog
|
||||||
|
import com.nextcloud.talk.users.UserManager
|
||||||
import com.nextcloud.talk.utils.ApiUtils
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
import com.nextcloud.talk.utils.DisplayUtils
|
import com.nextcloud.talk.utils.DisplayUtils
|
||||||
import com.nextcloud.talk.utils.FileUtils
|
import com.nextcloud.talk.utils.FileUtils
|
||||||
@ -77,7 +77,7 @@ import com.nextcloud.talk.utils.Mimetype.IMAGE_JPG
|
|||||||
import com.nextcloud.talk.utils.Mimetype.IMAGE_PREFIX
|
import com.nextcloud.talk.utils.Mimetype.IMAGE_PREFIX
|
||||||
import com.nextcloud.talk.utils.Mimetype.IMAGE_PREFIX_GENERIC
|
import com.nextcloud.talk.utils.Mimetype.IMAGE_PREFIX_GENERIC
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_MIME_TYPE_FILTER
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_MIME_TYPE_FILTER
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils
|
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew
|
||||||
import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil
|
import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil
|
||||||
import io.reactivex.Observer
|
import io.reactivex.Observer
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
@ -105,12 +105,12 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
|
|||||||
lateinit var ncApi: NcApi
|
lateinit var ncApi: NcApi
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var userUtils: UserUtils
|
lateinit var userManager: UserManager
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var permissionUtil: PlatformPermissionUtil
|
lateinit var permissionUtil: PlatformPermissionUtil
|
||||||
|
|
||||||
private var currentUser: UserEntity? = null
|
private var currentUser: User? = null
|
||||||
private var edit = false
|
private var edit = false
|
||||||
private var adapter: UserInfoAdapter? = null
|
private var adapter: UserInfoAdapter? = null
|
||||||
private var userInfo: UserProfileData? = null
|
private var userInfo: UserProfileData? = null
|
||||||
@ -151,7 +151,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
|
|||||||
item.setTitle(R.string.save)
|
item.setTitle(R.string.save)
|
||||||
binding.emptyList.root.visibility = View.GONE
|
binding.emptyList.root.visibility = View.GONE
|
||||||
binding.userinfoList.visibility = View.VISIBLE
|
binding.userinfoList.visibility = View.VISIBLE
|
||||||
if (CapabilitiesUtil.isAvatarEndpointAvailable(currentUser)) {
|
if (CapabilitiesUtilNew.isAvatarEndpointAvailable(currentUser!!)) {
|
||||||
// TODO later avatar can also be checked via user fields, for now it is in Talk capability
|
// TODO later avatar can also be checked via user fields, for now it is in Talk capability
|
||||||
binding.avatarButtons.visibility = View.VISIBLE
|
binding.avatarButtons.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
|
|||||||
adapter = UserInfoAdapter(null, activity!!.resources.getColor(R.color.colorPrimary), this)
|
adapter = UserInfoAdapter(null, activity!!.resources.getColor(R.color.colorPrimary), this)
|
||||||
binding.userinfoList.adapter = adapter
|
binding.userinfoList.adapter = adapter
|
||||||
binding.userinfoList.setItemViewCacheSize(DEFAULT_CACHE_SIZE)
|
binding.userinfoList.setItemViewCacheSize(DEFAULT_CACHE_SIZE)
|
||||||
currentUser = userUtils.currentUser
|
currentUser = userManager.currentUser.blockingGet()
|
||||||
val credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
|
val credentials = ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token)
|
||||||
binding.avatarUpload.setOnClickListener { sendSelectLocalFileIntent() }
|
binding.avatarUpload.setOnClickListener { sendSelectLocalFileIntent() }
|
||||||
binding.avatarChoose.setOnClickListener { showBrowserScreen() }
|
binding.avatarChoose.setOnClickListener { showBrowserScreen() }
|
||||||
@ -310,7 +310,7 @@ class ProfileController : NewBaseController(R.layout.controller_profile) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// show edit button
|
// show edit button
|
||||||
if (CapabilitiesUtil.canEditScopes(currentUser)) {
|
if (CapabilitiesUtilNew.canEditScopes(currentUser!!)) {
|
||||||
ncApi.getEditableUserProfileFields(
|
ncApi.getEditableUserProfileFields(
|
||||||
ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token),
|
ApiUtils.getCredentials(currentUser!!.username, currentUser!!.token),
|
||||||
ApiUtils.getUrlForUserFields(currentUser!!.baseUrl)
|
ApiUtils.getUrlForUserFields(currentUser!!.baseUrl)
|
||||||
|
@ -75,10 +75,9 @@ import com.nextcloud.talk.jobs.AccountRemovalWorker
|
|||||||
import com.nextcloud.talk.jobs.ContactAddressBookWorker
|
import com.nextcloud.talk.jobs.ContactAddressBookWorker
|
||||||
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.checkPermission
|
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.checkPermission
|
||||||
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.deleteAll
|
import com.nextcloud.talk.jobs.ContactAddressBookWorker.Companion.deleteAll
|
||||||
import com.nextcloud.talk.models.database.CapabilitiesUtil
|
|
||||||
import com.nextcloud.talk.models.database.UserEntity
|
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOverall
|
import com.nextcloud.talk.models.json.generic.GenericOverall
|
||||||
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
|
import com.nextcloud.talk.models.json.userprofile.UserProfileOverall
|
||||||
|
import com.nextcloud.talk.users.UserManager
|
||||||
import com.nextcloud.talk.utils.ApiUtils
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
import com.nextcloud.talk.utils.DisplayUtils
|
import com.nextcloud.talk.utils.DisplayUtils
|
||||||
import com.nextcloud.talk.utils.LoggingUtils.sendMailWithAttachment
|
import com.nextcloud.talk.utils.LoggingUtils.sendMailWithAttachment
|
||||||
@ -89,7 +88,6 @@ import com.nextcloud.talk.utils.SecurityUtils
|
|||||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ARE_CALL_SOUNDS
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ARE_CALL_SOUNDS
|
||||||
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew
|
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew
|
||||||
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
|
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils
|
|
||||||
import com.nextcloud.talk.utils.preferences.MagicUserInputModule
|
import com.nextcloud.talk.utils.preferences.MagicUserInputModule
|
||||||
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder
|
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder
|
||||||
import com.yarolegovich.lovelydialog.LovelySaveStateHandler
|
import com.yarolegovich.lovelydialog.LovelySaveStateHandler
|
||||||
@ -115,7 +113,7 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
|||||||
lateinit var ncApi: NcApi
|
lateinit var ncApi: NcApi
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var userUtils: UserUtils
|
lateinit var userManager: UserManager
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var currentUserProvider: CurrentUserProviderNew
|
lateinit var currentUserProvider: CurrentUserProviderNew
|
||||||
@ -328,19 +326,8 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
|||||||
finalAlias = ""
|
finalAlias = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
userUtils.createOrUpdateUser(
|
currentUser!!.clientCertificate = finalAlias
|
||||||
null,
|
userManager.updateOrCreateUser(currentUser!!)
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
currentUser!!.id,
|
|
||||||
null,
|
|
||||||
finalAlias,
|
|
||||||
null
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
arrayOf("RSA", "EC"),
|
arrayOf("RSA", "EC"),
|
||||||
null,
|
null,
|
||||||
@ -430,7 +417,7 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun removeCurrentAccount() {
|
private fun removeCurrentAccount() {
|
||||||
val otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser!!.id!!)
|
val otherUserExists = userManager.scheduleUserForDeletionWithId(currentUser!!.id!!).blockingGet()
|
||||||
val accountRemovalWork = OneTimeWorkRequest.Builder(AccountRemovalWorker::class.java).build()
|
val accountRemovalWork = OneTimeWorkRequest.Builder(AccountRemovalWorker::class.java).build()
|
||||||
WorkManager.getInstance().enqueue(accountRemovalWork)
|
WorkManager.getInstance().enqueue(accountRemovalWork)
|
||||||
if (otherUserExists && view != null) {
|
if (otherUserExists && view != null) {
|
||||||
@ -613,28 +600,9 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
|||||||
displayName = userProfileOverall.ocs!!.data!!.displayNameAlt
|
displayName = userProfileOverall.ocs!!.data!!.displayNameAlt
|
||||||
}
|
}
|
||||||
if ((!TextUtils.isEmpty(displayName) && !(displayName == currentUser!!.displayName))) {
|
if ((!TextUtils.isEmpty(displayName) && !(displayName == currentUser!!.displayName))) {
|
||||||
dbQueryDisposable = userUtils.createOrUpdateUser(
|
currentUser!!.displayName = displayName
|
||||||
null,
|
userManager.updateOrCreateUser(currentUser!!)
|
||||||
null,
|
binding.displayNameText.text = currentUser!!.displayName
|
||||||
null,
|
|
||||||
displayName,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
currentUser!!.id,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null
|
|
||||||
)
|
|
||||||
.subscribeOn(Schedulers.io())
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe(
|
|
||||||
{ userEntityResult: UserEntity ->
|
|
||||||
binding.displayNameText.text = userEntityResult.displayName
|
|
||||||
},
|
|
||||||
{ dispose(dbQueryDisposable) },
|
|
||||||
{ dispose(dbQueryDisposable) }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ dispose(profileQueryDisposable) },
|
{ dispose(profileQueryDisposable) },
|
||||||
@ -682,7 +650,7 @@ class SettingsController : NewBaseController(R.layout.controller_settings) {
|
|||||||
appPreferences!!.isKeyboardIncognito
|
appPreferences!!.isKeyboardIncognito
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CapabilitiesUtil.isReadStatusAvailable(userUtils.currentUser)) {
|
if (CapabilitiesUtilNew.isReadStatusAvailable(userManager.currentUser.blockingGet())) {
|
||||||
(binding.settingsReadPrivacy.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
|
(binding.settingsReadPrivacy.findViewById<View>(R.id.mp_checkable) as Checkable).isChecked =
|
||||||
!CapabilitiesUtilNew.isReadStatusPrivate(currentUser!!)
|
!CapabilitiesUtilNew.isReadStatusPrivate(currentUser!!)
|
||||||
} else {
|
} else {
|
||||||
|
@ -39,25 +39,22 @@ import com.nextcloud.talk.application.NextcloudTalkApplication
|
|||||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||||
import com.nextcloud.talk.controllers.base.NewBaseController
|
import com.nextcloud.talk.controllers.base.NewBaseController
|
||||||
import com.nextcloud.talk.controllers.util.viewBinding
|
import com.nextcloud.talk.controllers.util.viewBinding
|
||||||
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.databinding.ControllerGenericRvBinding
|
import com.nextcloud.talk.databinding.ControllerGenericRvBinding
|
||||||
import com.nextcloud.talk.models.ImportAccount
|
import com.nextcloud.talk.models.ImportAccount
|
||||||
import com.nextcloud.talk.models.database.UserEntity
|
|
||||||
import com.nextcloud.talk.models.json.participants.Participant
|
import com.nextcloud.talk.models.json.participants.Participant
|
||||||
import com.nextcloud.talk.utils.AccountUtils.findAccounts
|
import com.nextcloud.talk.users.UserManager
|
||||||
|
import com.nextcloud.talk.utils.AccountUtils.findAccountsForUsers
|
||||||
import com.nextcloud.talk.utils.AccountUtils.getInformationFromAccount
|
import com.nextcloud.talk.utils.AccountUtils.getInformationFromAccount
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_BASE_URL
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_BASE_URL
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_TOKEN
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_TOKEN
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USERNAME
|
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_USERNAME
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager
|
||||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
||||||
import io.reactivex.Observer
|
|
||||||
import io.reactivex.disposables.Disposable
|
|
||||||
import org.osmdroid.config.Configuration
|
import org.osmdroid.config.Configuration
|
||||||
import java.net.CookieManager
|
import java.net.CookieManager
|
||||||
import java.util.ArrayList
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication::class)
|
@AutoInjector(NextcloudTalkApplication::class)
|
||||||
@ -69,7 +66,7 @@ class SwitchAccountController(args: Bundle? = null) :
|
|||||||
private val binding: ControllerGenericRvBinding by viewBinding(ControllerGenericRvBinding::bind)
|
private val binding: ControllerGenericRvBinding by viewBinding(ControllerGenericRvBinding::bind)
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var userUtils: UserUtils
|
lateinit var userManager: UserManager
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var cookieManager: CookieManager
|
lateinit var cookieManager: CookieManager
|
||||||
@ -85,33 +82,17 @@ class SwitchAccountController(args: Bundle? = null) :
|
|||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
private val onSwitchItemClickListener = FlexibleAdapter.OnItemClickListener { _, position ->
|
private val onSwitchItemClickListener = FlexibleAdapter.OnItemClickListener { _, position ->
|
||||||
if (userItems.size > position) {
|
if (userItems.size > position) {
|
||||||
val userEntity = (userItems[position] as AdvancedUserItem).entity
|
val user = (userItems[position] as AdvancedUserItem).user
|
||||||
userUtils.createOrUpdateUser(
|
|
||||||
null,
|
|
||||||
null, null, null,
|
|
||||||
null, java.lang.Boolean.TRUE, null, userEntity.id, null, null, null
|
|
||||||
)
|
|
||||||
.subscribe(object : Observer<UserEntity> {
|
|
||||||
override fun onSubscribe(d: Disposable) {
|
|
||||||
// unused atm
|
|
||||||
}
|
|
||||||
override fun onNext(userEntity: UserEntity) {
|
|
||||||
cookieManager.cookieStore.removeAll()
|
|
||||||
userUtils.disableAllUsersWithoutId(userEntity.id)
|
|
||||||
if (activity != null) {
|
|
||||||
activity!!.runOnUiThread { router.popCurrentController() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onError(e: Throwable) {
|
if (userManager.setUserAsActive(user).blockingGet()) {
|
||||||
// unused atm
|
cookieManager.cookieStore.removeAll()
|
||||||
}
|
if (activity != null) {
|
||||||
override fun onComplete() {
|
activity!!.runOnUiThread { router.popCurrentController() }
|
||||||
// unused atm
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@ -143,23 +124,21 @@ class SwitchAccountController(args: Bundle? = null) :
|
|||||||
|
|
||||||
if (adapter == null) {
|
if (adapter == null) {
|
||||||
adapter = FlexibleAdapter(userItems, activity, false)
|
adapter = FlexibleAdapter(userItems, activity, false)
|
||||||
var userEntity: UserEntity?
|
|
||||||
var participant: Participant
|
var participant: Participant
|
||||||
|
|
||||||
if (!isAccountImport) {
|
if (!isAccountImport) {
|
||||||
for (userEntityObject in userUtils.users) {
|
for (user in userManager.users.blockingGet()) {
|
||||||
userEntity = userEntityObject as UserEntity?
|
if (!user.current) {
|
||||||
if (!userEntity!!.current) {
|
val userId: String? = if (user.userId != null) {
|
||||||
var userId: String?
|
user.userId
|
||||||
userId = if (userEntity.userId != null) {
|
|
||||||
userEntity.userId
|
|
||||||
} else {
|
} else {
|
||||||
userEntity.username
|
user.username
|
||||||
}
|
}
|
||||||
participant = Participant()
|
participant = Participant()
|
||||||
participant.actorType = Participant.ActorType.USERS
|
participant.actorType = Participant.ActorType.USERS
|
||||||
participant.actorId = userId
|
participant.actorId = userId
|
||||||
participant.displayName = userEntity.displayName
|
participant.displayName = user.displayName
|
||||||
userItems.add(AdvancedUserItem(participant, userEntity, null))
|
userItems.add(AdvancedUserItem(participant, user, null))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
adapter!!.addListener(onSwitchItemClickListener)
|
adapter!!.addListener(onSwitchItemClickListener)
|
||||||
@ -167,16 +146,17 @@ class SwitchAccountController(args: Bundle? = null) :
|
|||||||
} else {
|
} else {
|
||||||
var account: Account
|
var account: Account
|
||||||
var importAccount: ImportAccount
|
var importAccount: ImportAccount
|
||||||
for (accountObject in findAccounts(userUtils.users as List<UserEntity>)) {
|
var user: User
|
||||||
|
for (accountObject in findAccountsForUsers(userManager.users.blockingGet())) {
|
||||||
account = accountObject
|
account = accountObject
|
||||||
importAccount = getInformationFromAccount(account)
|
importAccount = getInformationFromAccount(account)
|
||||||
participant = Participant()
|
participant = Participant()
|
||||||
participant.actorType = Participant.ActorType.USERS
|
participant.actorType = Participant.ActorType.USERS
|
||||||
participant.actorId = importAccount.getUsername()
|
participant.actorId = importAccount.getUsername()
|
||||||
participant.displayName = importAccount.getUsername()
|
participant.displayName = importAccount.getUsername()
|
||||||
userEntity = UserEntity()
|
user = User()
|
||||||
userEntity.baseUrl = importAccount.getBaseUrl()
|
user.baseUrl = importAccount.getBaseUrl()
|
||||||
userItems.add(AdvancedUserItem(participant, userEntity, account))
|
userItems.add(AdvancedUserItem(participant, user, account))
|
||||||
}
|
}
|
||||||
adapter!!.addListener(onImportItemClickListener)
|
adapter!!.addListener(onImportItemClickListener)
|
||||||
adapter!!.updateDataSet(userItems, false)
|
adapter!!.updateDataSet(userItems, false)
|
||||||
|
@ -44,17 +44,16 @@ import com.nextcloud.talk.activities.MainActivity;
|
|||||||
import com.nextcloud.talk.adapters.items.AdvancedUserItem;
|
import com.nextcloud.talk.adapters.items.AdvancedUserItem;
|
||||||
import com.nextcloud.talk.api.NcApi;
|
import com.nextcloud.talk.api.NcApi;
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
|
import com.nextcloud.talk.data.user.model.User;
|
||||||
import com.nextcloud.talk.databinding.DialogChooseAccountBinding;
|
import com.nextcloud.talk.databinding.DialogChooseAccountBinding;
|
||||||
import com.nextcloud.talk.models.database.CapabilitiesUtil;
|
|
||||||
import com.nextcloud.talk.models.database.User;
|
|
||||||
import com.nextcloud.talk.models.database.UserEntity;
|
|
||||||
import com.nextcloud.talk.models.json.participants.Participant;
|
import com.nextcloud.talk.models.json.participants.Participant;
|
||||||
import com.nextcloud.talk.models.json.status.Status;
|
import com.nextcloud.talk.models.json.status.Status;
|
||||||
import com.nextcloud.talk.models.json.status.StatusOverall;
|
import com.nextcloud.talk.models.json.status.StatusOverall;
|
||||||
import com.nextcloud.talk.ui.StatusDrawable;
|
import com.nextcloud.talk.ui.StatusDrawable;
|
||||||
|
import com.nextcloud.talk.users.UserManager;
|
||||||
import com.nextcloud.talk.utils.ApiUtils;
|
import com.nextcloud.talk.utils.ApiUtils;
|
||||||
import com.nextcloud.talk.utils.DisplayUtils;
|
import com.nextcloud.talk.utils.DisplayUtils;
|
||||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
import com.nextcloud.talk.utils.database.user.CapabilitiesUtilNew;
|
||||||
|
|
||||||
import java.net.CookieManager;
|
import java.net.CookieManager;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -80,7 +79,7 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
private static final float STATUS_SIZE_IN_DP = 9f;
|
private static final float STATUS_SIZE_IN_DP = 9f;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UserUtils userUtils;
|
UserManager userManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
CookieManager cookieManager;
|
CookieManager cookieManager;
|
||||||
@ -115,7 +114,7 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
binding.currentAccount.userIcon.setTag("");
|
binding.currentAccount.userIcon.setTag("");
|
||||||
|
|
||||||
// Defining user texts, accounts, etc.
|
// Defining user texts, accounts, etc.
|
||||||
User user = userUtils.getCurrentUser();
|
User user = userManager.getCurrentUser().blockingGet();
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
binding.currentAccount.userName.setText(user.getDisplayName());
|
binding.currentAccount.userName.setText(user.getDisplayName());
|
||||||
binding.currentAccount.ticker.setVisibility(View.GONE);
|
binding.currentAccount.ticker.setVisibility(View.GONE);
|
||||||
@ -171,11 +170,11 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
if (adapter == null) {
|
if (adapter == null) {
|
||||||
adapter = new FlexibleAdapter<>(userItems, getActivity(), false);
|
adapter = new FlexibleAdapter<>(userItems, getActivity(), false);
|
||||||
|
|
||||||
UserEntity userEntity;
|
User userEntity;
|
||||||
Participant participant;
|
Participant participant;
|
||||||
|
|
||||||
for (Object userEntityObject : userUtils.getUsers()) {
|
for (Object userItem : userManager.getUsers().blockingGet()) {
|
||||||
userEntity = (UserEntity) userEntityObject;
|
userEntity = (User) userItem;
|
||||||
if (!userEntity.getCurrent()) {
|
if (!userEntity.getCurrent()) {
|
||||||
String userId;
|
String userId;
|
||||||
if (userEntity.getUserId() != null) {
|
if (userEntity.getUserId() != null) {
|
||||||
@ -202,7 +201,7 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
private void loadCurrentStatus(User user) {
|
private void loadCurrentStatus(User user) {
|
||||||
String credentials = ApiUtils.getCredentials(user.getUsername(), user.getToken());
|
String credentials = ApiUtils.getCredentials(user.getUsername(), user.getToken());
|
||||||
|
|
||||||
if (CapabilitiesUtil.isUserStatusAvailable(userUtils.getCurrentUser())) {
|
if (CapabilitiesUtilNew.isUserStatusAvailable(userManager.getCurrentUser().blockingGet())) {
|
||||||
binding.statusView.setVisibility(View.VISIBLE);
|
binding.statusView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
ncApi.status(credentials, ApiUtils.getUrlForStatus(user.getBaseUrl())).
|
ncApi.status(credentials, ApiUtils.getUrlForStatus(user.getBaseUrl())).
|
||||||
@ -276,45 +275,16 @@ public class ChooseAccountDialogFragment extends DialogFragment {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onItemClick(View view, int position) {
|
public boolean onItemClick(View view, int position) {
|
||||||
if (userItems.size() > position) {
|
if (userItems.size() > position) {
|
||||||
UserEntity userEntity = (userItems.get(position)).getEntity();
|
User user = (userItems.get(position)).getUser();
|
||||||
userUtils.createOrUpdateUser(null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
Boolean.TRUE,
|
|
||||||
null,
|
|
||||||
userEntity.getId(),
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
null)
|
|
||||||
.subscribe(new Observer<UserEntity>() {
|
|
||||||
@Override
|
|
||||||
public void onSubscribe(@NonNull Disposable d) {
|
|
||||||
// unused atm
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (userManager.setUserAsActive(user).blockingGet()) {
|
||||||
public void onNext(@NonNull UserEntity userEntity) {
|
cookieManager.getCookieStore().removeAll();
|
||||||
cookieManager.getCookieStore().removeAll();
|
if (getActivity() != null) {
|
||||||
userUtils.disableAllUsersWithoutId(userEntity.getId());
|
getActivity().runOnUiThread(
|
||||||
if (getActivity() != null) {
|
() -> ((MainActivity) getActivity()).resetConversationsList());
|
||||||
getActivity().runOnUiThread(
|
}
|
||||||
() -> ((MainActivity) getActivity()).resetConversationsList());
|
dismiss();
|
||||||
}
|
}
|
||||||
dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(@NonNull Throwable e) {
|
|
||||||
Log.w(TAG, "Error updating user", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onComplete() {
|
|
||||||
// unused atm
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -45,8 +45,8 @@ import com.nextcloud.talk.adapters.PredefinedStatusClickListener
|
|||||||
import com.nextcloud.talk.adapters.PredefinedStatusListAdapter
|
import com.nextcloud.talk.adapters.PredefinedStatusListAdapter
|
||||||
import com.nextcloud.talk.api.NcApi
|
import com.nextcloud.talk.api.NcApi
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.databinding.DialogSetStatusBinding
|
import com.nextcloud.talk.databinding.DialogSetStatusBinding
|
||||||
import com.nextcloud.talk.models.database.User
|
|
||||||
import com.nextcloud.talk.models.json.generic.GenericOverall
|
import com.nextcloud.talk.models.json.generic.GenericOverall
|
||||||
import com.nextcloud.talk.models.json.status.ClearAt
|
import com.nextcloud.talk.models.json.status.ClearAt
|
||||||
import com.nextcloud.talk.models.json.status.Status
|
import com.nextcloud.talk.models.json.status.Status
|
||||||
|
@ -123,6 +123,19 @@ class UserManager internal constructor(private val userRepository: UsersReposito
|
|||||||
}.toSingle()
|
}.toSingle()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updateOrCreateUser(user: User): Single<Int> {
|
||||||
|
return Single.fromCallable {
|
||||||
|
when (user.id) {
|
||||||
|
null -> userRepository.insertUser(user).toInt()
|
||||||
|
else -> userRepository.updateUser(user)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setUserAsActive(user: User): Single<Boolean> {
|
||||||
|
return userRepository.setUserAsActiveWithId(user.id!!)
|
||||||
|
}
|
||||||
|
|
||||||
@Deprecated("Only available for migration, use updateExternalSignalingServer or create new methods")
|
@Deprecated("Only available for migration, use updateExternalSignalingServer or create new methods")
|
||||||
fun createOrUpdateUser(
|
fun createOrUpdateUser(
|
||||||
username: String?,
|
username: String?,
|
||||||
|
@ -30,9 +30,9 @@ import android.content.pm.PackageManager
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.models.ImportAccount
|
import com.nextcloud.talk.models.ImportAccount
|
||||||
import com.nextcloud.talk.models.database.UserEntity
|
import com.nextcloud.talk.models.database.UserEntity
|
||||||
import java.util.ArrayList
|
|
||||||
import java.util.Arrays
|
import java.util.Arrays
|
||||||
|
|
||||||
object AccountUtils {
|
object AccountUtils {
|
||||||
@ -40,42 +40,23 @@ object AccountUtils {
|
|||||||
private const val TAG = "AccountUtils"
|
private const val TAG = "AccountUtils"
|
||||||
private const val MIN_SUPPORTED_FILES_APP_VERSION = 30060151
|
private const val MIN_SUPPORTED_FILES_APP_VERSION = 30060151
|
||||||
|
|
||||||
|
@Deprecated("Migrate to findAccountsForUsers")
|
||||||
fun findAccounts(userEntitiesList: List<UserEntity>): List<Account> {
|
fun findAccounts(userEntitiesList: List<UserEntity>): List<Account> {
|
||||||
|
return findAccountsForUsers(LegacyUserEntityMapper.toModel(userEntitiesList))
|
||||||
|
}
|
||||||
|
|
||||||
|
fun findAccountsForUsers(users: List<User>): List<Account> {
|
||||||
val context = NextcloudTalkApplication.sharedApplication!!.applicationContext
|
val context = NextcloudTalkApplication.sharedApplication!!.applicationContext
|
||||||
val accMgr = AccountManager.get(context)
|
val accMgr = AccountManager.get(context)
|
||||||
val accounts = accMgr.getAccountsByType(context.getString(R.string.nc_import_account_type))
|
val accounts = accMgr.getAccountsByType(context.getString(R.string.nc_import_account_type))
|
||||||
|
|
||||||
val accountsAvailable = ArrayList<Account>()
|
val accountsAvailable = ArrayList<Account>()
|
||||||
var importAccount: ImportAccount
|
|
||||||
var internalUserEntity: UserEntity
|
|
||||||
var accountFound: Boolean
|
var accountFound: Boolean
|
||||||
for (account in accounts) {
|
for (account in accounts) {
|
||||||
accountFound = false
|
accountFound = false
|
||||||
|
|
||||||
for (i in userEntitiesList.indices) {
|
for (user in users) {
|
||||||
internalUserEntity = userEntitiesList[i]
|
if (matchAccounts(getInformationFromAccount(account), user)) {
|
||||||
importAccount = getInformationFromAccount(account)
|
|
||||||
if (importAccount.token != null) {
|
|
||||||
if (UriUtils.hasHttpProtocollPrefixed(importAccount.baseUrl)) {
|
|
||||||
if (
|
|
||||||
internalUserEntity.username == importAccount.username &&
|
|
||||||
internalUserEntity.baseUrl == importAccount.baseUrl
|
|
||||||
) {
|
|
||||||
accountFound = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (internalUserEntity.username == importAccount.username &&
|
|
||||||
(
|
|
||||||
internalUserEntity.baseUrl == "http://" + importAccount.baseUrl ||
|
|
||||||
internalUserEntity.baseUrl == "https://" + importAccount.baseUrl
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
accountFound = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
accountFound = true
|
accountFound = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -89,6 +70,33 @@ object AccountUtils {
|
|||||||
return accountsAvailable
|
return accountsAvailable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun matchAccounts(importAccount: ImportAccount, user: User): Boolean {
|
||||||
|
var accountFound = false
|
||||||
|
if (importAccount.token != null) {
|
||||||
|
if (UriUtils.hasHttpProtocollPrefixed(importAccount.baseUrl)) {
|
||||||
|
if (
|
||||||
|
user.username == importAccount.username &&
|
||||||
|
user.baseUrl == importAccount.baseUrl
|
||||||
|
) {
|
||||||
|
accountFound = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (user.username == importAccount.username &&
|
||||||
|
(
|
||||||
|
user.baseUrl == "http://" + importAccount.baseUrl ||
|
||||||
|
user.baseUrl == "https://" + importAccount.baseUrl
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
accountFound = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
accountFound = true
|
||||||
|
}
|
||||||
|
|
||||||
|
return accountFound
|
||||||
|
}
|
||||||
|
|
||||||
fun getAppNameBasedOnPackage(packageName: String): String {
|
fun getAppNameBasedOnPackage(packageName: String): String {
|
||||||
val context = NextcloudTalkApplication.sharedApplication!!.applicationContext
|
val context = NextcloudTalkApplication.sharedApplication!!.applicationContext
|
||||||
val packageManager = context.packageManager
|
val packageManager = context.packageManager
|
||||||
|
@ -1 +1 @@
|
|||||||
151
|
149
|
Loading…
Reference in New Issue
Block a user