Uploaded image for project: 'Realm Java SDK'
  1. Realm Java SDK
  2. RJAVA-309

Apply Permissions issue - no callback called

      I am trying to add a member with permissions to a shared realm between users. Currently I have an adminUser [SyncUser] object from which I am accessing permissionManager. When I try to set the permissions on the newly created user in Realm, I am not getting any response back in the call back.

      Language : Kotlin

      realm {
      syncEnabled = true
      }

      classpath "io.realm:realm-gradle-plugin:4.3.1"

      fun saveToUserAccount(strEmail: String, password: String) {
             userName = strEmail
             memberView.showProgress(R.string.loading)
             encryptedPasswordByteArray = (encryptKey(password, strEmail))
             encryptedPassword = Arrays.toString(convertToUInt8IntArray(encryptedPasswordByteArray))
             val credentials = SyncCredentials.usernamePassword(strEmail, encryptedPassword, true)
             SyncUser.loginAsync(credentials, Constants.SERVER_IP, this)
         }
      
         override fun onSuccess(result: SyncUser?) {
      
             mCurrentUser = result
             //Save user data to realm
             val userMap = HashMap<String, Any>()
      
             //let myDict:NSDictionary = ["user_id": userKey, "admin_id": userKey, "email": hashUserName, "hash": finalHashKey, "is_admin": true, "secure_key":secureKey]
             userMap.put("user_id", result!!.identity)
             userMap.put("admin_id", adminId)
             userMap.put("email", userName)
             userMap.put("hash", encryptedPassword)
             userMap.put("is_admin", false)
      
             val encryptedPrivateKey = encryptAESKeyPassword(NineBxApplication.getPreferences().privateKey!!, encryptedPasswordByteArray)
      
             //AppLogger.d(TAG, "Encrypted Key : " + encryptedPrivateKey)
      
             userMap.put("secure_key", encryptedPrivateKey)
             //AppLogger.d(TAG, "UserMap : " + userMap)
      
             NineBxApplication.getUserAPI()!!.postUserDetails(userMap)
                     .subscribeOn(Schedulers.io())
                     .observeOn(io.reactivex.android.schedulers.AndroidSchedulers.mainThread())
                     .subscribe(getSignupResponse())
      
         }
      
         private fun getSignupResponse(): Observer<ResponseBody> {
             return object : Observer<ResponseBody> {
             
                 override fun onNext(t: ResponseBody) {
                     //User details saved successfully - save user object to realm
                     AppLogger.d(TAG, "Successfully saved userMap : " + String(t.bytes()))
                     //memberView.onMemberSignup(mCurrentUser!!)
                     //setUserPermissions()
                 }
      
                 override fun onError(e: Throwable) {
                     memberView.hideProgress()
                 }
      
                 override fun onComplete() {
                     AppLogger.d(TAG, "GetUserAPI : onComplete")
                     //memberView.hideProgress()
                     setUserPermissions()
                 }
      
                 override fun onSubscribe(d: Disposable) {
                     mCompositeDisposable.add(d)
                 }
      
             }
         }
      
         private fun setUserPermissions() {
      
             AppLogger.d(TAG, "setUserPermissions : start")
             val permissionManager = adminUser.permissionManager
             // Create request
             val condition = UserCondition.userId(mCurrentUser!!.identity)
             val accessLevel = AccessLevel.WRITE
             val request = PermissionRequest(condition, "/~/users"  , accessLevel)
             AppLogger.d(TAG, "setUserPermissions : details : $condition : request : $request")
             permissionManager.applyPermissions(request, object : PermissionManager.ApplyPermissionsCallback {
                 override fun onSuccess() {
                     memberView.onMemberSignup(mCurrentUser!!)
                     memberView.hideProgress()
                 }
      
                 override fun onError(error: ObjectServerError) {
      
                     if( error.errorMessage != null )
                         AppLogger.d(TAG, "setUserPermissions : onError : " + error.errorMessage)
      
                     error.printStackTrace()
                 }
             })
      
      
         }
      

      Neither success nor error is called.

      Help required @cmelchior

            Assignee:
            Unassigned Unassigned
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: