Share message strings across sessions

This commit is contained in:
emeric
2022-08-06 14:58:26 +02:00
parent 22c7416810
commit 671d724241
2 changed files with 54 additions and 26 deletions
+53 -26
View File
@@ -64,6 +64,48 @@
namespace UserInterface {
static
std::shared_ptr<Wt::WMessageResourceBundle>
createMessageResourceBundle()
{
const std::string appRoot {Wt::WApplication::appRoot()};
auto res {std::make_shared<Wt::WMessageResourceBundle>()};
res->use(appRoot + "admin-database");
res->use(appRoot + "admin-initwizard");
res->use(appRoot + "admin-scannercontroller");
res->use(appRoot + "admin-user");
res->use(appRoot + "admin-users");
res->use(appRoot + "artist");
res->use(appRoot + "artists");
res->use(appRoot + "error");
res->use(appRoot + "explore");
res->use(appRoot + "login");
res->use(appRoot + "main");
res->use(appRoot + "mediaplayer");
res->use(appRoot + "messages");
res->use(appRoot + "misc");
res->use(appRoot + "notifications");
res->use(appRoot + "playqueue");
res->use(appRoot + "release");
res->use(appRoot + "releases");
res->use(appRoot + "search");
res->use(appRoot + "settings");
res->use(appRoot + "tracklist");
res->use(appRoot + "tracklists");
res->use(appRoot + "tracks");
return res;
}
static
std::shared_ptr<Wt::WMessageResourceBundle>
getOrCreateMessageBundle()
{
static std::shared_ptr<Wt::WMessageResourceBundle> res {createMessageResourceBundle()};
return res;
}
static constexpr const char* defaultPath {"/releases"};
std::unique_ptr<Wt::WApplication>
@@ -169,32 +211,8 @@ LmsApplication::init()
useStyleSheet("resources/font-awesome/css/font-awesome.min.css");
require("js/mediaplayer.js");
setTitle("LMS");
// Add a resource bundle
messageResourceBundle().use(appRoot() + "admin-database");
messageResourceBundle().use(appRoot() + "admin-initwizard");
messageResourceBundle().use(appRoot() + "admin-scannercontroller");
messageResourceBundle().use(appRoot() + "admin-user");
messageResourceBundle().use(appRoot() + "admin-users");
messageResourceBundle().use(appRoot() + "artist");
messageResourceBundle().use(appRoot() + "artists");
messageResourceBundle().use(appRoot() + "error");
messageResourceBundle().use(appRoot() + "explore");
messageResourceBundle().use(appRoot() + "login");
messageResourceBundle().use(appRoot() + "main");
messageResourceBundle().use(appRoot() + "mediaplayer");
messageResourceBundle().use(appRoot() + "messages");
messageResourceBundle().use(appRoot() + "misc");
messageResourceBundle().use(appRoot() + "notifications");
messageResourceBundle().use(appRoot() + "playqueue");
messageResourceBundle().use(appRoot() + "release");
messageResourceBundle().use(appRoot() + "releases");
messageResourceBundle().use(appRoot() + "search");
messageResourceBundle().use(appRoot() + "settings");
messageResourceBundle().use(appRoot() + "tracklist");
messageResourceBundle().use(appRoot() + "tracklists");
messageResourceBundle().use(appRoot() + "tracks");
setTitle();
setLocalizedStrings(getOrCreateMessageBundle());
// Handle Media Scanner events and other session events
enableUpdates(true);
@@ -599,6 +617,15 @@ LmsApplication::post(std::function<void()> func)
Wt::WServer::instance()->post(LmsApp->sessionId(), std::move(func));
}
void
LmsApplication::setTitle(const Wt::WString& title)
{
if (title.empty())
WApplication::setTitle("LMS");
else
WApplication::setTitle(title + " | LMS");
}
void
LmsApplication::notifyMsg(Notification::Type type, const Wt::WString& category, const Wt::WString& message, std::chrono::milliseconds duration)
{
+1
View File
@@ -75,6 +75,7 @@ class LmsApplication : public Wt::WApplication
// Utils
void post(std::function<void()> func);
void setTitle(const Wt::WString& title = "");
// Used to classify the message sent to the user
void notifyMsg(Notification::Type type, const Wt::WString& category, const Wt::WString& message, std::chrono::milliseconds duration = std::chrono::milliseconds {5000});