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; }
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; }
public static Task LinkWithAsync(this AVUser user, string authType, IDictionary <string, object> data, CancellationToken cancellationToken) { return(user.LinkWithAsync(authType, data, cancellationToken)); }
public static Task UpgradeToRevocableSessionAsync(this AVUser user, CancellationToken cancellationToken) { return(user.UpgradeToRevocableSessionAsync(cancellationToken)); }
public static Task LinkWithAsync(this AVUser user, string authType, CancellationToken cancellationToken) { return(user.LinkWithAsync(authType, cancellationToken)); }
public static Task <AVUser> LogInWithAsync(string authType, IDictionary <string, object> data, CancellationToken cancellationToken) { return(AVUser.LogInWithAsync(authType, data, cancellationToken)); }
public static Task <AVUser> LogInWithAsync(string authType, CancellationToken cancellationToken) { return(AVUser.LogInWithAsync(authType, cancellationToken)); }
public static Task UnlinkFromAsync(this AVUser user, string authType, CancellationToken cancellationToken) { return(user.UnlinkFromAsync(authType, cancellationToken)); }
public static IDictionary <string, IDictionary <string, object> > GetAuthData(this AVUser user) { return(user.AuthData); }