|
|
|
@ -61,9 +61,7 @@ ProfileManager::ProfileManager() {
|
|
|
|
|
OpenUser(*GetUser(current));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ProfileManager::~ProfileManager() {
|
|
|
|
|
WriteUserSaveFile();
|
|
|
|
|
}
|
|
|
|
|
ProfileManager::~ProfileManager() = default;
|
|
|
|
|
|
|
|
|
|
/// After a users creation it needs to be "registered" to the system. AddToProfiles handles the
|
|
|
|
|
/// internal management of the users profiles
|
|
|
|
@ -113,6 +111,8 @@ Result ProfileManager::CreateNewUser(UUID uuid, const ProfileUsername& username)
|
|
|
|
|
return ERROR_USER_ALREADY_EXISTS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
is_save_needed = true;
|
|
|
|
|
|
|
|
|
|
return AddUser({
|
|
|
|
|
.user_uuid = uuid,
|
|
|
|
|
.username = username,
|
|
|
|
@ -326,6 +326,9 @@ bool ProfileManager::RemoveUser(UUID uuid) {
|
|
|
|
|
profiles[*index] = ProfileInfo{};
|
|
|
|
|
std::stable_partition(profiles.begin(), profiles.end(),
|
|
|
|
|
[](const ProfileInfo& profile) { return profile.user_uuid.IsValid(); });
|
|
|
|
|
|
|
|
|
|
is_save_needed = true;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -340,6 +343,8 @@ bool ProfileManager::SetProfileBase(UUID uuid, const ProfileBase& profile_new) {
|
|
|
|
|
profile.username = profile_new.username;
|
|
|
|
|
profile.creation_time = profile_new.timestamp;
|
|
|
|
|
|
|
|
|
|
is_save_needed = true;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -348,6 +353,7 @@ bool ProfileManager::SetProfileBaseAndData(Common::UUID uuid, const ProfileBase&
|
|
|
|
|
const auto index = GetUserIndex(uuid);
|
|
|
|
|
if (index.has_value() && SetProfileBase(uuid, profile_new)) {
|
|
|
|
|
profiles[*index].data = data_new;
|
|
|
|
|
is_save_needed = true;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -391,6 +397,10 @@ void ProfileManager::ParseUserSaveFile() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ProfileManager::WriteUserSaveFile() {
|
|
|
|
|
if (!is_save_needed) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ProfileDataRaw raw{};
|
|
|
|
|
|
|
|
|
|
for (std::size_t i = 0; i < MAX_USERS; ++i) {
|
|
|
|
@ -423,7 +433,10 @@ void ProfileManager::WriteUserSaveFile() {
|
|
|
|
|
if (!save.IsOpen() || !save.SetSize(sizeof(ProfileDataRaw)) || !save.WriteObject(raw)) {
|
|
|
|
|
LOG_WARNING(Service_ACC, "Failed to write save data to file... No changes to user data "
|
|
|
|
|
"made in current session will be saved.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
is_save_needed = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}; // namespace Service::Account
|
|
|
|
|