From 20c393321c894adb4cb938a3f865f331c985cda9 Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Thu, 1 Jul 2021 19:24:29 +0100 Subject: [PATCH 1/5] NOISSUE Use constants for user agents Here lies yet another early-stage move to debrand the MultiMC codebase, as well as reducing the burden of updating strings across the codebase for a future MultiMC6. --- api/logic/net/Download.cpp | 3 ++- api/logic/net/PasteUpload.cpp | 3 ++- api/logic/screenshots/ImgurAlbumCreation.cpp | 2 +- api/logic/screenshots/ImgurUpload.cpp | 2 +- buildconfig/BuildConfig.h | 5 +++++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/api/logic/net/Download.cpp b/api/logic/net/Download.cpp index 340f8657..3f183b7d 100644 --- a/api/logic/net/Download.cpp +++ b/api/logic/net/Download.cpp @@ -15,6 +15,7 @@ #include "Download.h" +#include "BuildConfig.h" #include #include #include @@ -94,7 +95,7 @@ void Download::start() return; } - request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0"); + request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT); QNetworkReply *rep = ENV.qnam().get(request); diff --git a/api/logic/net/PasteUpload.cpp b/api/logic/net/PasteUpload.cpp index 3526e207..cb470c49 100644 --- a/api/logic/net/PasteUpload.cpp +++ b/api/logic/net/PasteUpload.cpp @@ -5,6 +5,7 @@ #include #include #include +#include PasteUpload::PasteUpload(QWidget *window, QString text, QString key) : m_window(window) { @@ -34,7 +35,7 @@ bool PasteUpload::validateText() void PasteUpload::executeTask() { QNetworkRequest request(QUrl("https://api.paste.ee/v1/pastes")); - request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)"); + request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED); request.setRawHeader("Content-Type", "application/json"); request.setRawHeader("Content-Length", QByteArray::number(m_jsonContent.size())); diff --git a/api/logic/screenshots/ImgurAlbumCreation.cpp b/api/logic/screenshots/ImgurAlbumCreation.cpp index ff9ec6fd..07ae6fe1 100644 --- a/api/logic/screenshots/ImgurAlbumCreation.cpp +++ b/api/logic/screenshots/ImgurAlbumCreation.cpp @@ -20,7 +20,7 @@ void ImgurAlbumCreation::start() { m_status = Job_InProgress; QNetworkRequest request(m_url); - request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)"); + request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); request.setRawHeader("Authorization", "Client-ID 5b97b0713fba4a3"); request.setRawHeader("Accept", "application/json"); diff --git a/api/logic/screenshots/ImgurUpload.cpp b/api/logic/screenshots/ImgurUpload.cpp index 1585b061..062c589f 100644 --- a/api/logic/screenshots/ImgurUpload.cpp +++ b/api/logic/screenshots/ImgurUpload.cpp @@ -23,7 +23,7 @@ void ImgurUpload::start() finished = false; m_status = Job_InProgress; QNetworkRequest request(m_url); - request.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Uncached)"); + request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED); request.setRawHeader("Authorization", "Client-ID 5b97b0713fba4a3"); request.setRawHeader("Accept", "application/json"); diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index 66d05ae0..07d7a23a 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -31,6 +31,11 @@ public: /// URL for the updater's channel QString CHANLIST_URL; + /// User-Agent to use. + QString USER_AGENT = "MultiMC/5.0"; + /// User-Agent to use for uncached requests. + QString USER_AGENT_UNCACHED = "MultiMC/5.0 (Uncached)"; + /// Google analytics ID QString ANALYTICS_ID; From 4401b9e137a92effb566a82cbe4b904b545f0cdf Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Thu, 1 Jul 2021 19:49:38 +0100 Subject: [PATCH 2/5] NOISSUE Specify Imgur client ID at build time --- CMakeLists.txt | 3 +++ api/logic/screenshots/ImgurAlbumCreation.cpp | 2 +- api/logic/screenshots/ImgurUpload.cpp | 2 +- buildconfig/BuildConfig.cpp.in | 1 + buildconfig/BuildConfig.h | 5 +++++ 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bcf931c0..5e3d6cea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,9 @@ set(MultiMC_META_URL "https://meta.multimc.org/v1/" CACHE STRING "URL to fetch M # paste.ee API key set(MultiMC_PASTE_EE_API_KEY "utLvciUouSURFzfjPxLBf5W4ISsUX4pwBDF7N1AfZ" CACHE STRING "API key you can get from paste.ee when you register an account") +# Imgur API Client ID +set(MultiMC_IMGUR_CLIENT_ID "5b97b0713fba4a3" CACHE STRING "Client ID you can get from Imgur when you register an application") + # Google analytics ID set(MultiMC_ANALYTICS_ID "UA-87731965-2" CACHE STRING "ID you can get from Google analytics") diff --git a/api/logic/screenshots/ImgurAlbumCreation.cpp b/api/logic/screenshots/ImgurAlbumCreation.cpp index 07ae6fe1..1f195f00 100644 --- a/api/logic/screenshots/ImgurAlbumCreation.cpp +++ b/api/logic/screenshots/ImgurAlbumCreation.cpp @@ -22,7 +22,7 @@ void ImgurAlbumCreation::start() QNetworkRequest request(m_url); request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - request.setRawHeader("Authorization", "Client-ID 5b97b0713fba4a3"); + request.setRawHeader("Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toStdString().c_str()); request.setRawHeader("Accept", "application/json"); QStringList hashes; diff --git a/api/logic/screenshots/ImgurUpload.cpp b/api/logic/screenshots/ImgurUpload.cpp index 062c589f..7e95d5ca 100644 --- a/api/logic/screenshots/ImgurUpload.cpp +++ b/api/logic/screenshots/ImgurUpload.cpp @@ -24,7 +24,7 @@ void ImgurUpload::start() m_status = Job_InProgress; QNetworkRequest request(m_url); request.setHeader(QNetworkRequest::UserAgentHeader, BuildConfig.USER_AGENT_UNCACHED); - request.setRawHeader("Authorization", "Client-ID 5b97b0713fba4a3"); + request.setRawHeader("Authorization", QString("Client-ID %1").arg(BuildConfig.IMGUR_CLIENT_ID).toStdString().c_str()); request.setRawHeader("Accept", "application/json"); QFile f(m_shot->m_file.absoluteFilePath()); diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index 577bdcb2..60d417a6 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -33,6 +33,7 @@ Config::Config() VERSION_STR = "@MultiMC_VERSION_STRING@"; NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@"; PASTE_EE_KEY = "@MultiMC_PASTE_EE_API_KEY@"; + IMGUR_CLIENT_ID = "@MultiMC_IMGUR_CLIENT_ID@"; META_URL = "@MultiMC_META_URL@"; BUG_TRACKER_URL = "@MultiMC_BUG_TRACKER_URL@"; diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index 07d7a23a..185bebad 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -65,6 +65,11 @@ public: */ QString PASTE_EE_KEY; + /** + * Client ID you can get from Imgur when you register an application + */ + QString IMGUR_CLIENT_ID; + /** * MultiMC Metadata repository URL prefix */ From 66fde9e6b7cfb9fe7cdf30b0aa0432cd892b6a7a Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Tue, 13 Jul 2021 15:42:44 +0100 Subject: [PATCH 3/5] NOISSUE Correct trending URL string for Technic packs This seems to have just been an inadvertent mistake when copy-pasting. This commit just removes an annoying warning. --- application/pages/modplatform/technic/TechnicModel.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/application/pages/modplatform/technic/TechnicModel.cpp b/application/pages/modplatform/technic/TechnicModel.cpp index a240a94a..def30783 100644 --- a/application/pages/modplatform/technic/TechnicModel.cpp +++ b/application/pages/modplatform/technic/TechnicModel.cpp @@ -95,9 +95,7 @@ void Technic::ListModel::performSearch() NetJob *netJob = new NetJob("Technic::Search"); QString searchUrl = ""; if (currentSearchTerm.isEmpty()) { - searchUrl = QString( - "https://api.technicpack.net/trending?build=multimc" - ).arg(currentSearchTerm); + searchUrl = "https://api.technicpack.net/trending?build=multimc"; } else { From d63ef939bec200f9c510cbc2ae50531802ff7bfc Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Tue, 13 Jul 2021 16:02:04 +0100 Subject: [PATCH 4/5] NOISSUE Update Patreon logo The logo was taken from Patreon's brand assets [1] archive, and shrunk to size with KolourPaint. [1] https://www.patreon.com/brand --- .../resources/multimc/16x16/patreon.png | Bin 682 -> 840 bytes .../resources/multimc/22x22/patreon.png | Bin 976 -> 939 bytes .../resources/multimc/24x24/patreon.png | Bin 1034 -> 977 bytes .../resources/multimc/32x32/patreon.png | Bin 1450 -> 1086 bytes .../resources/multimc/48x48/patreon.png | Bin 2317 -> 1390 bytes .../resources/multimc/64x64/patreon.png | Bin 3212 -> 1667 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/application/resources/multimc/16x16/patreon.png b/application/resources/multimc/16x16/patreon.png index cde2b326d1ad6d8e36a4e1ca0ba189cfea87d04f..9150c478fae1b5da24d9c6c4921413e186571b1b 100644 GIT binary patch delta 817 zcmV-11J3-a1;_@FB!A&)Lqkw=Qb$4n02q~HU|>AW00c}93=Fw>B}GB*P6`o`Q3?!5 zAThbPfB`pPWMKGq4MZ|9T-FUNVdcl878~F!0$K>9KLD{vI+)GK0%9jY*b*Ric}YPD zkgWq^Cl?ff*gzLE@DzmvIRn`~K(<0U5<3ZroswFd3}oj3*?;i}zva(oV6gbYz`#5a zA(k|afnj?)1B1jJgqX@g1_u6C28L~y5n`YH!Tx0wJ5-WdQ34Y2(|2SjNGwVOOEZH4 zG%byR;nQ*k2Hr>p2H^_~3|!F=cYpzFF)*M>3@1VW0CLzigrgrvvj6}932;bRa{vGr z5&!@f5&>tQ(tlC_007;3R9JLaO-wptZ*4ANWN%_+E_iKl000=3Wl+lwf-n%g^A$}! z(*@K6P2nQ(W;C9>0v07oOWGRh-%EL!XivMd)0x?2mfEImxXF=io8h^cEu&)I(Z-ggPU8-LSMfUfIEw z?-{;+3zJ)4=+!7P>ttM)s%}j!1#*2}$d^elo;c$hjZ9sAorESsXi~}s+yp`rz@qKs z9ZHX?=DoAiPeTTO*qjA^!i<~3v})=xSk9JuA98A9@=(5APXGV`BuPX;R5*>Lk+Dhx zQ4~baJbxCu6n08_u~*SbHc6L_*jm|(g;o{{R(^u`88(}UAc>1M!A7waY(%h;G$KLb zUJKozyj@Aiz^m@exx;-hp=6b40dxU?X;Vqu%!XErDx_`)v51*N++ud3%T_D%IIsX| z`un9*!*De^B2^o)4wR8*L3L1UmB#TefG?{>8-L*Tk>q!lkhZNFZ50AA9Rhy%kKBQQ z^8gmsXE5gf4+BspY|Qx$Qdi2Yp5L_O1KisaSbv0gO7Q;Z0hApF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^7j^FlWO00J3F zL_t(IPkobJXw7jL$B#mk8@X}Gg}kJ*ElP?jZV-jSnX?cpN`EqYAUF3d|_!?fn?Z1(Ye&h!5#FUM2g{=et#`+uJ2_xvJ%3Q!=Vgf1Zy zz|QqTeh~Jz$T?bQV4#192N&V|J~&+h&E;^V2HLN}U}i`$$1OHUa|x1f(ftq(uY}rV zkc>l1CA3z-$$w3bQ=8%SQ-yL<7!{;v2^x6O4twW9VgcO0pu)dfpi3sL3a-J4^>B2x zNS>HA6($#C%icc^_RN7d9p-fDc`tkj6vzt|Zpy~-Rf&!2 zziyRAw-(OshHoF;cefP|%!hmDOgm--T^w2t8^=R`pMM!esU&O1s9)%tGX7I90CPDdh+47)rCRELaU9+I~v&R_W!Nqn;8-dE7>H#M2oD z6pw=~6JXn9D3iZb-`+1CQ@zM5%SjNEIYfLotQ({2UE%(|9uZH}jTD>Kk(jnqv{(*T7c4b^P+=a<>!8-lO0Y1Ayyb`@rieCqbV5IbkUk(hcu6P9hS s^0#+jEBQa@AAW00c}93=Fw>B}GB*P6`o`Q3?!5 zAThbPfB`pPWMKGq4MZ|9T-FUNVdcl878~F!0$K>9KLD{vI+)GK0%9jY*b*Ric}YPD zkgWq^Cl?ff*gzLE@DzmvIRn`~K(<0U5<3ZroswFd3}oj3*?;i}zva(oV6gbYz`#5a zA(k|afnj?)1B1jJgqX@g1_u6C28L~y5n`YH!Tx0wJ5-WdQ34Y2(|2SjNGwVOOEZH4 zG%byR;nQ*k2Hr>p2H^_~3|!F=cYpzFF)*M>3@1VW0CLzigrgrvvj6}932;bRa{vGr z5&!@f5&>tQ(tlC_007;3R9JLaO-wptZ*4ANWN%_+E_iKl000=3Wl+lwf-n%g^A$}! z(*@K6P2nQ(W;C9>0v07oOWGRh-%EL!XivMd)0x?2mfEImxXF=io8h^cEu&)I(Z-ggPU8-LSMfUfIEw z?-{;+3zJ)4=+!7P>ttM)s%}j!1#*2}$d^elo;c$hjZ9sAorESsXi~}s+yp`rz@qKs z9ZHX?=DoAiPeTTO*qjA^!i<~3v})=xSk9JuA98A9@=(5APXGV`he*)iFz3 zQ5eSY|9^W3C~_4CQ7B{*KS6a+p^bNthMF#gQb&i5egKzFE_N%@!L5s<5J?P@Lbxrc zi?)kjK)N`q2sV124mTo7y!R%U!3Xa0o^yWZJ@0a%M==1+l|Ew(#3k)nqgrXVS+5o* za2DdoBY%b2G5+F*MbX8>y}1^@42-mDUx9nD!hhm8 zbbWiqr9DaE+ZmKQ1d5nhn@0};tGK}(6$<^CV9maJ0d5;(IIRI-9t*x@>$uOaayOzZ zS<>s$R3fZGApjOTK*7v#`jiMmFbUTG`1+&xYzoX+$7r04(J$_8HVkxtut z5@MHTbJ~8@|K65!>79T@)v{hL)EVRhju0siTwxsJ*|MLNgNJ7_!2otty#&6uzSN|S rqT4(_IG(Xszxy?@*Q?8(B>w>pdUZm39}bY!00000NkvXXu0mjf`e=_h delta 954 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 bTD15OnQqQ+%qp!500000NkvXXu0mjfT>Vs> diff --git a/application/resources/multimc/64x64/patreon.png b/application/resources/multimc/64x64/patreon.png index 7b4814ec6d654099277a0e157ac5e145e65aa5b6..ef5d690ebf9e4dd895df66a08203c90271a5634d 100644 GIT binary patch delta 1650 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 From 74f5255eef8b14455ca741c5004a97cd00fed667 Mon Sep 17 00:00:00 2001 From: Jamie Mansfield Date: Tue, 13 Jul 2021 16:59:33 +0100 Subject: [PATCH 5/5] GH-3930 Track duration of previous game sessions --- api/logic/BaseInstance.cpp | 17 ++++++++++++++++- api/logic/BaseInstance.h | 1 + api/logic/minecraft/MinecraftInstance.cpp | 10 ++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/api/logic/BaseInstance.cpp b/api/logic/BaseInstance.cpp index cff16631..46b45827 100644 --- a/api/logic/BaseInstance.cpp +++ b/api/logic/BaseInstance.cpp @@ -37,6 +37,7 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s m_settings->registerSetting("notes", ""); m_settings->registerSetting("lastLaunchTime", 0); m_settings->registerSetting("totalTimePlayed", 0); + m_settings->registerSetting("lastTimePlayed", 0); // Custom Commands auto commandSetting = m_settings->registerSetting({"OverrideCommands","OverrideLaunchCmd"}, false); @@ -146,9 +147,12 @@ void BaseInstance::setRunning(bool running) } else { - qint64 current = settings()->get("totalTimePlayed").toLongLong(); QDateTime timeEnded = QDateTime::currentDateTime(); + + qint64 current = settings()->get("totalTimePlayed").toLongLong(); settings()->set("totalTimePlayed", current + m_timeStarted.secsTo(timeEnded)); + settings()->set("lastTimePlayed", m_timeStarted.secsTo(timeEnded)); + emit propertiesChanged(this); } @@ -166,9 +170,20 @@ int64_t BaseInstance::totalTimePlayed() const return current; } +int64_t BaseInstance::lastTimePlayed() const +{ + if(m_isRunning) + { + QDateTime timeNow = QDateTime::currentDateTime(); + return m_timeStarted.secsTo(timeNow); + } + return settings()->get("lastTimePlayed").toLongLong(); +} + void BaseInstance::resetTimePlayed() { settings()->reset("totalTimePlayed"); + settings()->reset("lastTimePlayed"); } QString BaseInstance::instanceType() const diff --git a/api/logic/BaseInstance.h b/api/logic/BaseInstance.h index 64de4bb3..d250e03e 100644 --- a/api/logic/BaseInstance.h +++ b/api/logic/BaseInstance.h @@ -87,6 +87,7 @@ public: void setRunning(bool running); bool isRunning() const; int64_t totalTimePlayed() const; + int64_t lastTimePlayed() const; void resetTimePlayed(); /// get the type of this instance diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp index ea1e47b6..dbf9f816 100644 --- a/api/logic/minecraft/MinecraftInstance.cpp +++ b/api/logic/minecraft/MinecraftInstance.cpp @@ -798,9 +798,15 @@ QString MinecraftInstance::getStatusbarDescription() QString description; description.append(tr("Minecraft %1 (%2)").arg(m_components->getComponentVersion("net.minecraft")).arg(typeName())); - if(m_settings->get("ShowGameTime").toBool() && totalTimePlayed() > 0) + if(m_settings->get("ShowGameTime").toBool()) { - description.append(tr(", played for %1").arg(prettifyTimeDuration(totalTimePlayed()))); + if (lastTimePlayed() > 0) { + description.append(tr(", last played for %1").arg(prettifyTimeDuration(lastTimePlayed()))); + } + + if (totalTimePlayed() > 0) { + description.append(tr(", total played for %1").arg(prettifyTimeDuration(totalTimePlayed()))); + } } if(hasCrashed()) {