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)); }
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)); }