public Task<AVUser> GetAsync(CancellationToken cancellationToken)
        {
            AVUser cachedCurrent;

              lock (mutex) {
            cachedCurrent = CurrentUser;
              }

              if (cachedCurrent != null) {
            return Task<AVUser>.FromResult(cachedCurrent);
              }

              return taskQueue.Enqueue(toAwait => {
            return toAwait.ContinueWith(_ => {
              return storageController.LoadAsync().OnSuccess(t => {
            object temp;
            t.Result.TryGetValue("CurrentUser", out temp);
            var userDataString = temp as string;
            AVUser user = null;
            if (userDataString != null) {
              var userData =  Json.Parse(userDataString) as IDictionary<string, object>;
              var state = AVObjectCoder.Instance.Decode(userData, AVDecoder.Instance);
              user = AVObject.FromState<AVUser>(state, "_User");
            }

            CurrentUser = user;
            return user;
              });
            }).Unwrap();
              }, cancellationToken);
        }
        public Task SetAsync(AVUser user, CancellationToken cancellationToken)
        {
            return taskQueue.Enqueue(toAwait => {
            return toAwait.ContinueWith(_ => {
              Task saveTask = null;
              if (user == null) {
            saveTask = storageController
              .LoadAsync()
              .OnSuccess(t => t.Result.RemoveAsync("CurrentUser"))
              .Unwrap();
              } else {
            // TODO (hallucinogen): we need to use ParseCurrentCoder instead of this janky encoding
            var data = user.ServerDataToJSONObjectForSerialization();
            data["objectId"] = user.ObjectId;
            if (user.CreatedAt != null) {
              data["createdAt"] = user.CreatedAt.Value.ToString(AVClient.DateFormatStrings.First(),
                CultureInfo.InvariantCulture);
            }
            if (user.UpdatedAt != null) {
              data["updatedAt"] = user.UpdatedAt.Value.ToString(AVClient.DateFormatStrings.First(),
                CultureInfo.InvariantCulture);
            }

            saveTask = storageController
              .LoadAsync()
              .OnSuccess(t => t.Result.AddAsync("CurrentUser", Json.Encode(data)))
              .Unwrap();
              }
              CurrentUser = user;

              return saveTask;
            }).Unwrap();
              }, cancellationToken);
        }
 public void ClearFromMemory()
 {
     CurrentUser = null;
 }
示例#4
0
 public bool IsCurrent(AVUser user)
 {
     lock (mutex) {
         return(CurrentUser == user);
     }
 }
 public bool IsCurrent(AVUser user)
 {
     lock (mutex) {
     return CurrentUser == user;
       }
 }
 public DemoContact(AVUser user)
 {
     this.BindingUser = user;
 }
示例#7
0
 public void ClearFromMemory()
 {
     CurrentUser = null;
 }
示例#8
0
 public static Task LinkWithAsync(this AVUser user, string authType, IDictionary <string, object> data, CancellationToken cancellationToken)
 {
     return(user.LinkWithAsync(authType, data, cancellationToken));
 }
示例#9
0
 public static Task UpgradeToRevocableSessionAsync(this AVUser user, CancellationToken cancellationToken)
 {
     return(user.UpgradeToRevocableSessionAsync(cancellationToken));
 }
示例#10
0
 public static Task LinkWithAsync(this AVUser user, string authType, CancellationToken cancellationToken)
 {
     return(user.LinkWithAsync(authType, cancellationToken));
 }
示例#11
0
 public static Task <AVUser> LogInWithAsync(string authType, IDictionary <string, object> data, CancellationToken cancellationToken)
 {
     return(AVUser.LogInWithAsync(authType, data, cancellationToken));
 }
示例#12
0
 public static Task <AVUser> LogInWithAsync(string authType, CancellationToken cancellationToken)
 {
     return(AVUser.LogInWithAsync(authType, cancellationToken));
 }
示例#13
0
 public static Task UnlinkFromAsync(this AVUser user, string authType, CancellationToken cancellationToken)
 {
     return(user.UnlinkFromAsync(authType, cancellationToken));
 }
示例#14
0
 public static IDictionary <string, IDictionary <string, object> > GetAuthData(this AVUser user)
 {
     return(user.AuthData);
 }