Files
chatterino2/src/singletons/loggingmanager.cpp
Rasmus Karlsson ae26b835b6 Perform initial refactoring work
Things that were once singletons are no longer singletons, but are
instead stored in the "Application" singleton

Some singletons still remain, and some renaming/renamespacing is left
2018-04-27 22:11:19 +02:00

60 lines
1.6 KiB
C++

#include "singletons/loggingmanager.hpp"
#include "application.hpp"
#include "debug/log.hpp"
#include "singletons/pathmanager.hpp"
#include "singletons/settingsmanager.hpp"
#include <QDir>
#include <QStandardPaths>
#include <unordered_map>
namespace chatterino {
namespace singletons {
void LoggingManager::initialize()
{
this->pathManager = getApp()->paths;
}
void LoggingManager::addMessage(const QString &channelName, messages::MessagePtr message)
{
auto app = getApp();
if (!app->settings->enableLogging) {
return;
}
auto it = this->loggingChannels.find(channelName);
if (it == this->loggingChannels.end()) {
auto channel = new LoggingChannel(channelName, this->getDirectoryForChannel(channelName));
channel->addMessage(message);
this->loggingChannels.emplace(channelName,
std::unique_ptr<LoggingChannel>(std::move(channel)));
} else {
it->second->addMessage(message);
}
}
QString LoggingManager::getDirectoryForChannel(const QString &channelName)
{
if (channelName.startsWith("/whispers")) {
return this->pathManager->whispersLogsFolderPath;
} else if (channelName.startsWith("/mentions")) {
return this->pathManager->mentionsLogsFolderPath;
} else {
QString logPath(this->pathManager->channelsLogsFolderPath + QDir::separator() +
channelName);
if (!this->pathManager->createFolder(logPath)) {
debug::Log("Error creating channel logs folder for channel {}", channelName);
}
return logPath;
}
}
} // namespace singletons
} // namespace chatterino