mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
fixed removing accounts
This commit is contained in:
parent
6156b1f430
commit
5ba62997fc
|
@ -43,17 +43,6 @@ void AccountController::load()
|
||||||
AccountModel *AccountController::createModel(QObject *parent)
|
AccountModel *AccountController::createModel(QObject *parent)
|
||||||
{
|
{
|
||||||
AccountModel *model = new AccountModel(parent);
|
AccountModel *model = new AccountModel(parent);
|
||||||
// model->accountRemoved.connect([this](const auto &account) {
|
|
||||||
// switch (account->getProviderId()) {
|
|
||||||
// case ProviderId::Twitch: {
|
|
||||||
// auto &accs = this->twitch.accounts.getVector();
|
|
||||||
// auto it = std::find(accs.begin(), accs.end(), account);
|
|
||||||
// assert(it != accs.end());
|
|
||||||
|
|
||||||
// this->twitch.accounts.removeItem(it - accs.begin());
|
|
||||||
// } break;
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
model->init(&this->accounts);
|
model->init(&this->accounts);
|
||||||
return model;
|
return model;
|
||||||
|
|
|
@ -15,6 +15,9 @@ TwitchAccountManager::TwitchAccountManager()
|
||||||
auto currentUser = this->getCurrent();
|
auto currentUser = this->getCurrent();
|
||||||
currentUser->loadIgnores();
|
currentUser->loadIgnores();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this->accounts.itemRemoved.connect(
|
||||||
|
[this](const auto &acc) { this->removeUser(acc.item.get()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<TwitchAccount> TwitchAccountManager::getCurrent()
|
std::shared_ptr<TwitchAccount> TwitchAccountManager::getCurrent()
|
||||||
|
@ -134,35 +137,16 @@ void TwitchAccountManager::load()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TwitchAccountManager::removeUser(const QString &username)
|
bool TwitchAccountManager::removeUser(TwitchAccount *account)
|
||||||
{
|
{
|
||||||
if (!this->userExists(username)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::lock_guard<std::mutex> guard(this->mutex);
|
|
||||||
|
|
||||||
const auto &accs = this->accounts.getVector();
|
const auto &accs = this->accounts.getVector();
|
||||||
|
|
||||||
while (true) {
|
std::string userID(account->getUserId().toStdString());
|
||||||
auto it = std::find_if(accs.begin(), accs.end(),
|
|
||||||
[&](const auto &acc) { return acc->getUserName() == username; });
|
|
||||||
|
|
||||||
if (it == accs.end()) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string userID(it->get()->getUserId().toStdString());
|
|
||||||
if (!userID.empty()) {
|
if (!userID.empty()) {
|
||||||
pajlada::Settings::SettingManager::removeSetting("/accounts/uid" + userID);
|
pajlada::Settings::SettingManager::removeSetting("/accounts/uid" + userID);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->accounts.removeItem(int(it - accs.begin()));
|
if (account->getUserName() == qS(this->currentUsername.getValue())) {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (username == qS(this->currentUsername.getValue())) {
|
|
||||||
// The user that was removed is the current user, log into the anonymous user
|
// The user that was removed is the current user, log into the anonymous user
|
||||||
this->currentUsername = "";
|
this->currentUsername = "";
|
||||||
}
|
}
|
||||||
|
@ -197,7 +181,7 @@ TwitchAccountManager::AddUserResponse TwitchAccountManager::addUser(
|
||||||
auto newUser = std::make_shared<TwitchAccount>(userData.username, userData.oauthToken,
|
auto newUser = std::make_shared<TwitchAccount>(userData.username, userData.oauthToken,
|
||||||
userData.clientID, userData.userID);
|
userData.clientID, userData.userID);
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lock(this->mutex);
|
// std::lock_guard<std::mutex> lock(this->mutex);
|
||||||
|
|
||||||
this->accounts.insertItem(newUser);
|
this->accounts.insertItem(newUser);
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,6 @@ public:
|
||||||
void reloadUsers();
|
void reloadUsers();
|
||||||
void load();
|
void load();
|
||||||
|
|
||||||
bool removeUser(const QString &username);
|
|
||||||
|
|
||||||
pajlada::Settings::Setting<std::string> currentUsername = {"/accounts/current", ""};
|
pajlada::Settings::Setting<std::string> currentUsername = {"/accounts/current", ""};
|
||||||
pajlada::Signals::NoArgSignal currentUserChanged;
|
pajlada::Signals::NoArgSignal currentUserChanged;
|
||||||
pajlada::Signals::NoArgSignal userListUpdated;
|
pajlada::Signals::NoArgSignal userListUpdated;
|
||||||
|
@ -64,11 +62,11 @@ private:
|
||||||
UserAdded,
|
UserAdded,
|
||||||
};
|
};
|
||||||
AddUserResponse addUser(const UserData &data);
|
AddUserResponse addUser(const UserData &data);
|
||||||
|
bool removeUser(TwitchAccount *account);
|
||||||
|
|
||||||
std::shared_ptr<TwitchAccount> currentUser;
|
std::shared_ptr<TwitchAccount> currentUser;
|
||||||
|
|
||||||
std::shared_ptr<TwitchAccount> anonymousUser;
|
std::shared_ptr<TwitchAccount> anonymousUser;
|
||||||
// std::vector<std::shared_ptr<TwitchAccount>> users;
|
|
||||||
mutable std::mutex mutex;
|
mutable std::mutex mutex;
|
||||||
|
|
||||||
friend class chatterino::controllers::accounts::AccountController;
|
friend class chatterino::controllers::accounts::AccountController;
|
||||||
|
|
Loading…
Reference in a new issue