Port the Avination offline messaging system to Core
							parent
							
								
									c5fb39e21f
								
							
						
					
					
						commit
						08fcf958c2
					
				| 
						 | 
				
			
			@ -356,12 +356,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
 | 
			
		|||
                PresenceInfo[] presences = PresenceService.GetAgents(new string[] { fid });
 | 
			
		||||
                if (presences != null && presences.Length > 0)
 | 
			
		||||
                    presence = presences[0];
 | 
			
		||||
                if (presence != null)
 | 
			
		||||
                    im.offline = 0;
 | 
			
		||||
                im.offline = 0;
 | 
			
		||||
 | 
			
		||||
                im.fromAgentID = fromAgentID.Guid;
 | 
			
		||||
                im.fromAgentName = firstname + " " + lastname;
 | 
			
		||||
                im.offline = (byte)((presence == null) ? 1 : 0);
 | 
			
		||||
                im.imSessionID = im.fromAgentID;
 | 
			
		||||
                im.message = FriendshipMessage(fid);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -201,26 +201,42 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
 | 
			
		|||
 | 
			
		||||
        private void UndeliveredMessage(GridInstantMessage im)
 | 
			
		||||
        {
 | 
			
		||||
            if ((im.offline != 0)
 | 
			
		||||
                && (!im.fromGroup || (im.fromGroup && m_ForwardOfflineGroupMessages)))
 | 
			
		||||
            if (im.dialog != (byte)InstantMessageDialog.MessageFromObject &&
 | 
			
		||||
                im.dialog != (byte)InstantMessageDialog.MessageFromAgent &&
 | 
			
		||||
                im.dialog != (byte)InstantMessageDialog.GroupNotice &&
 | 
			
		||||
                im.dialog != (byte)InstantMessageDialog.GroupInvitation &&
 | 
			
		||||
                im.dialog != (byte)InstantMessageDialog.InventoryOffered)
 | 
			
		||||
            {
 | 
			
		||||
                bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>(
 | 
			
		||||
                        "POST", m_RestURL+"/SaveMessage/", im);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
                if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
 | 
			
		||||
                {
 | 
			
		||||
                    IClientAPI client = FindClient(new UUID(im.fromAgentID));
 | 
			
		||||
                    if (client == null)
 | 
			
		||||
                        return;
 | 
			
		||||
            if (!m_ForwardOfflineGroupMessages)
 | 
			
		||||
            {
 | 
			
		||||
                if (im.dialog == (byte)InstantMessageDialog.GroupNotice ||
 | 
			
		||||
                    im.dialog != (byte)InstantMessageDialog.GroupInvitation)
 | 
			
		||||
                    return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
                    client.SendInstantMessage(new GridInstantMessage(
 | 
			
		||||
                            null, new UUID(im.toAgentID),
 | 
			
		||||
                            "System", new UUID(im.fromAgentID),
 | 
			
		||||
                            (byte)InstantMessageDialog.MessageFromAgent,
 | 
			
		||||
                            "User is not logged in. "+
 | 
			
		||||
                            (success ? "Message saved." : "Message not saved"),
 | 
			
		||||
                            false, new Vector3()));
 | 
			
		||||
                }
 | 
			
		||||
            Scene scene = FindScene(new UUID(im.fromAgentID));
 | 
			
		||||
            if (scene == null)
 | 
			
		||||
                scene = m_SceneList[0];
 | 
			
		||||
 | 
			
		||||
            bool success = SynchronousRestObjectRequester.MakeRequest<GridInstantMessage, bool>(
 | 
			
		||||
                    "POST", m_RestURL+"/SaveMessage/", im);
 | 
			
		||||
 | 
			
		||||
            if (im.dialog == (byte)InstantMessageDialog.MessageFromAgent)
 | 
			
		||||
            {
 | 
			
		||||
                IClientAPI client = FindClient(new UUID(im.fromAgentID));
 | 
			
		||||
                if (client == null)
 | 
			
		||||
                    return;
 | 
			
		||||
 | 
			
		||||
                client.SendInstantMessage(new GridInstantMessage(
 | 
			
		||||
                        null, new UUID(im.toAgentID),
 | 
			
		||||
                        "System", new UUID(im.fromAgentID),
 | 
			
		||||
                        (byte)InstantMessageDialog.MessageFromAgent,
 | 
			
		||||
                        "User is not logged in. "+
 | 
			
		||||
                        (success ? "Message saved." : "Message not saved"),
 | 
			
		||||
                        false, new Vector3()));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1494,7 +1494,7 @@ namespace OpenSim.Region.Framework.Scenes
 | 
			
		|||
                    msg.fromAgentName = "Server";
 | 
			
		||||
                    msg.dialog = (byte)19; // Object msg
 | 
			
		||||
                    msg.fromGroup = false;
 | 
			
		||||
                    msg.offline = (byte)1;
 | 
			
		||||
                    msg.offline = (byte)0;
 | 
			
		||||
                    msg.ParentEstateID = RegionInfo.EstateSettings.ParentEstateID;
 | 
			
		||||
                    msg.Position = Vector3.Zero;
 | 
			
		||||
                    msg.RegionID = RegionInfo.RegionID.Guid;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -881,7 +881,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
 | 
			
		|||
            msg.dialog = dialog;
 | 
			
		||||
            // msg.dialog = (byte)OpenMetaverse.InstantMessageDialog.GroupNotice;
 | 
			
		||||
            msg.fromGroup = true;
 | 
			
		||||
            msg.offline = (byte)1; // Allow this message to be stored for offline use
 | 
			
		||||
            msg.offline = (byte)0;
 | 
			
		||||
            msg.ParentEstateID = 0;
 | 
			
		||||
            msg.Position = Vector3.Zero;
 | 
			
		||||
            msg.RegionID = UUID.Zero.Guid;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue