public void ReceiveMessage(CommunitySession session, Message message)
 {
     try
     {
         if (message.Type == MessageType.CommunityMessage)
         {
             CommunityMessage message2 = message as CommunityMessage;
             SessionTabItem   item     = this.FindIMSession(session);
             Buddy            sender   = ComponentManager.GetBuddyListBuilder().FindOrCreateBuddy(message2.Uin, true);
             if ((sender != null) && (item != null))
             {
                 item.AddMsg(sender, message2.Time, message2.MessagePack);
             }
         }
         else if (message.Type == MessageType.InfoMessage)
         {
             InfoMessage    message3 = message as InfoMessage;
             SessionTabItem item2    = this.FindIMSession(session);
             if (item2 != null)
             {
                 item2.AddMsg(null, message3.Time, message3.MessagePack);
             }
         }
     }
     catch (Exception)
     {
     }
 }
 public CommunityLoginWindow(CommunitySession session, ILogger <CommunityLoginWindow> logger)
 {
     this.DataContext = this;
     this.InitializeComponent();
     this.session = session;
     this.Closed += this.OnClosed;
     this.logger  = logger;
 }
 public SessionTabItem FindIMSession(CommunitySession communitySession)
 {
     foreach (SessionTabItem item in this.sessionTabItems)
     {
         if (item.CommunitySession == communitySession)
         {
             return(item);
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
        private void CreateCommunitySessionWindow(uint communityID, object parameter)
        {
            List <InstanceAnswerPro.Core.Message> list = Util_Group.PopMessages(communityID);
            CommunitySession       communitySession    = this._communitySessionManager.GetCommunitySession(communityID, true);
            CommunitySessionWindow window = new CommunitySessionWindow(communitySession);

            foreach (InstanceAnswerPro.Core.Message message in list)
            {
                window.ReceiveMessage(communitySession, message);
            }
            Util_Buddy.BuddySessionParameter parameter2 = parameter as Util_Buddy.BuddySessionParameter;
            if (parameter2 != null)
            {
                window.Left = parameter2.WindowPosition.X;
                window.Top  = parameter2.WindowPosition.Y;
            }
            window.Show();
            window.Activate();
        }
 public static bool ActiveSessionWhenExist(CommunitySession communitySession)
 {
     for (int i = 0; i < CommunitySessionWindows.Count; i++)
     {
         SessionTabItem item = CommunitySessionWindows[i].FindIMSession(communitySession);
         if (item != null)
         {
             if (CommunitySessionWindows[i].WindowState == WindowState.Minimized)
             {
                 CommunitySessionWindows[i].WindowState = WindowState.Normal;
             }
             CommunitySessionWindows[i].Show();
             CommunitySessionWindows[i].Activate();
             CommunitySessionWindows[i].CurrentSessionTabItem = item;
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 6
0
 public void OnMessagePushed(InstanceAnswerPro.Core.Message message)
 {
     if (message.Type == InstanceAnswerPro.Core.MessageType.InfoMessage)
     {
         InfoMessage infoMessage = (InfoMessage)message;
         if (!infoMessage.IsCommunityMsg)
         {
             ContactSession contactSession = this._contactSessionManager.GetContactSession(infoMessage.Uin, false);
             if (contactSession != null)
             {
                 contactSession.OnMessageReceived(infoMessage);
                 this._messageCenter.PopMessage(infoMessage);
             }
         }
         else
         {
             CommunitySession communitySession = this._communitySessionManager.GetCommunitySession(infoMessage.Uin, false);
             if (communitySession != null)
             {
                 communitySession.OnMessageReceived(infoMessage);
                 this._messageCenter.PopMessage(infoMessage);
             }
         }
     }
     else if (message.Type == InstanceAnswerPro.Core.MessageType.ContactMessage)
     {
         ContactMessage message3 = (ContactMessage)message;
         this._messageCenter.NotifyMessage(new UICommandMessage("AddRecentContact", InstanceAnswerPro.Core.MessageType.ContactMessage, message3.Uin));
     }
     else if (message.Type == InstanceAnswerPro.Core.MessageType.CommunityMessage)
     {
         CommunityMessage message4 = (CommunityMessage)message;
         this._messageCenter.NotifyMessage(new UICommandMessage("AddRecentContact", InstanceAnswerPro.Core.MessageType.CommunityMessage, message4.CommunityID));
         this.CalculateUnreadCommunityMessageCount(message4);
     }
 }
 public static bool ActiveSessionWhenExist(CommunitySession communitySession)
 {
     for (int i = 0; i < CommunitySessionWindows.Count; i++)
     {
         SessionTabItem item = CommunitySessionWindows[i].FindIMSession(communitySession);
         if (item != null)
         {
             if (CommunitySessionWindows[i].WindowState == WindowState.Minimized)
             {
                 CommunitySessionWindows[i].WindowState = WindowState.Normal;
             }
             CommunitySessionWindows[i].Show();
             CommunitySessionWindows[i].Activate();
             CommunitySessionWindows[i].CurrentSessionTabItem = item;
             return true;
         }
     }
     return false;
 }
 public CommunitySessionWindow(CommunitySession communitySession)
     : this(new SessionTabItem(communitySession))
 {
 }
 public void ReceiveMessage(CommunitySession session, Message message)
 {
     try
     {
         if (message.Type == MessageType.CommunityMessage)
         {
             CommunityMessage message2 = message as CommunityMessage;
             SessionTabItem item = this.FindIMSession(session);
             Buddy sender = ComponentManager.GetBuddyListBuilder().FindOrCreateBuddy(message2.Uin, true);
             if ((sender != null) && (item != null))
             {
                 item.AddMsg(sender, message2.Time, message2.MessagePack);
             }
         }
         else if (message.Type == MessageType.InfoMessage)
         {
             InfoMessage message3 = message as InfoMessage;
             SessionTabItem item2 = this.FindIMSession(session);
             if (item2 != null)
             {
                 item2.AddMsg(null, message3.Time, message3.MessagePack);
             }
         }
     }
     catch (Exception)
     {
     }
 }
 public SessionTabItem FindIMSession(CommunitySession communitySession)
 {
     foreach (SessionTabItem item in this.sessionTabItems)
     {
         if (item.CommunitySession == communitySession)
         {
             return item;
         }
     }
     return null;
 }
 public CommunitySessionWindow(CommunitySession communitySession)
     : this(new SessionTabItem(communitySession))
 {
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Loads the bar for the given session. If the user is a member of several, either the last one is used,
        /// or a selection dialog is presented.
        /// </summary>
        /// <param name="session">The current session.</param>
        /// <param name="showCommunityId">Force this community to show.</param>
        public async void LoadSessionBar(CommunitySession session, string?showCommunityId = null)
        {
            if (this.firstBar && AppOptions.Current.Launch.BarFile != null)
            {
                this.LoadFromBarJson(AppOptions.Current.Launch.BarFile);
                return;
            }

            this.Logger.LogInformation($"Loading a bar ({session.Communities.Length} communities)");

            UserBar?bar;

            string[] lastCommunities = AppOptions.Current.Communities.ToArray();
            string?  lastCommunityId = showCommunityId ?? AppOptions.Current.LastCommunity;

            if (string.IsNullOrWhiteSpace(lastCommunityId))
            {
                lastCommunityId = null;
            }

            UserCommunity?community = null;
            UserBar?      userBar   = null;

            if (session.Communities.Length == 0)
            {
                MessageBox.Show("You are not part of a Morphic community yet.", "Morphic");
            }
            else if (session.Communities.Length == 1)
            {
                community = session.Communities.First();
            }
            else
            {
                // The user is a member of multiple communities.

                // See if any membership has changed
                bool changed = showCommunityId != null && session.Communities.Length != lastCommunities.Length ||
                               !session.Communities.Select(c => c.Id).OrderBy(id => id)
                               .SequenceEqual(lastCommunities.OrderBy(id => id));

                if (!changed && lastCommunityId != null)
                {
                    community = session.Communities.FirstOrDefault(c => c.Id == lastCommunityId);
                }

                if (community == null)
                {
                    this.Logger.LogInformation("Showing community picker");

                    // Load the bars while the picker is shown
                    Dictionary <string, Task <UserBar> > bars =
                        session.Communities.ToDictionary(c => c.Id, c => session.GetBar(c.Id));

                    // Show the picker
                    CommunityPickerWindow picker = new CommunityPickerWindow(session.Communities);
                    bool gotCommunity            = picker.ShowDialog() == true;
                    community = gotCommunity ? picker.SelectedCommunity : null;

                    if (community != null)
                    {
                        userBar = await bars[community.Id];
                    }
                }
            }

            if (community != null)
            {
                userBar ??= await session.GetBar(community.Id);

                this.Logger.LogInformation($"Showing bar for community {community.Id} {community.Name}");
                string  barJson = this.GetUserBarJson(userBar);
                BarData?barData = this.LoadFromBarJson(userBar.Id, barJson);
                if (barData != null)
                {
                    barData.CommunityId = community.Id;
                }
            }

            AppOptions.Current.Communities   = session.Communities.Select(c => c.Id).ToArray();
            AppOptions.Current.LastCommunity = community?.Id;
        }