FIRE-36144 Add confirmation for global online status change

I considered using a local variable instead of a debug setting, but in the end I decided not to clutter the header file any further just to satisfy a function that's used once in a blue moon

Signed-off-by: PanteraPolnocy <panterapolnocy@gmail.com>
master
PanteraPolnocy 2025-11-24 20:43:58 +01:00
parent 7aa8bbe9cf
commit af7d4d8b27
5 changed files with 56 additions and 1 deletions

View File

@ -365,6 +365,19 @@
<key>Value</key>
<integer>1</integer>
</map>
<key>GlobalOnlineStatusCurrentlyReverting</key>
<map>
<key>Comment</key>
<string>Flag to prevent infinite loop when reverting the setting on cancel</string>
<key>HideFromEditor</key>
<integer>1</integer>
<key>Persist</key>
<integer>0</integer>
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
</map>
<key>InstantMessageLogPath</key>
<map>
<key>Comment</key>

View File

@ -896,7 +896,26 @@ void handleUsernameFormatOptionChanged(const LLSD& newvalue)
// <FS:Ansariel> Global online status toggle
void handleGlobalOnlineStatusChanged(const LLSD& newvalue)
{
if (!gSavedPerAccountSettings.getBOOL("GlobalOnlineStatusCurrentlyReverting"))
{
bool visible = newvalue.asBoolean();
LLSD payload;
payload["visible"] = visible;
LLNotificationsUtil::add("ConfirmGlobalOnlineStatusToggle", LLSD(), payload, applyGlobalOnlineStatusChange);
}
}
void applyGlobalOnlineStatusChange(const LLSD& notification, const LLSD& response)
{
bool visible = notification["payload"]["visible"].asBoolean();
S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
if (option != 0)
{
gSavedPerAccountSettings.setBOOL("GlobalOnlineStatusCurrentlyReverting", true);
gSavedPerAccountSettings.setBOOL("GlobalOnlineStatusToggle", !visible);
gSavedPerAccountSettings.setBOOL("GlobalOnlineStatusCurrentlyReverting", false);
return;
}
LLAvatarTracker::buddy_map_t all_buddies;
LLAvatarTracker::instance().copyBuddyList(all_buddies);

View File

@ -61,4 +61,8 @@ extern LLControlGroup gCrashSettings;
// Set after settings loaded
extern std::string gLastRunVersion;
// <FS> Global online status toggle
void applyGlobalOnlineStatusChange(const LLSD& notification, const LLSD& response);
// </FS>
#endif // LL_LLVIEWERCONTROL_H

View File

@ -14128,6 +14128,19 @@ the region &quot;[REGION]&quot;?
name="okbutton"
yestext="OK"/>
</notification>
<notification
icon="alertmodal.tga"
name="ConfirmGlobalOnlineStatusToggle"
type="alertmodal">
Are you sure you want to change your online status visibility for all friends at once?
Due to server load, this mass change can take a while to become effective and may cause temporary issues for some friends seeing your online status.
<tag>confirm</tag>
<usetemplate
name="okcancelbuttons"
notext="Cancel"
yestext="OK"/>
</notification>
<notification
icon="alertmodal.tga"
name="GlobalOnlineStatusToggle"

View File

@ -5280,6 +5280,12 @@ Czy chcesz autoryzować [APP_NAME] do przesyłania zdjęć na Flickr?
<notification name="PickLimitReached">
Nie można utworzyć kolejnego Miejsca, ponieważ limit ich ilości został osiągnięty.
</notification>
<notification name="ConfirmGlobalOnlineStatusToggle">
Czy na pewno chcesz zmienić widoczność swojego statusu online dla wszystkich znajomych naraz?
Ze względu na obciążenie serwera taka masowa zmiana może chwilę potrwać i tymczasowo powodować problemy z wyświetlaniem Twojego statusu online u niektórych znajomych.
<usetemplate name="okcancelbuttons" notext="Anuluj" />
</notification>
<notification name="GlobalOnlineStatusToggle">
Ze względu na obciążenie serwera masowa zmiana widoczności online może zająć trochę czasu. Prosimy o cierpliwość.
<usetemplate ignoretext="Informuj mnie, że masowa zmiana widoczności online może zająć trochę czasu" name="okignore" />