Skip to content

Commit

Permalink
chore: unsingletonize UserDataController (#5459)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
pajlada committed Jun 16, 2024
1 parent a714bf0 commit c9a0691
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 13 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
5 changes: 3 additions & 2 deletions src/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ Application::Application(Settings &_settings, const Paths &paths,
, twitch(new TwitchIrcServer)
, ffzBadges(&this->emplace<FfzBadges>())
, seventvBadges(&this->emplace<SeventvBadges>())
, userData(&this->emplace(new UserDataController(paths)))
, userData(new UserDataController(paths))
, sound(&this->emplace<ISoundController>(makeSoundController(_settings)))
, twitchLiveController(&this->emplace<TwitchLiveController>())
, twitchPubSub(new PubSub(TWITCH_PUBSUB_URL))
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -427,7 +428,7 @@ IUserDataController *Application::getUserData()
{
assertInGuiThread();

return this->userData;
return this->userData.get();
}

ISoundController *Application::getSound()
Expand Down
2 changes: 1 addition & 1 deletion src/Application.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ class Application : public IApplication
std::unique_ptr<TwitchIrcServer> twitch;
FfzBadges *const ffzBadges{};
SeventvBadges *const seventvBadges{};
UserDataController *const userData{};
std::unique_ptr<UserDataController> userData;
ISoundController *const sound{};
TwitchLiveController *const twitchLiveController{};
std::unique_ptr<PubSub> twitchPubSub;
Expand Down
5 changes: 0 additions & 5 deletions src/controllers/userdata/UserDataController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,6 @@ UserDataController::UserDataController(const Paths &paths)
this->users = this->setting.getValue();
}

void UserDataController::save()
{
this->sm->save();
}

std::optional<UserData> UserDataController::getUser(const QString &userID) const
{
std::shared_lock lock(this->usersMutex);
Expand Down
6 changes: 1 addition & 5 deletions src/controllers/userdata/UserDataController.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#pragma once

#include "common/Singleton.hpp"
#include "controllers/userdata/UserData.hpp"
#include "util/QStringHash.hpp"
#include "util/RapidjsonHelpers.hpp"
Expand Down Expand Up @@ -30,7 +29,7 @@ class IUserDataController
const QString &colorString) = 0;
};

class UserDataController : public IUserDataController, public Singleton
class UserDataController : public IUserDataController
{
public:
explicit UserDataController(const Paths &paths);
Expand All @@ -43,9 +42,6 @@ class UserDataController : public IUserDataController, public Singleton
void setUserColor(const QString &userID,
const QString &colorString) override;

protected:
void save() override;

private:
void update(std::unordered_map<QString, UserData> &&newUsers);

Expand Down

0 comments on commit c9a0691

Please sign in to comment.