mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Add Database::user_general_messages()
This commit is contained in:
@@ -178,6 +178,19 @@ public:
|
||||
virtual std::vector<Message> GetGeneralMessages(
|
||||
bool evaluateConditions = false) const = 0;
|
||||
|
||||
/**
|
||||
* @brief Get all general messages listed in the loaded userlist.
|
||||
* @param evaluateConditions
|
||||
* If true, any metadata conditions are evaluated before the metadata
|
||||
* is returned, otherwise unevaluated metadata is returned. Evaluating
|
||||
* general message conditions also clears the condition cache before
|
||||
* evaluating conditions.
|
||||
* @returns A vector of messages supplied in the userlist but not attached to
|
||||
* any particular plugin.
|
||||
*/
|
||||
virtual std::vector<Message> GetUserGeneralMessages(
|
||||
bool evaluateConditions = false) const = 0;
|
||||
|
||||
/**
|
||||
* @brief Gets the groups that are defined in the loaded metadata lists.
|
||||
* @param includeUserMetadata
|
||||
|
||||
@@ -95,6 +95,16 @@ std::vector<Message> Database::GetGeneralMessages(
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<Message> Database::GetUserGeneralMessages(
|
||||
bool evaluateConditions) const {
|
||||
try {
|
||||
return convert<Message>(
|
||||
database_->user_general_messages(evaluateConditions));
|
||||
} catch (const ::rust::Error& e) {
|
||||
std::rethrow_exception(mapError(e));
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<Group> Database::GetGroups(bool includeUserMetadata) const {
|
||||
try {
|
||||
return convert<Group>(database_->groups(includeUserMetadata));
|
||||
|
||||
@@ -38,6 +38,9 @@ public:
|
||||
std::vector<Message> GetGeneralMessages(
|
||||
bool evaluateConditions = false) const override;
|
||||
|
||||
std::vector<Message> GetUserGeneralMessages(
|
||||
bool evaluateConditions = false) const override;
|
||||
|
||||
std::vector<Group> GetGroups(bool includeUserMetadata = true) const override;
|
||||
std::vector<Group> GetUserGroups() const override;
|
||||
void SetUserGroups(const std::vector<Group>& groups) override;
|
||||
|
||||
@@ -144,6 +144,20 @@ impl Database {
|
||||
.map_err(Into::into)
|
||||
}
|
||||
|
||||
pub fn user_general_messages(
|
||||
&self,
|
||||
evaluate_conditions: bool,
|
||||
) -> Result<Vec<Message>, VerboseError> {
|
||||
Ok(self
|
||||
.0
|
||||
.read()
|
||||
.map_err(DatabaseLockPoisonError::from)?
|
||||
.user_general_messages(to_eval_mode(evaluate_conditions))?
|
||||
.into_iter()
|
||||
.map(Into::into)
|
||||
.collect())
|
||||
}
|
||||
|
||||
pub fn groups(&self, include_user_metadata: bool) -> Result<Vec<Group>, VerboseError> {
|
||||
Ok(self
|
||||
.0
|
||||
|
||||
@@ -276,6 +276,8 @@ mod ffi {
|
||||
|
||||
pub fn general_messages(&self, evaluate_conditions: bool) -> Result<Vec<Message>>;
|
||||
|
||||
pub fn user_general_messages(&self, evaluate_conditions: bool) -> Result<Vec<Message>>;
|
||||
|
||||
pub fn groups(&self, include_user_metadata: bool) -> Result<Vec<Group>>;
|
||||
|
||||
pub fn user_groups(&self) -> Result<Vec<Group>>;
|
||||
|
||||
@@ -566,6 +566,21 @@ TEST_P(
|
||||
EXPECT_TRUE(messages.empty());
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest,
|
||||
getUserGeneralMessagesShouldGetGeneralMessagesFromTheUserlistOnly) {
|
||||
ASSERT_NO_THROW(GenerateMasterlist());
|
||||
ASSERT_NO_THROW(GenerateUserlist());
|
||||
ASSERT_NO_THROW(handle_->GetDatabase().LoadMasterlist(masterlistPath));
|
||||
ASSERT_NO_THROW(handle_->GetDatabase().LoadUserlist(userlistPath_));
|
||||
|
||||
auto messages = handle_->GetDatabase().GetUserGeneralMessages();
|
||||
|
||||
std::vector<Message> expectedMessages({
|
||||
Message(MessageType::say, generalUserlistMessage),
|
||||
});
|
||||
EXPECT_EQ(expectedMessages, messages);
|
||||
}
|
||||
|
||||
TEST_P(DatabaseInterfaceTest,
|
||||
getPluginMetadataShouldReturnAnEmptyOptionalIfThePluginHasNoMetadata) {
|
||||
EXPECT_FALSE(handle_->GetDatabase().GetPluginMetadata(blankEsm));
|
||||
|
||||
Reference in New Issue
Block a user