From c9a0691f532566cd5da279aba293341ca3c8dec5 Mon Sep 17 00:00:00 2001 From: pajlada Date: Sun, 16 Jun 2024 13:59:12 +0200 Subject: [PATCH] chore: unsingletonize UserDataController (#5459) The `user-data.json` file will save immediately on change, and on exit (on dtor) if necessary. So we don't need to manually call save --- CHANGELOG.md | 1 + src/Application.cpp | 5 +++-- src/Application.hpp | 2 +- src/controllers/userdata/UserDataController.cpp | 5 ----- src/controllers/userdata/UserDataController.hpp | 6 +----- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 078d0ee4..3b43a309 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ - Dev: Images are now loaded in worker threads. (#5431) - Dev: Qt Creator now auto-configures Conan when loading the project and skips vcpkg. (#5305) - Dev: The MSVC CRT is now bundled with Chatterino as it depends on having a recent version installed. (#5447) +- Dev: Refactor/unsingletonize `UserDataController`. (#5459) ## 2.5.1 diff --git a/src/Application.cpp b/src/Application.cpp index 5a932392..a3017302 100644 --- a/src/Application.cpp +++ b/src/Application.cpp @@ -135,7 +135,7 @@ Application::Application(Settings &_settings, const Paths &paths, , twitch(new TwitchIrcServer) , ffzBadges(&this->emplace()) , seventvBadges(&this->emplace()) - , userData(&this->emplace(new UserDataController(paths))) + , userData(new UserDataController(paths)) , sound(&this->emplace(makeSoundController(_settings))) , twitchLiveController(&this->emplace()) , twitchPubSub(new PubSub(TWITCH_PUBSUB_URL)) @@ -173,6 +173,7 @@ void Application::fakeDtor() this->seventvEmotes.reset(); // this->twitch.reset(); this->fonts.reset(); + this->userData.reset(); } void Application::initialize(Settings &settings, const Paths &paths) @@ -427,7 +428,7 @@ IUserDataController *Application::getUserData() { assertInGuiThread(); - return this->userData; + return this->userData.get(); } ISoundController *Application::getSound() diff --git a/src/Application.hpp b/src/Application.hpp index d2c0e2fa..4cce1aa8 100644 --- a/src/Application.hpp +++ b/src/Application.hpp @@ -160,7 +160,7 @@ private: std::unique_ptr twitch; FfzBadges *const ffzBadges{}; SeventvBadges *const seventvBadges{}; - UserDataController *const userData{}; + std::unique_ptr userData; ISoundController *const sound{}; TwitchLiveController *const twitchLiveController{}; std::unique_ptr twitchPubSub; diff --git a/src/controllers/userdata/UserDataController.cpp b/src/controllers/userdata/UserDataController.cpp index 3f8029cb..dc79f16a 100644 --- a/src/controllers/userdata/UserDataController.cpp +++ b/src/controllers/userdata/UserDataController.cpp @@ -37,11 +37,6 @@ UserDataController::UserDataController(const Paths &paths) this->users = this->setting.getValue(); } -void UserDataController::save() -{ - this->sm->save(); -} - std::optional UserDataController::getUser(const QString &userID) const { std::shared_lock lock(this->usersMutex); diff --git a/src/controllers/userdata/UserDataController.hpp b/src/controllers/userdata/UserDataController.hpp index 3be1f260..49edbde7 100644 --- a/src/controllers/userdata/UserDataController.hpp +++ b/src/controllers/userdata/UserDataController.hpp @@ -1,6 +1,5 @@ #pragma once -#include "common/Singleton.hpp" #include "controllers/userdata/UserData.hpp" #include "util/QStringHash.hpp" #include "util/RapidjsonHelpers.hpp" @@ -30,7 +29,7 @@ public: const QString &colorString) = 0; }; -class UserDataController : public IUserDataController, public Singleton +class UserDataController : public IUserDataController { public: explicit UserDataController(const Paths &paths); @@ -43,9 +42,6 @@ public: void setUserColor(const QString &userID, const QString &colorString) override; -protected: - void save() override; - private: void update(std::unordered_map &&newUsers);