コード例 #1
0
        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);
            });
        }