(#1874) Disable updates on non-Windows, Linux or macOS platforms (#1914)

* (#1874) Disable update checking for unsupported platforms

As described #1874, only Windows, macOS and GNU/Linux are officially
supplied with builds. Thus checking for updates is unnecessary if we
are e.g. on FreeBSD, OpenBSD, illumos distros and possibly other
Operating Systems.

This fixes #1874 by ifdef-ing the 3 officially supported platforms
when checking for updates. Otherwise a debug warning will be emitted
and in the settings the checkbox for beta-updates is hidden and
replaced by a message, explaining the reason for why there are no beta
updates.

* Update CHANGELOG

In accordance with #1874

* (#1874) Move platform check into checkForUpdates

As discussed in #1914

* (#1874) Move check for supported OS to a seperate function.

As requested in #1914
This commit is contained in:
Nico Sonack 2020-08-24 12:02:56 +02:00 committed by GitHub
parent 1330837a41
commit 930351779c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 4 deletions

View file

@ -2,6 +2,7 @@
## Unversioned ## Unversioned
- Minor: Disable checking for updates on unsupported platforms (#1874)
- Bugfix: Fix bug preventing users from setting the highlight color of the second entry in the "User" highlights tab (#1898) - Bugfix: Fix bug preventing users from setting the highlight color of the second entry in the "User" highlights tab (#1898)
## 2.2.0 ## 2.2.0

View file

@ -32,6 +32,12 @@ Version::Version()
} }
this->fullVersion_ += this->version_; this->fullVersion_ += this->version_;
#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
this->isSupportedOS_ = true;
#else
this->isSupportedOS_ = false;
#endif
} }
const Version &Version::instance() const Version &Version::instance()
@ -60,4 +66,9 @@ const QString &Version::dateOfBuild() const
return this->dateOfBuild_; return this->dateOfBuild_;
} }
const bool &Version::isSupportedOS() const
{
return this->isSupportedOS_;
}
} // namespace chatterino } // namespace chatterino

View file

@ -11,6 +11,8 @@
# define CHATTERINO_OS "macos" # define CHATTERINO_OS "macos"
#elif defined(Q_OS_LINUX) #elif defined(Q_OS_LINUX)
# define CHATTERINO_OS "linux" # define CHATTERINO_OS "linux"
#elif defined(Q_OS_FREEBSD)
# define CHATTERINO_OS "freebsd"
#else #else
# define CHATTERINO_OS "unknown" # define CHATTERINO_OS "unknown"
#endif #endif
@ -26,6 +28,7 @@ public:
const QString &commitHash() const; const QString &commitHash() const;
const QString &dateOfBuild() const; const QString &dateOfBuild() const;
const QString &fullVersion() const; const QString &fullVersion() const;
const bool &isSupportedOS() const;
private: private:
Version(); Version();
@ -34,6 +37,7 @@ private:
QString commitHash_; QString commitHash_;
QString dateOfBuild_; QString dateOfBuild_;
QString fullVersion_; QString fullVersion_;
bool isSupportedOS_;
}; };
}; // namespace chatterino }; // namespace chatterino

View file

@ -232,6 +232,14 @@ void Updates::installUpdates()
void Updates::checkForUpdates() void Updates::checkForUpdates()
{ {
if (!Version::instance().isSupportedOS())
{
qDebug()
<< "Update checking disabled because OS doesn't appear to be one "
"of Windows, GNU/Linux or macOS.";
return;
}
// Disable updates if on nightly and windows. // Disable updates if on nightly and windows.
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
if (Modes::instance().isNightly) if (Modes::instance().isNightly)

View file

@ -5,6 +5,7 @@
#include <QScrollArea> #include <QScrollArea>
#include "Application.hpp" #include "Application.hpp"
#include "common/Version.hpp"
#include "singletons/Fonts.hpp" #include "singletons/Fonts.hpp"
#include "singletons/Paths.hpp" #include "singletons/Paths.hpp"
#include "singletons/Theme.hpp" #include "singletons/Theme.hpp"
@ -540,10 +541,20 @@ void GeneralPage::initLayout(SettingsLayout &layout)
layout.addCheckbox("Title", s.headerStreamTitle); layout.addCheckbox("Title", s.headerStreamTitle);
layout.addTitle("Beta"); layout.addTitle("Beta");
if (Version::instance().isSupportedOS())
{
layout.addDescription( layout.addDescription(
"You can receive updates earlier by ticking the box below. Report " "You can receive updates earlier by ticking the box below. Report "
"issues <a href='https://chatterino.com/link/issues'>here</a>."); "issues <a href='https://chatterino.com/link/issues'>here</a>.");
layout.addCheckbox("Receive beta updates", s.betaUpdates); layout.addCheckbox("Receive beta updates", s.betaUpdates);
}
else
{
layout.addDescription(
"Your operating system is not officially supplied with builds. For "
"updates, please rebuild chatterino from sources. Report "
"issues <a href='https://chatterino.com/link/issues'>here</a>.");
}
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
layout.addTitle("Browser Integration"); layout.addTitle("Browser Integration");