* Refactor: Move some code into separate methods in FriendsModule

0.6.2-post-fixes
Justin Clarke Casey 2008-12-22 18:39:06 +00:00
parent 06f74e4295
commit e0b7ad7677
1 changed files with 83 additions and 49 deletions

View File

@ -382,10 +382,28 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
{ {
// Friend Requests go by Instant Message.. using the dialog param // Friend Requests go by Instant Message.. using the dialog param
// https://wiki.secondlife.com/wiki/ImprovedInstantMessage // https://wiki.secondlife.com/wiki/ImprovedInstantMessage
UUID fromAgentID = new UUID(im.fromAgentID);
UUID toAgentID = new UUID(im.toAgentID);
if (im.dialog == (byte)InstantMessageDialog.FriendshipOffered) // 38 if (im.dialog == (byte)InstantMessageDialog.FriendshipOffered) // 38
{
FriendshipOffered(client, im);
}
else if (im.dialog == (byte)InstantMessageDialog.FriendshipAccepted) // 39
{
FriendshipAccepted(client, im);
}
else if (im.dialog == (byte)InstantMessageDialog.FriendshipDeclined) // 40
{
FriendshipDeclined(client, im);
}
}
/// <summary>
/// Invoked when a user offers a friendship.
/// </summary>
/// May not currently be used - see OnApproveFriendRequest() instead
/// <param name="im"></param>
/// <param name="client"></param>
private void FriendshipOffered(IClientAPI client, GridInstantMessage im)
{ {
// this is triggered by the initiating agent: // this is triggered by the initiating agent:
// A local agent offers friendship to some possibly remote friend. // A local agent offers friendship to some possibly remote friend.
@ -394,7 +412,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
// some properties are misused here: // some properties are misused here:
// fromAgentName is the *destination* name (the friend we offer friendship to) // fromAgentName is the *destination* name (the friend we offer friendship to)
m_log.InfoFormat("[FRIEND]: Offer(38) - From: {0}, FromName: {1} To: {2}, Session: {3}, Message: {4}, Offline {5}", m_log.DebugFormat("[FRIEND]: Offer(38) - From: {0}, FromName: {1} To: {2}, Session: {3}, Message: {4}, Offline {5}",
im.fromAgentID, im.fromAgentName, im.toAgentID, im.imSessionID, im.message, im.offline); im.fromAgentID, im.fromAgentName, im.toAgentID, im.imSessionID, im.message, im.offline);
// 1.20 protocol sends an UUID in the message field, instead of the friendship offer text. // 1.20 protocol sends an UUID in the message field, instead of the friendship offer text.
@ -412,20 +430,36 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
// If new friend is local, it will send an IM to the viewer. // If new friend is local, it will send an IM to the viewer.
// If new friend is remote, it will cause a OnGridInstantMessage on the remote server // If new friend is remote, it will cause a OnGridInstantMessage on the remote server
m_TransferModule.SendInstantMessage(im, m_TransferModule.SendInstantMessage(im,
delegate(bool success) { delegate(bool success)
{
m_log.DebugFormat("[FRIEND]: sending IM success = {0}", success); m_log.DebugFormat("[FRIEND]: sending IM success = {0}", success);
} }
); );
} }
} }
else if (im.dialog == (byte)InstantMessageDialog.FriendshipAccepted) // 39
/// <summary>
/// Invoked when a user accepts a friendship offer.
/// </summary>
/// <param name="im"></param>
/// <param name="client"></param>
private void FriendshipAccepted(IClientAPI client, GridInstantMessage im)
{ {
m_log.DebugFormat("[FRIEND]: 39 - from client {0}, agent {2} {3}, imsession {4} to {5}: {6} (dialog {7})", m_log.DebugFormat("[FRIEND]: 39 - from client {0}, agent {2} {3}, imsession {4} to {5}: {6} (dialog {7})",
client.AgentId, im.fromAgentID, im.fromAgentName, im.imSessionID, im.toAgentID, im.message, im.dialog); client.AgentId, im.fromAgentID, im.fromAgentName, im.imSessionID, im.toAgentID, im.message, im.dialog);
} }
else if (im.dialog == (byte)InstantMessageDialog.FriendshipDeclined) // 40
/// <summary>
/// Invoked when a user declines a friendship offer.
/// </summary>
/// May not currently be used - see OnDenyFriendRequest() instead
/// <param name="im"></param>
/// <param name="client"></param>
private void FriendshipDeclined(IClientAPI client, GridInstantMessage im)
{ {
UUID fromAgentID = new UUID(im.fromAgentID);
UUID toAgentID = new UUID(im.toAgentID);
// declining the friendship offer causes a type 40 IM being sent to the (possibly remote) initiator // declining the friendship offer causes a type 40 IM being sent to the (possibly remote) initiator
// toAgentID is initiator, fromAgentID declined friendship // toAgentID is initiator, fromAgentID declined friendship
m_log.DebugFormat("[FRIEND]: 40 - from client {0}, agent {1} {2}, imsession {3} to {4}: {5} (dialog {6})", m_log.DebugFormat("[FRIEND]: 40 - from client {0}, agent {1} {2}, imsession {3} to {4}: {5} (dialog {6})",
@ -435,6 +469,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
// Send the decline to whoever is the destination. // Send the decline to whoever is the destination.
GridInstantMessage msg = new GridInstantMessage(client.Scene, fromAgentID, client.Name, toAgentID, GridInstantMessage msg = new GridInstantMessage(client.Scene, fromAgentID, client.Name, toAgentID,
im.dialog, im.message, im.offline != 0, im.Position); im.dialog, im.message, im.offline != 0, im.Position);
// If new friend is local, it will send an IM to the viewer. // If new friend is local, it will send an IM to the viewer.
// If new friend is remote, it will cause a OnGridInstantMessage on the remote server // If new friend is remote, it will cause a OnGridInstantMessage on the remote server
m_TransferModule.SendInstantMessage(msg, m_TransferModule.SendInstantMessage(msg,
@ -443,7 +478,6 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
} }
); );
} }
}
private void OnGridInstantMessage(GridInstantMessage msg) private void OnGridInstantMessage(GridInstantMessage msg)
{ {
@ -467,11 +501,11 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
if (msg.dialog == (byte)InstantMessageDialog.FriendshipAccepted) if (msg.dialog == (byte)InstantMessageDialog.FriendshipAccepted)
{ {
// for accept friendship, we have to do a bit more // for accept friendship, we have to do a bit more
approveFriendship(new UUID(msg.fromAgentID), new UUID(msg.toAgentID), msg.fromAgentName); ApproveFriendship(new UUID(msg.fromAgentID), new UUID(msg.toAgentID), msg.fromAgentName);
} }
} }
private void approveFriendship(UUID fromAgentID, UUID toAgentID, string fromName) private void ApproveFriendship(UUID fromAgentID, UUID toAgentID, string fromName)
{ {
m_log.DebugFormat("[FRIEND]: Approve friendship from {0} (ID: {1}) to {2}", m_log.DebugFormat("[FRIEND]: Approve friendship from {0} (ID: {1}) to {2}",
fromAgentID, fromName, toAgentID); fromAgentID, fromName, toAgentID);
@ -537,7 +571,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
friendPresence.ControllingClient.SendInstantMessage(agentID, agentID.ToString(), friendID, client.Name, friendPresence.ControllingClient.SendInstantMessage(agentID, agentID.ToString(), friendID, client.Name,
(byte)InstantMessageDialog.FriendshipAccepted, (byte)InstantMessageDialog.FriendshipAccepted,
(uint)Util.UnixTimeSinceEpoch()); (uint)Util.UnixTimeSinceEpoch());
approveFriendship(agentID, friendID, client.Name); ApproveFriendship(agentID, friendID, client.Name);
} }
else else
{ {