public void Done() { if (SelectedMainRule == null) { return; } var rules = new TLVector <TLInputPrivacyRuleBase>(); if (_selectedDisallowUsers != null && _selectedDisallowUsers.Users != null && _selectedDisallowUsers.Users.Count > 0) { var inputDisallowUsers = (TLInputPrivacyValueDisallowUsers)_selectedDisallowUsers.ToInputRule(); foreach (var userId in _selectedDisallowUsers.Users) { var user = CacheService.GetUser(userId); if (user != null) { inputDisallowUsers.Users.Add(user.ToInputUser()); } } rules.Add(inputDisallowUsers); } if (_selectedAllowUsers != null && _selectedAllowUsers.Users != null && _selectedAllowUsers.Users.Count > 0) { var inputAllowUsers = (TLInputPrivacyValueAllowUsers)_selectedAllowUsers.ToInputRule(); foreach (var userId in _selectedAllowUsers.Users) { var user = CacheService.GetUser(userId); if (user != null) { inputAllowUsers.Users.Add(user.ToInputUser()); } } rules.Add(inputAllowUsers); } var inputMainRule = SelectedMainRule.ToInputRule(); rules.Add(inputMainRule); IsWorking = true; MTProtoService.SetPrivacyAsync(new TLInputPrivacyKeyStatusTimestamp(), rules, result => { IsWorking = false; //EventAggregator.Publish(new TLUpdatePrivacy{Key = new TLPrivacyKeyStatusTimestamp(), Rules = result.Rules}); BeginOnUIThread(() => NavigationService.GoBack()); }, error => { IsWorking = false; if (error.CodeEquals(ErrorCode.FLOOD)) { MessageBox.Show(AppResources.FloodWaitString + Environment.NewLine + "(" + error.Message + ")", AppResources.Error, MessageBoxButton.OK); } Execute.ShowDebugMessage("account.setPrivacy error " + error); }); }