public void Remove(TLStickerSet set)
        {
            if (set == null)
            {
                return;
            }
            var inputSet = new TLInputStickerSetId {
                Id = set.Id, AccessHash = set.AccessHash
            };

            IsWorking = true;
            MTProtoService.UninstallStickerSetAsync(inputSet,
                                                    result => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Items.Remove(set);
                var emojiControl = EmojiControl.GetInstance();
                emojiControl.RemoveStickerSet(inputSet);
            }),
                                                    error => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Execute.ShowDebugMessage("messages.uninstallStickerSet error " + error);
            }));
        }
Beispiel #2
0
        public void Remove(TLStickerSet set)
        {
            if (set == null)
            {
                return;
            }
            var inputSet = new TLInputStickerSetId {
                Id = set.Id, AccessHash = set.AccessHash
            };

            IsWorking = true;
            MTProtoService.UninstallStickerSetAsync(inputSet,
                                                    result => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Items.Remove(set);

                var shellViewModel = IoC.Get <ShellViewModel>();
                shellViewModel.RemoveStickerSet(set, inputSet);

                MTProtoService.SetMessageOnTime(2.0, AppResources.StickersRemoved);
            }),
                                                    error => Execute.BeginOnUIThread(() =>
            {
                IsWorking = false;
                Execute.ShowDebugMessage("messages.uninstallStickerSet error " + error);
            }));
        }
Beispiel #3
0
        public void Archive(TLStickerSet set)
        {
            var set32 = set as TLStickerSet32;

            if (set32 == null)
            {
                return;
            }

            var inputStickerSet = new TLInputStickerSetId {
                Id = set32.Id, AccessHash = set32.AccessHash
            };

            IsWorking = true;
            MTProtoService.InstallStickerSetAsync(inputStickerSet, TLBool.True,
                                                  result => BeginOnUIThread(() =>
            {
                IsWorking      = false;
                set32.Archived = true;
                Items.Remove(set32);

                var allStickers43 = StateService.GetAllStickers() as TLAllStickers43;
                TLMessagesStickerSet messagesSet = null;
                if (allStickers43 != null)
                {
                    messagesSet = TLUtils.RemoveStickerSet(allStickers43, set32);
                    StateService.SaveAllStickersAsync(allStickers43);
                }

                if (messagesSet != null)
                {
                    var archivedStickers = StateService.GetArchivedStickers();
                    if (archivedStickers != null)
                    {
                        TLUtils.AddStickerSetCovered(archivedStickers, messagesSet, archivedStickers.SetsCovered, new TLStickerSetCovered {
                            Cover = messagesSet.Documents.FirstOrDefault() ?? new TLDocumentEmpty {
                                Id = new TLLong(0)
                            }, StickerSet = messagesSet.Set
                        });
                        archivedStickers.Count.Value = archivedStickers.Sets.Count;

                        UpdateArchivedSetsString(archivedStickers.Count.Value);

                        StateService.SaveArchivedStickersAsync(archivedStickers);
                    }
                }

                //EventAggregator.Publish(new UpdateStickerSetsEventArgs(allStickers43));
            }),
                                                  error => BeginOnUIThread(() =>
            {
                IsWorking = false;
                Execute.ShowDebugMessage("messages.installStickerSet error " + error);
            }));
        }
Beispiel #4
0
        public void AddRemoveStickerSet(TLStickerSet32 set)
        {
            if (set == null)
            {
                return;
            }

            var messagesStickerSet = _messagesStickerSets.FirstOrDefault(x => x.Set.Id.Value == set.Id.Value);

            if (messagesStickerSet == null)
            {
                return;
            }

            var stickerSetExists = set.Installed && !set.Archived;
            var inputStickerSet  = new TLInputStickerSetId {
                Id = set.Id, AccessHash = set.AccessHash
            };

            if (!stickerSetExists)
            {
                MTProtoService.InstallStickerSetAsync(inputStickerSet, TLBool.False,
                                                      result => Execute.BeginOnUIThread(() =>
                {
                    Items.Remove(set);

                    var archivedStickers = StateService.GetArchivedStickers();

                    var resultArchive = result as TLStickerSetInstallResultArchive;
                    if (resultArchive != null)
                    {
                        Execute.BeginOnUIThread(() => TelegramViewBase.ShowArchivedStickersMessageBox(resultArchive));

                        var allStickers = StateService.GetAllStickers() as TLAllStickers43;
                        if (allStickers != null)
                        {
                            for (var i = 0; i < resultArchive.Sets.Count; i++)
                            {
                                TLUtils.RemoveStickerSet(allStickers, resultArchive.Sets[i]);
                            }

                            StateService.SaveAllStickersAsync(allStickers);
                        }

                        if (archivedStickers != null)
                        {
                            for (var i = resultArchive.MessagesStickerSets.Count - 1; i >= 0; i--)
                            {
                                TLUtils.AddStickerSetCovered(archivedStickers, resultArchive.MessagesStickerSets[i], archivedStickers.SetsCovered, resultArchive.SetsCovered[i]);

                                for (var j = 0; j < _messagesStickerSets.Count; j++)
                                {
                                    if (_messagesStickerSets[j].Set.Id.Value == resultArchive.MessagesStickerSets[i].Set.Id.Value)
                                    {
                                        _messagesStickerSets.RemoveAt(j);
                                        break;
                                    }
                                }

                                _messagesStickerSets.Insert(0, resultArchive.MessagesStickerSets[i]);
                            }
                        }
                    }

                    if (archivedStickers != null)
                    {
                        TLUtils.RemoveStickerSetCovered(archivedStickers, set, archivedStickers.SetsCovered);

                        StateService.SaveArchivedStickersAsync(archivedStickers);
                    }

                    if (resultArchive != null)
                    {
                        UpdateSets(archivedStickers);
                    }
                    else
                    {
                        set.Installed = true;
                        var set76     = set as TLStickerSet76;
                        if (set76 != null)
                        {
                            set76.InstalledDate = TLUtils.DateToUniversalTimeTLInt(MTProtoService.ClientTicksDelta, DateTime.Now);
                        }
                        set.NotifyOfPropertyChange(() => set.Installed);

                        set.Archived = false;
                        set.NotifyOfPropertyChange(() => set.Archived);
                    }

                    var shellViewModel = IoC.Get <ShellViewModel>();
                    shellViewModel.Handle(new TLUpdateNewStickerSet {
                        Stickerset = messagesStickerSet
                    });

                    MTProtoService.SetMessageOnTime(2.0, AppResources.NewStickersAdded);
                }),
                                                      error => Execute.BeginOnUIThread(() =>
                {
                    if (error.CodeEquals(ErrorCode.BAD_REQUEST))
                    {
                        if (error.TypeEquals(ErrorType.STICKERSET_INVALID))
                        {
                            MessageBox.Show(AppResources.StickersNotFound, AppResources.Error, MessageBoxButton.OK);
                        }
                        else
                        {
                            Execute.ShowDebugMessage("messages.installStickerSet error " + error);
                        }
                    }
                    else
                    {
                        Execute.ShowDebugMessage("messages.installStickerSet error " + error);
                    }
                }));
            }
            else
            {
                MTProtoService.UninstallStickerSetAsync(inputStickerSet,
                                                        result => Execute.BeginOnUIThread(() =>
                {
                    set.Installed = false;
                    var set76     = set as TLStickerSet76;
                    if (set76 != null)
                    {
                        set76.InstalledDate = null;
                    }
                    set.NotifyOfPropertyChange(() => set.Installed);

                    set.Archived = false;
                    set.NotifyOfPropertyChange(() => set.Archived);

                    var shellViewModel = IoC.Get <ShellViewModel>();
                    shellViewModel.RemoveStickerSet(set, inputStickerSet);

                    var eventAggregator = EventAggregator;
                    eventAggregator.Publish(new UpdateRemoveStickerSetEventArgs(set));

                    MTProtoService.SetMessageOnTime(2.0, AppResources.StickersRemoved);
                }),
                                                        error => Execute.BeginOnUIThread(() =>
                {
                    Execute.ShowDebugMessage("messages.uninstallStickerSet error " + error);
                }));
            }
        }
        public void AddRemoveStickerSet(TLStickerSet32 set)
        {
            if (set == null)
            {
                return;
            }

            //var featuredStickers = _stickers as TLFeaturedStickers;
            if (AttachedStickers == null)
            {
                return;
            }

            var messagesStickerSet = AttachedStickers.MessagesStickerSets.FirstOrDefault(x => x.Set.Id.Value == set.Id.Value);

            if (messagesStickerSet == null)
            {
                return;
            }

            var stickerSetExists = set.Installed;
            var inputStickerSet  = new TLInputStickerSetId {
                Id = set.Id, AccessHash = set.AccessHash
            };

            if (!stickerSetExists)
            {
                IoC.Get <IMTProtoService>().InstallStickerSetAsync(inputStickerSet, TLBool.False,
                                                                   result => Execute.BeginOnUIThread(() =>
                {
                    var resultArchive = result as TLStickerSetInstallResultArchive;
                    if (resultArchive != null)
                    {
                        TelegramViewBase.ShowArchivedStickersMessageBox(resultArchive);
                    }

                    set.Installed = true;
                    var set76     = set as TLStickerSet76;
                    if (set76 != null)
                    {
                        set76.InstalledDate = TLUtils.DateToUniversalTimeTLInt(IoC.Get <IMTProtoService>().ClientTicksDelta, DateTime.Now);
                    }
                    set.NotifyOfPropertyChange(() => set.Installed);

                    var shellViewModel = IoC.Get <ShellViewModel>();
                    shellViewModel.Handle(new TLUpdateNewStickerSet {
                        Stickerset = messagesStickerSet
                    });

                    IoC.Get <IMTProtoService>().SetMessageOnTime(2.0, AppResources.NewStickersAdded);
                }),
                                                                   error => Execute.BeginOnUIThread(() =>
                {
                    if (error.CodeEquals(ErrorCode.BAD_REQUEST))
                    {
                        if (error.TypeEquals(ErrorType.STICKERSET_INVALID))
                        {
                            MessageBox.Show(AppResources.StickersNotFound, AppResources.Error, MessageBoxButton.OK);
                        }
                        else
                        {
                            Execute.ShowDebugMessage("messages.importChatInvite error " + error);
                        }
                    }
                    else
                    {
                        Execute.ShowDebugMessage("messages.importChatInvite error " + error);
                    }
                }));
            }
            else
            {
                IoC.Get <IMTProtoService>().UninstallStickerSetAsync(inputStickerSet,
                                                                     result => Execute.BeginOnUIThread(() =>
                {
                    set.Installed = false;
                    var set76     = set as TLStickerSet76;
                    if (set76 != null)
                    {
                        set76.InstalledDate = null;
                    }
                    set.NotifyOfPropertyChange(() => set.Installed);

                    var shellViewModel = IoC.Get <ShellViewModel>();
                    if (!set.Masks)
                    {
                        shellViewModel.RemoveStickerSet(set, inputStickerSet);
                    }
                    else
                    {
                        shellViewModel.RemoveMaskSet(set, inputStickerSet);
                    }

                    var eventAggregator = IoC.Get <ITelegramEventAggregator>();
                    eventAggregator.Publish(new UpdateRemoveStickerSetEventArgs(set));

                    IoC.Get <IMTProtoService>().SetMessageOnTime(2.0, AppResources.StickersRemoved);
                }),
                                                                     error =>
                                                                     Execute.BeginOnUIThread(
                                                                         () => { Execute.ShowDebugMessage("messages.uninstallStickerSet error " + error); }));
            }
        }