Changed how the channel live status is stored
This commit is contained in:
@@ -24,7 +24,6 @@ TwitchChannel::TwitchChannel(const QString &channelName, Communi::IrcConnection
|
||||
, subscriptionURL("https://www.twitch.tv/subs/" + name)
|
||||
, channelURL("https://twitch.tv/" + name)
|
||||
, popoutPlayerURL("https://player.twitch.tv/?channel=" + name)
|
||||
, isLive(false)
|
||||
, mod(false)
|
||||
, readConnecetion(_readConnection)
|
||||
{
|
||||
@@ -176,11 +175,16 @@ void TwitchChannel::addRecentChatter(const std::shared_ptr<messages::Message> &m
|
||||
|
||||
void TwitchChannel::setLive(bool newLiveStatus)
|
||||
{
|
||||
if (this->isLive == newLiveStatus) {
|
||||
return;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(this->streamStatusMutex);
|
||||
if (this->streamStatus.live == newLiveStatus) {
|
||||
// Nothing changed
|
||||
return;
|
||||
}
|
||||
|
||||
this->streamStatus.live = newLiveStatus;
|
||||
}
|
||||
|
||||
this->isLive = newLiveStatus;
|
||||
this->onlineStatusChanged();
|
||||
}
|
||||
|
||||
@@ -239,13 +243,17 @@ void TwitchChannel::refreshLiveStatus()
|
||||
}
|
||||
|
||||
// Stream is live
|
||||
channel->streamViewerCount = QString::number(stream["viewers"].GetInt());
|
||||
channel->streamGame = stream["game"].GetString();
|
||||
channel->streamStatus = streamChannel["status"].GetString();
|
||||
QDateTime since = QDateTime::fromString(stream["created_at"].GetString(), Qt::ISODate);
|
||||
auto diff = since.secsTo(QDateTime::currentDateTime());
|
||||
channel->streamUptime =
|
||||
QString::number(diff / 3600) + "h " + QString::number(diff % 3600 / 60) + "m";
|
||||
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(channel->streamStatusMutex);
|
||||
channel->streamStatus.viewerCount = stream["viewers"].GetUint();
|
||||
channel->streamStatus.game = stream["game"].GetString();
|
||||
channel->streamStatus.title = streamChannel["status"].GetString();
|
||||
QDateTime since = QDateTime::fromString(stream["created_at"].GetString(), Qt::ISODate);
|
||||
auto diff = since.secsTo(QDateTime::currentDateTime());
|
||||
channel->streamStatus.uptime =
|
||||
QString::number(diff / 3600) + "h " + QString::number(diff % 3600 / 60) + "m";
|
||||
}
|
||||
|
||||
channel->setLive(true);
|
||||
});
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "singletons/ircmanager.hpp"
|
||||
#include "util/concurrentmap.hpp"
|
||||
|
||||
#include <mutex>
|
||||
|
||||
namespace chatterino {
|
||||
namespace providers {
|
||||
namespace twitch {
|
||||
@@ -20,6 +22,14 @@ class TwitchChannel final : public Channel
|
||||
QTimer *chattersListTimer;
|
||||
|
||||
public:
|
||||
struct StreamStatus {
|
||||
bool live = false;
|
||||
unsigned viewerCount = 0;
|
||||
QString title;
|
||||
QString game;
|
||||
QString uptime;
|
||||
};
|
||||
|
||||
~TwitchChannel() final;
|
||||
|
||||
void reloadChannelEmotes();
|
||||
@@ -50,23 +60,33 @@ public:
|
||||
boost::signals2::signal<void()> userStateChanged;
|
||||
|
||||
QString roomID;
|
||||
bool isLive;
|
||||
QString streamViewerCount;
|
||||
QString streamStatus;
|
||||
QString streamGame;
|
||||
QString streamUptime;
|
||||
|
||||
StreamStatus GetStreamStatus() const
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(this->streamStatusMutex);
|
||||
return this->streamStatus;
|
||||
}
|
||||
|
||||
struct NameOptions {
|
||||
QString displayName;
|
||||
QString localizedName;
|
||||
};
|
||||
|
||||
bool IsLive() const
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(this->streamStatusMutex);
|
||||
return this->streamStatus.live;
|
||||
}
|
||||
|
||||
private:
|
||||
explicit TwitchChannel(const QString &channelName, Communi::IrcConnection *readConnection);
|
||||
|
||||
void setLive(bool newLiveStatus);
|
||||
void refreshLiveStatus();
|
||||
|
||||
mutable std::mutex streamStatusMutex;
|
||||
StreamStatus streamStatus;
|
||||
|
||||
void fetchRecentMessages();
|
||||
|
||||
boost::signals2::connection connectedConnection;
|
||||
|
||||
Reference in New Issue
Block a user