Esempio n. 1
0
        private void ProcessStickers()
        {
            _stickers = true;
            var stickers = _stickersService.GetStickerSets(StickerType.Image);

            Execute.BeginOnUIThread(() =>
            {
                SavedStickers.ReplaceWith(stickers);

                if (_frequentlyUsed.Documents.Count > 0)
                {
                    SavedStickers.Insert(0, _frequentlyUsed);
                }
            });
        }
        public async void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            SavedStickers.Remove(_groupSet);

            var refresh = true;

            var appData = ApplicationData.Current.LocalSettings.CreateContainer("Channels", ApplicationDataCreateDisposition.Always);

            if (appData.Values.TryGetValue("Stickers" + group.Id, out object stickersObj))
            {
                var stickersId = (long)stickersObj;
                if (stickersId == fullInfo.StickerSetId)
                {
                    refresh = false;
                }
            }

            if (fullInfo.StickerSetId != 0 && refresh)
            {
                if (fullInfo.StickerSetId == _groupSet.Id && chat.Id == _groupSet.ChatId)
                {
                    SavedStickers.Add(_groupSet);
                    return;
                }

                var response = await ProtoService.SendAsync(new GetStickerSet(fullInfo.StickerSetId));

                if (response is StickerSet stickerSet)
                {
                    BeginOnUIThread(() =>
                    {
                        _groupSet.Update(chat.Id, stickerSet);

                        if (_groupSet.Stickers != null && _groupSet.Stickers.Count > 0)
                        {
                            SavedStickers.Add(_groupSet);
                        }
                        else
                        {
                            SavedStickers.Remove(_groupSet);
                        }
                    });
                }
            }
        }
        private void ProcessFavedStickers()
        {
            var items = _stickersService.GetRecentStickers(StickerType.Fave);

            Execute.BeginOnUIThread(() =>
            {
                _favedSet.Documents = new TLVector <TLDocumentBase>(items);
                CheckDocuments();

                if (_favedSet.Documents.Count > 0)
                {
                    SavedStickers.Add(_favedSet);
                }
                else
                {
                    SavedStickers.Remove(_favedSet);
                }
            });
        }
Esempio n. 4
0
        private void ProcessRecentStickers()
        {
            var recent = _stickersService.GetRecentStickers(StickerType.Image);

            Execute.BeginOnUIThread(() =>
            {
                _frequentlyUsed.Documents = new TLVector <TLDocumentBase>(recent);

                if (SavedStickers.Count > 0 && SavedStickers[0].Set.ShortName.Equals("tg/recentlyUsed"))
                {
                    SavedStickers.RemoveAt(0);
                }

                if (_frequentlyUsed.Documents.Count > 0)
                {
                    SavedStickers.Insert(0, _frequentlyUsed);
                }
            });
        }
        private void ProcessStickers()
        {
            _stickers = true;

            var stickers = _stickersService.GetStickerSets(StickerType.Image);

            Execute.BeginOnUIThread(() =>
            {
                SavedStickers.ReplaceWith(stickers);

                //if (_groupSet.Documents != null && _groupSet.Documents.Count > 0)
                //{
                //    SavedStickers.Add(_groupSet);
                //}
                //else
                //{
                //    SavedStickers.Remove(_groupSet);
                //}

                //if (_recentSet.Documents != null && _recentSet.Documents.Count > 0)
                //{
                //    SavedStickers.Add(_recentSet);
                //}
                //else
                //{
                //    SavedStickers.Remove(_recentSet);
                //}

                //if (_favedSet.Documents != null && _favedSet.Documents.Count > 0)
                //{
                //    SavedStickers.Add(_favedSet);
                //}
                //else
                //{
                //    SavedStickers.Remove(_favedSet);
                //}
            });
        }
Esempio n. 6
0
        //public void SyncGroup(TLChannelFull channelFull)
        //{
        //    SavedStickers.Remove(_groupSet);

        //    var update = true;

        //    var appData = ApplicationData.Current.LocalSettings.CreateContainer("Channels", ApplicationDataCreateDisposition.Always);
        //    if (appData.Values.TryGetValue("Stickers" + channelFull.Id, out object stickersObj))
        //    {
        //        var stickersId = (long)stickersObj;
        //        if (stickersId == channelFull.StickerSet?.Id)
        //        {
        //            update = false;
        //        }
        //    }

        //    if (channelFull.HasStickerSet && update)
        //    {
        //        _groupSet.With = CacheService.GetChat(channelFull.Id) as TLChannel;
        //        _groupSet.Full = channelFull;

        //        Execute.BeginOnThreadPool(() =>
        //        {
        //            var result = _stickersService.GetGroupStickerSetById(channelFull.StickerSet);
        //            if (result != null)
        //            {
        //                BeginOnUIThread(() =>
        //                {
        //                    _groupSet.Documents = new TLVector<TLDocumentBase>(result.Documents);

        //                    if (_groupSet.Documents != null && _groupSet.Documents.Count > 0)
        //                    {
        //                        SavedStickers.Add(_groupSet);
        //                    }
        //                    else
        //                    {
        //                        SavedStickers.Remove(_groupSet);
        //                    }
        //                });
        //            }
        //        });
        //    }
        //}

        //public void HideGroup(TLChannelFull channelFull)
        //{
        //    var appData = ApplicationData.Current.LocalSettings.CreateContainer("Channels", ApplicationDataCreateDisposition.Always);
        //    appData.Values["Stickers" + channelFull.Id] = channelFull.StickerSet?.Id ?? 0;

        //    SavedStickers.Remove(_groupSet);
        //}

        public void SyncStickers()
        {
            if (_stickers)
            {
                return;
            }

            _stickers = true;

            ProtoService.Send(new GetFavoriteStickers(), result1 =>
            {
                ProtoService.Send(new GetRecentStickers(), result2 =>
                {
                    ProtoService.Send(new GetInstalledStickerSets(false), result3 =>
                    {
                        if (result1 is Stickers favorite && result2 is Stickers recent && result3 is StickerSets sets)
                        {
                            _favoriteSet.Update(favorite);
                            _recentSet.Update(recent);

                            for (int i = 0; i < _favoriteSet.Stickers.Count; i++)
                            {
                                var favSticker = _favoriteSet.Stickers[i];
                                for (int j = 0; j < _recentSet.Stickers.Count; j++)
                                {
                                    var recSticker = _recentSet.Stickers[j];
                                    if (recSticker.StickerValue.Id == favSticker.StickerValue.Id)
                                    {
                                        _recentSet.Stickers.Remove(recSticker);
                                        break;
                                    }
                                }
                            }


                            var stickers = new List <StickerSetViewModel>();
                            if (favorite.StickersValue.Count > 0)
                            {
                                stickers.Add(_favoriteSet);
                            }
                            if (recent.StickersValue.Count > 0)
                            {
                                stickers.Add(_recentSet);
                            }

                            if (sets.Sets.Count > 0)
                            {
                                ProtoService.Send(new GetStickerSet(sets.Sets[0].Id), result4 =>
                                {
                                    if (result4 is StickerSet set)
                                    {
                                        stickers.Add(new StickerSetViewModel(sets.Sets[0], set));
                                        BeginOnUIThread(() => SavedStickers.ReplaceWith(stickers.Union(sets.Sets.Skip(1).Select(x => new StickerSetViewModel(x)))));
                                    }
                                    else
                                    {
                                        BeginOnUIThread(() => SavedStickers.ReplaceWith(stickers.Union(sets.Sets.Select(x => new StickerSetViewModel(x)))));
                                    }
                                });
                            }
                            else
                            {
                                BeginOnUIThread(() => SavedStickers.ReplaceWith(stickers.Union(sets.Sets.Select(x => new StickerSetViewModel(x)))));
                            }
                        }
                    });
                });
            });
        //public void HideGroup(TLChannelFull channelFull)
        //{
        //    var appData = ApplicationData.Current.LocalSettings.CreateContainer("Channels", ApplicationDataCreateDisposition.Always);
        //    appData.Values["Stickers" + channelFull.Id] = channelFull.StickerSet?.Id ?? 0;

        //    SavedStickers.Remove(_groupSet);
        //}

        public void SyncStickers(Chat chat)
        {
            if (_updated)
            {
                return;
            }

            _updated = true;

            ProtoService.Send(new GetFavoriteStickers(), result1 =>
            {
                ProtoService.Send(new GetRecentStickers(), result2 =>
                {
                    ProtoService.Send(new GetInstalledStickerSets(false), result3 =>
                    {
                        if (result1 is Stickers favorite && result2 is Stickers recent && result3 is StickerSets sets)
                        {
                            for (int i = 0; i < favorite.StickersValue.Count; i++)
                            {
                                var favSticker = favorite.StickersValue[i];
                                for (int j = 0; j < recent.StickersValue.Count; j++)
                                {
                                    var recSticker = recent.StickersValue[j];
                                    if (recSticker.StickerValue.Id == favSticker.StickerValue.Id)
                                    {
                                        recent.StickersValue.Remove(recSticker);
                                        break;
                                    }
                                }
                            }

                            for (int i = 20; i < recent.StickersValue.Count; i++)
                            {
                                recent.StickersValue.RemoveAt(20);
                                i--;
                            }

                            _favoriteSet.Update(favorite);
                            _recentSet.Update(recent);

                            var stickers = new List <StickerSetViewModel>();
                            if (_favoriteSet.Stickers.Count > 0)
                            {
                                stickers.Add(_favoriteSet);
                            }
                            if (_recentSet.Stickers.Count > 0)
                            {
                                stickers.Add(_recentSet);
                            }
                            if (_groupSet.Stickers.Count > 0 && _groupSet.ChatId == chat?.Id)
                            {
                                stickers.Add(_groupSet);
                            }

                            if (sets.Sets.Count > 0)
                            {
                                ProtoService.Send(new GetStickerSet(sets.Sets[0].Id), result4 =>
                                {
                                    if (result4 is StickerSet set)
                                    {
                                        stickers.Add(new StickerSetViewModel(ProtoService, Aggregator, sets.Sets[0], set));
                                        BeginOnUIThread(() => SavedStickers.ReplaceWith(stickers.Union(sets.Sets.Skip(1).Select(x => new StickerSetViewModel(ProtoService, Aggregator, x)))));
                                    }
                                    else
                                    {
                                        BeginOnUIThread(() => SavedStickers.ReplaceWith(stickers.Union(sets.Sets.Select(x => new StickerSetViewModel(ProtoService, Aggregator, x)))));
                                    }
                                });
                            }
                            else
                            {
                                BeginOnUIThread(() => SavedStickers.ReplaceWith(stickers.Union(sets.Sets.Select(x => new StickerSetViewModel(ProtoService, Aggregator, x)))));
                            }
                        }
                    });
                });
            });