public void UpdateMember(Chat chat, Supergroup group, User user, ChatMember member)
        {
            if (member.Status is ChatMemberStatusCreator || member.Status is ChatMemberStatusAdministrator)
            {
                var canBeEdited = member.Status is ChatMemberStatusAdministrator administrator && administrator.CanBeEdited;

                Header.CommandVisibility   = canBeEdited ? Visibility.Visible : Visibility.Collapsed;
                DismissPanel.Visibility    = canBeEdited ? Visibility.Visible : Visibility.Collapsed;
                Footer.Visibility          = canBeEdited ? Visibility.Collapsed : Visibility.Visible;
                PermissionsPanel.IsEnabled = canBeEdited;
            }
            else
            {
                Header.CommandVisibility   = Visibility.Visible;
                DismissPanel.Visibility    = Visibility.Collapsed;
                Footer.Visibility          = Visibility.Collapsed;
                PermissionsPanel.IsEnabled = true;
            }

            PermissionsPanel.Visibility = Visibility.Visible;

            ChangeInfo.Header       = group.IsChannel ? Strings.Resources.EditAdminChangeChannelInfo : Strings.Resources.EditAdminChangeGroupInfo;
            PostMessages.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            EditMessages.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            DeleteMessages.Header   = group.IsChannel ? Strings.Resources.EditAdminDeleteMessages : Strings.Resources.EditAdminGroupDeleteMessages;
            BanUsers.Visibility     = group.IsChannel ? Visibility.Collapsed : Visibility.Visible;
            AddUsers.Header         = group.AnyoneCanInvite ? Strings.Resources.EditAdminAddUsersViaLink : Strings.Resources.EditAdminAddUsers;
        }
Esempio n. 2
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            UsernamePanel.Visibility = fullInfo.CanSetUsername ? Visibility.Visible : Visibility.Collapsed;

            //GroupStickers.Content = fullInfo.sticker
            GroupStickersPanel.Visibility = fullInfo.CanSetStickerSet ? Visibility.Visible : Visibility.Collapsed;


            ViewModel.About                 = fullInfo.Description;
            ViewModel.InviteLink            = fullInfo.InviteLink;
            ViewModel.IsAllHistoryAvailable = fullInfo.IsAllHistoryAvailable;


            if (fullInfo.StickerSetId == 0 || !fullInfo.CanSetStickerSet)
            {
                return;
            }

            ViewModel.ProtoService.Send(new GetStickerSet(fullInfo.StickerSetId), result =>
            {
                this.BeginOnUIThread(() =>
                {
                    if (result is StickerSet set && ViewModel.Chat?.Id == chat.Id)
                    {
                        GroupStickers.Badge = set.Title;
                    }
                });
            });
Esempio n. 3
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            Title.PlaceholderText = group.IsChannel ? Strings.Resources.EnterChannelName : Strings.Resources.GroupName;

            Public.Content  = group.IsChannel ? Strings.Resources.ChannelPublic : Strings.Resources.MegaPublic;
            PublicInfo.Text = group.IsChannel ? Strings.Resources.ChannelPublicInfo : Strings.Resources.MegaPublicInfo;

            Private.Content  = group.IsChannel ? Strings.Resources.ChannelPrivate : Strings.Resources.MegaPrivate;
            PrivateInfo.Text = group.IsChannel ? Strings.Resources.ChannelPrivateInfo : Strings.Resources.MegaPrivateInfo;

            UsernameHelp.Text    = group.IsChannel ? Strings.Resources.ChannelUsernameHelp : Strings.Resources.MegaUsernameHelp;
            PrivateLinkHelp.Text = group.IsChannel ? Strings.Resources.ChannelPrivateLinkHelp : Strings.Resources.MegaPrivateLinkHelp;

            Delete.Content  = group.IsChannel ? Strings.Resources.ChannelDelete : Strings.Resources.DeleteMega;
            DeleteInfo.Text = group.IsChannel ? Strings.Resources.ChannelDeleteInfo : Strings.Resources.MegaDeleteInfo;


            ViewModel.Title        = chat.Title;
            ViewModel.Username     = group.Username;
            ViewModel.IsPublic     = !string.IsNullOrEmpty(group.Username);
            ViewModel.IsDemocracy  = group.AnyoneCanInvite;
            ViewModel.IsSignatures = group.SignMessages;


            UsernamePanel.Visibility            = Visibility.Collapsed;
            ChannelSignMessagesPanel.Visibility = group.CanChangeInfo() && group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            GroupInvitesPanel.Visibility        = group.CanChangeInfo() && !group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            GroupHistoryPanel.Visibility        = group.CanChangeInfo() && string.IsNullOrEmpty(group.Username) && !group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            GroupStickersPanel.Visibility       = Visibility.Collapsed;
            DeletePanel.Visibility = group.Status is ChatMemberStatusCreator ? Visibility.Visible : Visibility.Collapsed;
        }
Esempio n. 4
0
        public void UpdateMember(Chat chat, Supergroup group, User user, ChatMember member)
        {
            if (member.Status is ChatMemberStatusCreator || member.Status is ChatMemberStatusAdministrator)
            {
                var canBeEdited = (member.Status is ChatMemberStatusCreator && member.UserId == ViewModel.CacheService.Options.MyId) || (member.Status is ChatMemberStatusAdministrator administrator && administrator.CanBeEdited);

                Header.CommandVisibility      = canBeEdited ? Visibility.Visible : Visibility.Collapsed;
                DismissPanel.Visibility       = canBeEdited ? Visibility.Visible : Visibility.Collapsed;
                PermissionsRoot.Footer        = canBeEdited ? null : Strings.Resources.EditAdminCantEdit;
                PermissionsPanel.IsEnabled    = canBeEdited;
                EditRankField.PlaceholderText = member.Status is ChatMemberStatusCreator ? Strings.Resources.ChannelCreator : Strings.Resources.ChannelAdmin;
                EditRankPanel.Footer          = string.Format(Strings.Resources.EditAdminRankInfo, member.Status is ChatMemberStatusCreator ? Strings.Resources.ChannelCreator : Strings.Resources.ChannelAdmin);
            }
            else
            {
                Header.CommandVisibility      = Visibility.Visible;
                DismissPanel.Visibility       = Visibility.Collapsed;
                PermissionsRoot.Footer        = null;
                PermissionsPanel.IsEnabled    = true;
                EditRankField.PlaceholderText = Strings.Resources.ChannelAdmin;
                EditRankPanel.Footer          = string.Format(Strings.Resources.EditAdminRankInfo, Strings.Resources.ChannelAdmin);
            }

            PermissionsPanel.Visibility = Visibility.Visible;

            ChangeInfo.Header       = group.IsChannel ? Strings.Resources.EditAdminChangeChannelInfo : Strings.Resources.EditAdminChangeGroupInfo;
            PostMessages.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            EditMessages.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            DeleteMessages.Header   = group.IsChannel ? Strings.Resources.EditAdminDeleteMessages : Strings.Resources.EditAdminGroupDeleteMessages;
            BanUsers.Visibility     = group.IsChannel ? Visibility.Collapsed : Visibility.Visible;
            PinMessages.Visibility  = group.IsChannel ? Visibility.Collapsed : Visibility.Visible;
            AddUsers.Header         = chat.Permissions.CanInviteUsers ? Strings.Resources.EditAdminAddUsersViaLink : Strings.Resources.EditAdminAddUsers;

            //TransferOwnership.Content = group.IsChannel ? Strings.Resources.EditAdminChannelTransfer : Strings.Resources.EditAdminGroupTransfer;
        }
Esempio n. 5
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            TextBlockHelper.SetMarkdown(Headline, string.Format(Strings.Resources.DiscussionChannelGroupSetHelp, chat.Title));

            Create.Visibility = group.HasLinkedChat ? Visibility.Collapsed : Visibility.Visible;
            Unlink.Visibility = group.HasLinkedChat ? Visibility.Visible : Visibility.Collapsed;
            Unlink.Content    = group.IsChannel ? Strings.Resources.DiscussionUnlinkGroup : Strings.Resources.DiscussionUnlinkChannel;
        }
Esempio n. 6
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            ProfileHeader?.UpdateSupergroupFullInfo(chat, group, fullInfo);

            if (MediaFrame.Content is ChatSharedMediaPageBase sharedMedia)
            {
                sharedMedia.Header.UpdateSupergroupFullInfo(chat, group, fullInfo);
            }
        }
Esempio n. 7
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            Title.Text = group.IsChannel ? Strings.Resources.ChannelSubscribers : Strings.Resources.ChannelMembers;

            AddNew.Content         = group.IsChannel ? Strings.Resources.AddSubscriber : Strings.Resources.AddMember;
            AddNewPanel.Visibility = group.CanInviteUsers() ? Visibility.Visible : Visibility.Collapsed;

            Footer.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
        }
Esempio n. 8
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            ViewModel.InviteLink = fullInfo.InviteLink;

            if (string.IsNullOrEmpty(fullInfo.InviteLink) && string.IsNullOrEmpty(group.Username))
            {
                ViewModel.ProtoService.Send(new GenerateChatInviteLink(chat.Id));
            }
        }
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            EventLog.Visibility = Visibility.Visible;
            AddNew.Visibility   = group.CanPromoteMembers() ? Visibility.Visible : Visibility.Collapsed;
            Footer.Visibility   = group.CanPromoteMembers() ? Visibility.Visible : Visibility.Collapsed;
            Footer.Text         = group.IsChannel ? Strings.Resources.ChannelAdminsInfo : Strings.Resources.MegaAdminsInfo;

            HeaderPanel.Visibility = Visibility.Visible;
        }
        public static bool CanPromoteMembers(this Supergroup supergroup)
        {
            if (supergroup.Status == null)
            {
                return(false);
            }

            return(supergroup.Status is ChatMemberStatusCreator || supergroup.Status is ChatMemberStatusAdministrator administrator && administrator.CanPromoteMembers);
        }
Esempio n. 11
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            Blacklist.Badge         = fullInfo.BannedCount;
            ViewModel.SlowModeDelay = fullInfo.SlowModeDelay;

            SlowmodePanel.Footer = fullInfo.SlowModeDelay > 0
                ? string.Format(Strings.Resources.SlowmodeInfoSelected, fullInfo.SlowModeDelay)
                : Strings.Resources.SlowmodeInfoOff;
        }
Esempio n. 12
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            ViewModel.InviteLink = fullInfo.InviteLink?.InviteLink;

            if (fullInfo.InviteLink == null && string.IsNullOrEmpty(group.Username))
            {
                ViewModel.ProtoService.Send(new CreateChatInviteLink(chat.Id, string.Empty, 0, 0, false));
            }
        }
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            TitleLabel.PlaceholderText = group.IsChannel ? Strings.Resources.EnterChannelName : Strings.Resources.GroupName;

            Delete.Content     = group.IsChannel ? Strings.Resources.ChannelDelete : Strings.Resources.DeleteMega;
            DeletePanel.Footer = group.IsChannel ? Strings.Resources.ChannelDeleteInfo : Strings.Resources.MegaDeleteInfo;

            Members.Content = group.IsChannel ? Strings.Resources.ChannelSubscribers : Strings.Resources.ChannelMembers;

            ViewModel.Title        = chat.Title;
            ViewModel.IsSignatures = group.SignMessages;


            Photo.IsEnabled       = group.CanChangeInfo();
            TitleLabel.IsReadOnly = !group.CanChangeInfo();
            About.IsReadOnly      = !group.CanChangeInfo();

            ChatType.Content    = group.IsChannel ? Strings.Resources.ChannelType : Strings.Resources.GroupType;
            ChatType.Glyph      = group.IsChannel ? Icons.Megaphone : Icons.People;
            ChatType.Visibility = Visibility.Collapsed;
            ChatType.Badge      = group.Username.Length > 0
                ? group.IsChannel
                    ? Strings.Resources.TypePublic
                    : Strings.Resources.TypePublicGroup
                : group.IsChannel
                    ? chat.HasProtectedContent
                        ? Strings.Resources.TypePrivateRestrictedForwards
                        : Strings.Resources.TypePrivate
                    : chat.HasProtectedContent
                        ? Strings.Resources.TypePrivateGroupRestrictedForwards
                        : Strings.Resources.TypePrivateGroup;

            ChatHistory.Badge      = null;
            ChatHistory.Visibility = group.CanChangeInfo() && string.IsNullOrEmpty(group.Username) && !group.IsChannel ? Visibility.Visible : Visibility.Collapsed;

            InviteLinkPanel.Visibility          = group.CanInviteUsers() ? Visibility.Visible : Visibility.Collapsed;
            ChannelSignMessagesPanel.Visibility = group.CanChangeInfo() && group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            GroupStickersPanel.Visibility       = Visibility.Collapsed;

            ChatLinked.Visibility = group.IsChannel ? Visibility.Visible : group.HasLinkedChat ? Visibility.Visible : Visibility.Collapsed;
            ChatLinked.Content    = group.IsChannel ? Strings.Resources.Discussion : Strings.Resources.LinkedChannel;
            ChatLinked.Glyph      = group.IsChannel ? Icons.Comment : Icons.Megaphone;
            ChatLinked.Badge      = group.HasLinkedChat ? string.Empty : Strings.Resources.DiscussionInfo;

            Permissions.Badge      = string.Format("{0}/{1}", chat.Permissions.Count(), chat.Permissions.Total());
            Permissions.Visibility = group.IsChannel || !group.CanRestrictMembers() ? Visibility.Collapsed : Visibility.Visible;
            Blacklist.Visibility   = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;

            DeletePanel.Visibility = group.Status is ChatMemberStatusCreator ? Visibility.Visible : Visibility.Collapsed;

            ChatBasicPanel.Visibility = ChatType.Visibility == Visibility.Visible ||
                                        ChatHistory.Visibility == Visibility.Visible ||
                                        ChatLinked.Visibility == Visibility.Visible
                    ? Visibility.Visible
                    : Visibility.Collapsed;
        }
        public static bool IsMember(this Supergroup supergroup)
        {
            if (supergroup.Status == null)
            {
                return(false);
            }

            return(supergroup.Status is ChatMemberStatusCreator ||
                   supergroup.Status is ChatMemberStatusAdministrator ||
                   supergroup.Status is ChatMemberStatusMember ||
                   supergroup.Status is ChatMemberStatusRestricted);
        }
Esempio n. 15
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            Subtitle.Text = Locale.Declension(group.IsChannel ? "Subscribers" : "Members", group.MemberCount);

            DescriptionTitle.Text = Strings.Resources.DescriptionPlaceholder;

            Automation.SetToolTip(Edit, group.IsChannel ? Strings.Resources.ManageChannelMenu : Strings.Resources.ManageGroupMenu);

            Call.Visibility = Visibility.Collapsed;
            Edit.Visibility = group.Status is ChatMemberStatusCreator || group.Status is ChatMemberStatusAdministrator ? Visibility.Visible : Visibility.Collapsed;
            Edit.Glyph      = Icons.Edit;

            Verified.Visibility = group.IsVerified ? Visibility.Visible : Visibility.Collapsed;

            Username.Badge      = $"{group.Username}";
            Username.Visibility = string.IsNullOrEmpty(group.Username) ? Visibility.Collapsed : Visibility.Visible;

            Location.Visibility = group.HasLocation ? Visibility.Visible : Visibility.Collapsed;

            if (group.IsChannel && !(group.Status is ChatMemberStatusCreator) && !(group.Status is ChatMemberStatusLeft) && !(group.Status is ChatMemberStatusBanned))
            {
                MiscPanel.Visibility  = Visibility.Visible;
                GroupLeave.Visibility = Visibility.Visible;
            }
            else
            {
                MiscPanel.Visibility  = Visibility.Collapsed;
                GroupLeave.Visibility = Visibility.Collapsed;
            }

            GroupInvite.Visibility = !group.IsChannel && group.CanInviteUsers() ? Visibility.Visible : Visibility.Collapsed;

            ChannelMembersPanel.Visibility = group.IsChannel && (group.Status is ChatMemberStatusCreator || group.Status is ChatMemberStatusAdministrator) ? Visibility.Visible : Visibility.Collapsed;
            MembersPanel.Visibility        = group.IsChannel ? Visibility.Collapsed : Visibility.Visible;
            //Admins.Visibility = Visibility.Collapsed;
            //Banned.Visibility = Visibility.Collapsed;
            //Restricted.Visibility = Visibility.Collapsed;
            //Members.Visibility = Visibility.Collapsed;

            if (!group.IsChannel && (ViewModel.Members == null || group.MemberCount < 200 && group.MemberCount != ViewModel.Members.Count))
            {
                ViewModel.Members = ViewModel.CreateMembers(group.Id);
            }

            // Unused:
            UserPhone.Visibility       = Visibility.Collapsed;
            UserCommonChats.Visibility = Visibility.Collapsed;
            UserStartSecret.Visibility = Visibility.Collapsed;
            SecretLifetime.Visibility  = Visibility.Collapsed;
            SecretHashKey.Visibility   = Visibility.Collapsed;
        }
Esempio n. 16
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            ProfileHeader?.UpdateSupergroup(chat, group);

            if (MediaFrame.Content is ChatSharedMediaPageBase sharedMedia)
            {
                sharedMedia.Header.UpdateSupergroup(chat, group);
            }

            if (!group.IsChannel && (ViewModel.Members == null || group.MemberCount < 200 && group.MemberCount != ViewModel.Members.Count))
            {
                ViewModel.Members = ViewModel.CreateMembers(group.Id);
            }
        }
Esempio n. 17
0
        public static bool CanPostMessages(this Supergroup supergroup)
        {
            if (supergroup.Status == null)
            {
                return(false);
            }

            if (supergroup.IsChannel)
            {
                return(supergroup.Status is ChatMemberStatusCreator || supergroup.Status is ChatMemberStatusAdministrator administrator && administrator.CanPostMessages);
            }
            else
            {
                return(supergroup.Status is ChatMemberStatusCreator || supergroup.Status is ChatMemberStatusAdministrator administrator || supergroup.Status is ChatMemberStatusMember);
            }
        }
Esempio n. 18
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            Title            = group.IsChannel ? Strings.Resources.ChannelSettingsTitle : Strings.Resources.GroupSettingsTitle;
            Subheader.Header = group.IsChannel ? Strings.Resources.ChannelTypeHeader : Strings.Resources.GroupTypeHeader;
            Subheader.Footer = group.Username.Length > 0 ? group.IsChannel ? Strings.Resources.ChannelPublicInfo : Strings.Resources.MegaPublicInfo : group.IsChannel ? Strings.Resources.ChannelPrivateInfo : Strings.Resources.MegaPrivateInfo;

            Public.Content  = group.IsChannel ? Strings.Resources.ChannelPublic : Strings.Resources.MegaPublic;
            Private.Content = group.IsChannel ? Strings.Resources.ChannelPrivate : Strings.Resources.MegaPrivate;

            UsernameHelp.Footer    = group.IsChannel ? Strings.Resources.ChannelUsernameHelp : Strings.Resources.MegaUsernameHelp;
            PrivateLinkHelp.Footer = group.IsChannel ? Strings.Resources.ChannelPrivateLinkHelp : Strings.Resources.MegaPrivateLinkHelp;



            ViewModel.Username = group.Username;
            ViewModel.IsPublic = !string.IsNullOrEmpty(group.Username);
        }
Esempio n. 19
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            GetEntities(fullInfo.Description);
            DescriptionPanel.Visibility = string.IsNullOrEmpty(fullInfo.Description) ? Visibility.Collapsed : Visibility.Visible;

            Admins.Badge      = fullInfo.AdministratorCount;
            Admins.Visibility = fullInfo.AdministratorCount > 0 ? Visibility.Visible : Visibility.Collapsed;

            Banned.Badge      = fullInfo.BannedCount;
            Banned.Visibility = fullInfo.BannedCount > 0 ? Visibility.Visible : Visibility.Collapsed;

            Restricted.Badge      = fullInfo.RestrictedCount;
            Restricted.Visibility = fullInfo.RestrictedCount > 0 ? Visibility.Visible : Visibility.Collapsed;

            Members.Badge      = fullInfo.MemberCount;
            Members.Visibility = fullInfo.CanGetMembers && group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
        }
        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);
                        }
                    });
                }
            }
        }
Esempio n. 21
0
        private async void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            var already = Items.FirstOrDefault(x => x.Id == fullInfo.StickerSetId);

            if (already != null)
            {
                SelectedItem = already;
            }
            else
            {
                var response = await ProtoService.SendAsync(new GetStickerSet(fullInfo.StickerSetId));

                if (response is StickerSet set)
                {
                    SelectedItem = new StickerSetInfo(set.Id, set.Title, set.Name, set.IsInstalled, set.IsArchived, set.IsOfficial, set.IsMasks, set.IsViewed, set.Stickers.Count, set.Stickers);
                }
            }
        }
        public static bool CanInviteUsers(this Supergroup supergroup)
        {
            if (supergroup.Status == null)
            {
                return(false);
            }

            if (supergroup.IsChannel && supergroup.MemberCount > 200)
            {
                return(false);
            }

            if (supergroup.AnyoneCanInvite && supergroup.Status is ChatMemberStatusMember)
            {
                return(true);
            }

            return(supergroup.Status is ChatMemberStatusCreator || supergroup.Status is ChatMemberStatusAdministrator administrator && administrator.CanInviteUsers);
        }
        public void UpdateMember(Chat chat, Supergroup group, User user, ChatMember member)
        {
            if (member.Status is ChatMemberStatusRestricted restricted)
            {
                DismissPanel.Visibility = Visibility.Visible;
            }
            else
            {
                DismissPanel.Visibility = Visibility.Collapsed;
            }

            PermissionsPanel.Visibility = Visibility.Visible;

            //ChangeInfo.Header = group.IsChannel ? Strings.Resources.EditAdminChangeChannelInfo : Strings.Resources.EditAdminChangeGroupInfo;
            //PostMessages.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            //EditMessages.Visibility = group.IsChannel ? Visibility.Visible : Visibility.Collapsed;
            //DeleteMessages.Header = group.IsChannel ? Strings.Resources.EditAdminDeleteMessages : Strings.Resources.EditAdminGroupDeleteMessages;
            //BanUsers.Visibility = group.IsChannel ? Visibility.Collapsed : Visibility.Visible;
            //AddUsers.Header = group.AnyoneCanInvite ? Strings.Resources.EditAdminAddUsersViaLink : Strings.Resources.EditAdminAddUsers;
        }
Esempio n. 24
0
        private void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            Delegate?.UpdateSupergroupFullInfo(chat, group, fullInfo);

            if (fullInfo.LinkedChatId != 0)
            {
                var linkedChat = CacheService.GetChat(fullInfo.LinkedChatId);
                if (linkedChat != null)
                {
                    Items.ReplaceWith(new[] { linkedChat });
                }
                else
                {
                    LoadSuitableChats();
                }
            }
            else
            {
                LoadSuitableChats();
            }
        }
Esempio n. 25
0
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            var linkedChat = ViewModel.CacheService.GetChat(fullInfo.LinkedChatId);

            if (linkedChat != null)
            {
                if (group.IsChannel)
                {
                    TextBlockHelper.SetMarkdown(Headline, string.Format(Strings.Resources.DiscussionChannelGroupSetHelp2, linkedChat.Title));
                    LayoutRoot.Footer = Strings.Resources.DiscussionChannelHelp2;
                }
                else
                {
                    TextBlockHelper.SetMarkdown(Headline, string.Format(Strings.Resources.DiscussionGroupHelp, linkedChat.Title));
                    LayoutRoot.Footer = Strings.Resources.DiscussionChannelHelp2;
                }
            }
            else
            {
            }
        }
Esempio n. 26
0
        public void UpdateSupergroup(Chat chat, Supergroup group)
        {
            Subtitle.Text = Locale.Declension(group.IsChannel ? "Subscribers" : "Members", group.MemberCount);

            Verified.Visibility = group.IsVerified ? Visibility.Visible : Visibility.Collapsed;

            Username.Content    = $"@{group.Username}";
            Username.Visibility = string.IsNullOrEmpty(group.Username) ? Visibility.Collapsed : Visibility.Visible;

            DescriptionTitle.Visibility = Visibility.Collapsed;
            DescriptionLabel.Padding    = new Thickness(12);

            if (group.IsChannel && !(group.Status is ChatMemberStatusCreator) && !(group.Status is ChatMemberStatusLeft) && !(group.Status is ChatMemberStatusBanned))
            {
                GroupLeave.Visibility = Visibility.Visible;
            }
            else
            {
                GroupLeave.Visibility = Visibility.Collapsed;
            }

            GroupInvite.Visibility = group.CanInviteUsers() ? Visibility.Visible : Visibility.Collapsed;

            EventLog.Visibility = group.Status is ChatMemberStatusCreator || group.Status is ChatMemberStatusAdministrator ? Visibility.Visible : Visibility.Collapsed;

            if (!group.IsChannel)
            {
                ViewModel.Members = ViewModel.CreateMembers(group.Id);
            }

            // Unused:
            UserPhone.Visibility       = Visibility.Collapsed;
            UserCommonChats.Visibility = Visibility.Collapsed;
            UserStartSecret.Visibility = Visibility.Collapsed;
            SecretLifetime.Visibility  = Visibility.Collapsed;
            SecretHashKey.Visibility   = Visibility.Collapsed;
        }
        public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
        {
            GroupStickersPanel.Visibility = fullInfo.CanSetStickerSet ? Visibility.Visible : Visibility.Collapsed;


            ViewModel.About = fullInfo.Description;
            ViewModel.IsAllHistoryAvailable = fullInfo.IsAllHistoryAvailable;

            ChatType.Visibility = fullInfo.CanSetUsername ? Visibility.Visible : Visibility.Collapsed;
            ChatHistory.Badge   = fullInfo.IsAllHistoryAvailable ? Strings.Resources.ChatHistoryVisible : Strings.Resources.ChatHistoryHidden;

            var linkedChat = ViewModel.CacheService.GetChat(fullInfo.LinkedChatId);

            if (linkedChat != null)
            {
                ChatLinked.Badge = linkedChat.Title;
            }
            else
            {
                ChatLinked.Badge = Strings.Resources.DiscussionInfo;
            }

            Admins.Badge    = fullInfo.AdministratorCount;
            Members.Badge   = fullInfo.MemberCount;
            Blacklist.Badge = fullInfo.BannedCount;

            if (group.CanInviteUsers())
            {
                if (fullInfo.InviteLink == null && string.IsNullOrEmpty(group.Username))
                {
                    InviteLinkPanel.Visibility = Visibility.Collapsed;
                    ViewModel.ProtoService.Send(new CreateChatInviteLink(chat.Id, string.Empty, 0, 0, false));
                }
                else if (string.IsNullOrEmpty(group.Username))
                {
                    InviteLink.Text            = fullInfo.InviteLink?.InviteLink;
                    RevokeLink.Visibility      = Visibility.Visible;
                    InviteLinkPanel.Visibility = Visibility.Visible;
                }
                else
                {
                    InviteLink.Text            = MeUrlPrefixConverter.Convert(ViewModel.CacheService, group.Username);
                    RevokeLink.Visibility      = Visibility.Collapsed;
                    InviteLinkPanel.Visibility = Visibility.Visible;
                }
            }
            else
            {
                InviteLinkPanel.Visibility = Visibility.Collapsed;
            }

            ChatBasicPanel.Visibility = ChatType.Visibility == Visibility.Visible ||
                                        ChatHistory.Visibility == Visibility.Visible ||
                                        ChatLinked.Visibility == Visibility.Visible
                    ? Visibility.Visible
                    : Visibility.Collapsed;

            if (fullInfo.StickerSetId == 0 || !fullInfo.CanSetStickerSet)
            {
                return;
            }

            ViewModel.ProtoService.Send(new GetStickerSet(fullInfo.StickerSetId), result =>
            {
                this.BeginOnUIThread(() =>
                {
                    if (result is StickerSet set && ViewModel.Chat?.Id == chat.Id)
                    {
                        GroupStickers.Badge = set.Title;
                    }
                });
            });
Esempio n. 28
0
 public void UpdateSupergroupFullInfo(Chat chat, Supergroup group, SupergroupFullInfo fullInfo)
 {
 }
Esempio n. 29
0
 public void UpdateSupergroup(Chat chat, Supergroup group)
 {
     AddNewPanel.Visibility = group.CanRestrictMembers() ? Visibility.Visible : Visibility.Collapsed;
     Footer.Text            = group.IsChannel ? Strings.Resources.NoBlockedChannel : Strings.Resources.NoBlockedGroup;
 }
Esempio n. 30
0
        public ProtoService(IDeviceInfoService deviceInfoService, IEventAggregator aggregator)
        {
            Log.SetVerbosityLevel(ApplicationSettings.Current.VerbosityLevel);
            Log.SetFilePath(Path.Combine(ApplicationData.Current.LocalFolder.Path, "0", "log"));

            _client            = Client.Create(this);
            _deviceInfoService = deviceInfoService;
            _aggregator        = aggregator;

            _preferences = new AutoDownloadPreferences(ApplicationData.Current.LocalSettings.CreateContainer("autoDownload", ApplicationDataCreateDisposition.Always));

            var parameters = new TdlibParameters
            {
                DatabaseDirectory  = Path.Combine(ApplicationData.Current.LocalFolder.Path, "0"),
                UseSecretChats     = true,
                UseMessageDatabase = true,
                ApiId              = Telegram.Api.Constants.ApiId,
                ApiHash            = Telegram.Api.Constants.ApiHash,
                SystemLanguageCode = "en",
                DeviceModel        = _deviceInfoService.DeviceModel,
                SystemVersion      = _deviceInfoService.SystemVersion,
                ApplicationVersion = _deviceInfoService.AppVersion,
            };

#if MOCKUP
            ProfilePhoto ProfilePhoto(string name)
            {
                return(new ProfilePhoto(0, new TdWindows.File(0, 0, 0, new LocalFile(System.IO.Path.Combine(Package.Current.InstalledLocation.Path, "Assets\\Mockup\\", name), true, true, false, true, 0, 0), null), null));
            }

            ChatPhoto ChatPhoto(string name)
            {
                return(new ChatPhoto(new TdWindows.File(0, 0, 0, new LocalFile(System.IO.Path.Combine(Package.Current.InstalledLocation.Path, "Assets\\Mockup\\", name), true, true, false, true, 0, 0), null), null));
            }

            _users[0]  = new User(0, "Jane", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[1]  = new User(1, "Tyrion", "Lannister", string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[2]  = new User(2, "Alena", "Shy", string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[3]  = new User(3, "Heisenberg", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[4]  = new User(4, "Bender", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[5]  = new User(5, "EVE", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[16] = new User(16, "Nick", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[7]  = new User(7, "Eileen", "Lockhard \uD83D\uDC99", string.Empty, string.Empty, new UserStatusOnline(int.MaxValue), ProfilePhoto("a5.png"), null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[11] = new User(11, "Thomas", string.Empty, string.Empty, string.Empty, null, ProfilePhoto("a3.png"), null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[9]  = new User(9, "Daenerys", string.Empty, string.Empty, string.Empty, null, ProfilePhoto("a2.png"), null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[13] = new User(13, "Angela", "Merkel", string.Empty, string.Empty, null, ProfilePhoto("a1.png"), null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[10] = new User(10, "Julian", "Assange", string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[8]  = new User(8, "Pierre", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[17] = new User(17, "Alexmitter", string.Empty, string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);
            _users[18] = new User(18, "Jaina", "Moore", string.Empty, string.Empty, null, null, null, null, false, string.Empty, true, new UserTypeRegular(), string.Empty);

            _secretChats[1] = new SecretChat(1, 7, new SecretChatStateReady(), false, 15, new byte[0], 75);

            _supergroups[0] = new Supergroup(0, string.Empty, 0, new ChatMemberStatusMember(), 0, false, false, true, true, string.Empty);
            _supergroups[1] = new Supergroup(1, string.Empty, 0, new ChatMemberStatusMember(), 0, false, false, true, false, string.Empty);
            _supergroups[2] = new Supergroup(2, string.Empty, 0, new ChatMemberStatusMember(), 7, false, false, false, false, string.Empty);
            _supergroups[3] = new Supergroup(3, string.Empty, 0, new ChatMemberStatusMember(), 0, false, false, false, false, string.Empty);

            int TodayDate(int hour, int minute)
            {
                return((int)Utils.DateTimeToUnixTimestamp(DateTime.Now.Date.AddHours(hour).AddMinutes(minute)));
            }

            int TuesdayDate()
            {
                var last = DateTime.Now;

                do
                {
                    last = last.AddDays(-1);
                }while (last.DayOfWeek != DayOfWeek.Tuesday);

                return((int)Utils.DateTimeToUnixTimestamp(last));
            }

            var lastMessage0  = new Message(long.MaxValue, 0, 0, null, false, false, false, false, false, false, false, TodayDate(17, 07), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Great news everyone! Unigram X is now available in the Microsoft Store", new TextEntity[0]), null), null);
            var lastMessage1  = new Message(long.MaxValue, 1, 1, null, false, false, false, false, false, false, false, TodayDate(15, 34), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Well I do help animals. Maybe I'll have a few cats in my new luxury apartment. 😊", new TextEntity[0]), null), null);
            var lastMessage2  = new Message(long.MaxValue, 2, 2, null, false, false, false, false, false, false, false, TodayDate(18, 12), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Sometimes possession is an abstract concept. They took my purse, but the...", new TextEntity[0]), null), null);
            var lastMessage3  = new Message(long.MaxValue, 3, 3, null, false, false, false, false, false, false, false, TodayDate(18, 00), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageSticker(new Sticker(0, 0, 0, "😍", false, null, null, null)), null);
            var lastMessage4  = new Message(long.MaxValue, 4, 4, null, false, false, false, false, false, false, false, TodayDate(17, 23), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Thanks, Telegram helps me a lot. You have my financial support if you need more servers.", new TextEntity[0]), null), null);
            var lastMessage5  = new Message(long.MaxValue, 5, 5, null, false, false, false, false, false, false, false, TodayDate(15, 10), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("I looove new Surfaces! If fact, they invited me to a focus group.", new TextEntity[0]), null), null);
            var lastMessage6  = new Message(long.MaxValue, 6, 6, null, false, false, false, false, false, false, false, TodayDate(12, 53), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Telegram just updated their iOS app!", new TextEntity[0]), null), null);
            var lastMessage7  = new Message(long.MaxValue, 7, 7, null, false, false, false, false, false, false, false, TuesdayDate(), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageDocument(new Document("LaserBlastSafetyGuide.pdf", string.Empty, null, null), new FormattedText(string.Empty, new TextEntity[0])), null);
            var lastMessage8  = new Message(long.MaxValue, 8, 8, null, false, false, false, false, false, false, false, TuesdayDate(), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("It's impossible.", new TextEntity[0]), null), null);
            var lastMessage9  = new Message(long.MaxValue, 9, 9, null, false, false, false, false, false, false, false, TuesdayDate(), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Hola!", new TextEntity[0]), null), null);
            var lastMessage10 = new Message(long.MaxValue, 17, 12, null, false, false, false, false, false, false, false, TuesdayDate(), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("Let's design more robust memes", new TextEntity[0]), null), null);
            var lastMessage11 = new Message(long.MaxValue, 18, 13, null, false, false, false, false, false, false, false, TuesdayDate(), 0, null, 0, 0, 0, 0, string.Empty, 0, 0, new MessageText(new FormattedText("What?! 😱", new TextEntity[0]), null), null);

            _chats[0]  = new Chat(0, new ChatTypeSupergroup(0, true), "Unigram News", ChatPhoto("a0.png"), lastMessage0, long.MaxValue - 0, true, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[1]  = new Chat(1, new ChatTypePrivate(0), "Jane", ChatPhoto("a6.png"), lastMessage1, long.MaxValue - 1, true, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[2]  = new Chat(2, new ChatTypePrivate(1), "Tyrion Lannister", null, lastMessage2, long.MaxValue - 2, false, 1, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[3]  = new Chat(3, new ChatTypePrivate(2), "Alena Shy", ChatPhoto("a7.png"), lastMessage3, long.MaxValue - 3, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[4]  = new Chat(4, new ChatTypeSecret(0, 3), "Heisenberg", ChatPhoto("a8.png"), lastMessage4, long.MaxValue - 4, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[5]  = new Chat(5, new ChatTypePrivate(4), "Bender", ChatPhoto("a9.png"), lastMessage5, long.MaxValue - 5, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[6]  = new Chat(6, new ChatTypeSupergroup(1, true), "World News Today", ChatPhoto("a10.png"), lastMessage6, long.MaxValue - 6, false, 1, 0, 0, 0, new NotificationSettings(int.MaxValue, string.Empty, true), 0, null, string.Empty);
            _chats[7]  = new Chat(7, new ChatTypePrivate(5), "EVE", ChatPhoto("a11.png"), lastMessage7, long.MaxValue - 7, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[8]  = new Chat(8, new ChatTypePrivate(16), "Nick", null, lastMessage8, long.MaxValue - 8, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[11] = new Chat(11, new ChatTypePrivate(16), "Kate Rodriguez", ChatPhoto("a13.png"), lastMessage9, long.MaxValue - 9, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[12] = new Chat(12, new ChatTypeSupergroup(3, false), "Meme Factory", ChatPhoto("a14.png"), lastMessage10, long.MaxValue - 10, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[13] = new Chat(13, new ChatTypePrivate(18), "Jaina Moore", null, lastMessage11, long.MaxValue - 11, false, 0, 0, 0, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);

            _chats[9]  = new Chat(9, new ChatTypeSupergroup(2, false), "Weekend Plans", ChatPhoto("a4.png"), null, 0, false, 0, 0, long.MaxValue, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
            _chats[10] = new Chat(10, new ChatTypeSecret(1, 7), "Eileen Lockhard \uD83D\uDC99", ChatPhoto("a5.png"), null, 0, false, 0, 0, long.MaxValue, 0, new NotificationSettings(0, string.Empty, true), 0, null, string.Empty);
#endif

            Task.Run(() =>
            {
                _client.Send(new SetTdlibParameters(parameters));
                _client.Send(new CheckDatabaseEncryptionKey(new byte[0]));
                _client.Run();

                var ttl = ApplicationSettings.Current.FilesTtl;
                if (ttl > 0)
                {
                    _client.Send(new OptimizeStorage(long.MaxValue, ttl * 60 * 60 * 24, int.MaxValue, 0, new FileType[0], new long[0], new long[0], 0));
                }
            });
        }