Exemple #1
0
        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(t => {
                    object temp;
                    AVClient.ApplicationSettings.TryGetValue("CurrentUser", out temp);
                    var userDataString = temp as string;
                    AVUser user = null;
                    if (userDataString != null)
                    {
                        var userData = Json.Parse(userDataString) as IDictionary <string, object>;
                        user = AVObject.CreateWithoutData <AVUser>(null);
                        user.HandleFetchResult(AVObjectCoder.Instance.Decode(userData, AVDecoder.Instance));
                    }

                    CurrentUser = user;
                    return user;
                });
            }, cancellationToken));
        }