Exemple #1
0
        public Task SetAsync(Guid?installationId)
        {
            lock (mutex) {
                Task saveTask;

                if (installationId == null)
                {
                    saveTask = storageController
                               .LoadAsync()
                               .OnSuccess(storage => storage.Result.RemoveAsync(InstallationIdKey))
                               .Unwrap();
                }
                else
                {
                    saveTask = storageController
                               .LoadAsync()
                               .OnSuccess(storage => storage.Result.AddAsync(InstallationIdKey, installationId.ToString()))
                               .Unwrap();
                }
                this.installationId = installationId;
                return(saveTask);
            }
        }
        public Task SetAsync(ParseUser 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(ParseClient.DateFormatStrings.First());
                        }
                        if (user.UpdatedAt != null)
                        {
                            data["updatedAt"] = user.UpdatedAt.Value.ToString(ParseClient.DateFormatStrings.First());
                        }

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

                    return saveTask;
                }).Unwrap();
            }, cancellationToken));
        }
Exemple #3
0
        public Task SetAsync(ParseInstallation installation, CancellationToken cancellationToken)
        {
            return(taskQueue.Enqueue(toAwait =>
            {
                return toAwait.ContinueWith(_ =>
                {
                    Task saveTask = storageController.LoadAsync().OnSuccess(storage =>
                    {
                        if (installation == null)
                        {
                            return storage.Result.RemoveAsync(ParseInstallationKey);
                        }
                        else
                        {
                            var data = installationCoder.Encode(installation);
                            return storage.Result.AddAsync(ParseInstallationKey, JsonProcessor.Encode(data));
                        }
                    }).Unwrap();

                    CurrentInstallation = installation;
                    return saveTask;
                }).Unwrap();
            }, cancellationToken));
        }