Support modern event slurls

This commit is contained in:
Lirusaito
2019-07-01 20:31:09 -04:00
parent ce42937e3f
commit 0197a47007
2 changed files with 46 additions and 24 deletions

View File

@@ -43,8 +43,54 @@
#include "llfloaterworldmap.h"
#include "llagent.h"
#include "llappviewer.h" // for gPacificDaylightTime
#include "llcommandhandler.h" // secondlife:///app/... support
#include "llviewercontrol.h"
class LLEventHandler : public LLCommandHandler
{
public:
// requires trusted browser to trigger
LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { }
bool handle(const LLSD& params, const LLSD& query_map,
LLMediaCtrl* web)
{
if (params.size() < 2)
{
return false;
}
std::string event_command = params[1].asString();
S32 event_id = params[0].asInteger();
if (event_command == "about" || event_command == "details")
{
LLFloaterEventInfo::show(event_id);
return true;
}
else if(event_command == "notify")
{
// we're adding or removing a notification, so grab the date, name and notification bool
if (params.size() < 3)
{
return false;
}
if(params[2].asString() == "enable")
{
gEventNotifier.add(event_id);
// tell the server to modify the database as this was a slurl event notification command
gEventNotifier.serverPushRequest(event_id, true);
}
else
{
gEventNotifier.remove(event_id);
}
return true;
}
return false;
}
};
LLEventHandler gEventHandler;
LLEventNotifier gEventNotifier;
LLEventNotifier::LLEventNotifier()

View File

@@ -36,7 +36,6 @@
#include "llfloaterevent.h"
// viewer project includes
#include "llcommandhandler.h"
#include "llpanelevent.h"
// linden library includes
@@ -52,29 +51,6 @@
LLMap< U32, LLFloaterEventInfo* > gEventInfoInstances;
class LLEventHandler : public LLCommandHandler
{
public:
// requires trusted browser to trigger
LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { }
bool handle(const LLSD& tokens, const LLSD& query_map,
LLMediaCtrl* web)
{
if (tokens.size() < 2)
{
return false;
}
U32 event_id = tokens[0].asInteger();
if (tokens[1].asString() == "about")
{
LLFloaterEventInfo::show(event_id);
return true;
}
return false;
}
};
LLEventHandler gEventHandler;
LLFloaterEventInfo::LLFloaterEventInfo(const std::string& name, const U32 event_id)
: LLFloater(name),
mEventID( event_id )