From da40427a0be28de943988a4961c728384a453119 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Mon, 16 Jan 2012 14:27:35 -0500 Subject: STORM-1795 Ad-hoc messages are received even when "Only friends and groups can call or IM me" --- indra/newview/llimview.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index a856bd0bdc..fa7930503b 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2458,7 +2458,10 @@ void LLIMMgr::addMessage( make_ui_sound("UISndNewIncomingIMSession"); } - if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat)) + bool show_message = gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && + LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL ? false : true; + + if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && show_message) { LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); } -- cgit v1.3 From 82e90a6af580890eb685fc6b684d79ca905e6279 Mon Sep 17 00:00:00 2001 From: Paul ProductEngine Date: Fri, 20 Jan 2012 08:59:37 +0200 Subject: EXP-901 FIXED (Can see "typing" messages from users who are not allowed to IM you) - If "Only friends and groups can IM me" option is ON but the user got message from non-friend, show notification one time per session. --- indra/newview/llimview.cpp | 11 +++++++++++ indra/newview/llimview.h | 12 ++++++++++++ indra/newview/llviewermessage.cpp | 9 ++++++++- indra/newview/skins/default/xui/en/strings.xml | 1 + 4 files changed, 32 insertions(+), 1 deletion(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index a856bd0bdc..e69c45de58 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2977,6 +2977,17 @@ bool LLIMMgr::isVoiceCall(const LLUUID& session_id) return im_session->mStartedAsIMCall; } +void LLIMMgr::addNotifiedNonFriendSessionID(const LLUUID& session_id) +{ + mNotifiedNonFriendSessions.insert(session_id); +} + +bool LLIMMgr::isNonFriendSessionNotified(const LLUUID& session_id) +{ + return mNotifiedNonFriendSessions.end() != mNotifiedNonFriendSessions.find(session_id); + +} + void LLIMMgr::noteOfflineUsers( const LLUUID& session_id, const LLDynamicArray& ids) diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index b1be26a169..f07a78e2f7 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -438,6 +438,10 @@ public: bool isVoiceCall(const LLUUID& session_id); + void addNotifiedNonFriendSessionID(const LLUUID& session_id); + + bool isNonFriendSessionNotified(const LLUUID& session_id); + private: /** @@ -465,6 +469,14 @@ private: typedef std::list session_observers_list_t; session_observers_list_t mSessionObservers; + // EXP-901 + // If "Only friends and groups can IM me" option is ON but the user got message from non-friend, + // the user should be notified that to be able to see this message the option should be OFF. + // This set stores session IDs in which user was notified. Need to store this IDs so that the user + // be notified only one time per session with non-friend. + typedef std::set notified_non_friend_sessions_t; + notified_non_friend_sessions_t mNotifiedNonFriendSessions; + LLSD mPendingInvitations; LLSD mPendingAgentListUpdates; }; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 3c6770df43..6bb13bb8d7 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2360,8 +2360,15 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; bool mute_im = is_muted; - if(accept_im_from_only_friend&&!is_friend) + if (accept_im_from_only_friend && !is_friend) { + if (!gIMMgr->isNonFriendSessionNotified(session_id)) + { + std::string message = LLTrans::getString("IM_unblock_only_groups_friends"); + gIMMgr->addMessage(session_id, from_id, name, message); + gIMMgr->addNotifiedNonFriendSessionID(session_id); + } + mute_im = true; } if (!mute_im || is_linden) diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3351ffe00f..54d5559efc 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -3238,6 +3238,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. To (Moderator) (Saved [LONG_TIMESTAMP]) + To see this message, you must uncheck 'Only friends and groups can call or IM me' in Preferences/Privacy. Your call has been answered -- cgit v1.3 From d70d57c9387bd94d32cb3e2b71430102f250c6eb Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Fri, 20 Jan 2012 14:15:31 -0500 Subject: STORM-1795 Fix logic error --- indra/newview/llimview.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index fa7930503b..dbdef9d47b 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2458,8 +2458,14 @@ void LLIMMgr::addMessage( make_ui_sound("UISndNewIncomingIMSession"); } - bool show_message = gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && - LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL ? false : true; + bool show_message = true; + if (gSavedSettings.getBOOL("VoiceCallsFriendsOnly")) + { + if (LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL) + { + show_messages = false; + } + } if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && show_message) { -- cgit v1.3 From 44436d0240ceeb384d1a2fc05c46ccf1c4034f94 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Fri, 20 Jan 2012 14:26:45 -0500 Subject: STORM-1795 Fixed misspelled variable --- indra/newview/llimview.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index dbdef9d47b..06f57719f5 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2463,7 +2463,7 @@ void LLIMMgr::addMessage( { if (LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL) { - show_messages = false; + show_message = false; } } -- cgit v1.3 From 9003c4c54b82cfa2517d264e9437aa294aef5bb9 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Mon, 23 Jan 2012 17:43:05 -0500 Subject: STORM-1795 Small logic/formatting change --- indra/newview/llimview.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 06f57719f5..f621475193 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -2458,16 +2458,10 @@ void LLIMMgr::addMessage( make_ui_sound("UISndNewIncomingIMSession"); } - bool show_message = true; - if (gSavedSettings.getBOOL("VoiceCallsFriendsOnly")) - { - if (LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL) - { - show_message = false; - } - } + bool skip_message = (gSavedSettings.getBOOL("VoiceCallsFriendsOnly") && + LLAvatarTracker::instance().getBuddyInfo(other_participant_id) == NULL); - if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && show_message) + if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !skip_message) { LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg); } -- cgit v1.3 From c104c887c5c3d4e8c84b9d028bb4123701228551 Mon Sep 17 00:00:00 2001 From: Seth ProductEngine Date: Tue, 17 Apr 2012 17:36:22 +0300 Subject: Mac build fix. --- indra/newview/llimview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview/llimview.cpp') diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index c4ea8c0d31..a7c4618fa4 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -171,8 +171,8 @@ void LLIMModel::setActiveSessionID(const LLUUID& session_id) LLIMModel::LLIMModel() { - addNewMsgCallback(LLIMFloater::newIMCallback); - addNewMsgCallback(toast_callback); + addNewMsgCallback(boost::bind(&LLIMFloater::newIMCallback, _1)); + addNewMsgCallback(boost::bind(&toast_callback, _1)); } LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, const uuid_vec_t& ids, bool voice) -- cgit v1.3