Adds `GET /api/v3/projects/:id/configuration` endpoint that returns
all global configuration properties plus project-specific settings.
This allows client apps to check both enterprise token features
(availableFeatures) and project settings (enabledInternalComments)
in a single API call.
Atm, `Journal` is the only reactable model, so emoji reaction queries were naively performed on the "Journal" static interface. However, should we introduce another Reactable, then this approach falls apart quickly as the methods would be duplicated and practically accessible from any of the Reactables.
Therefore, we extract emoji reactions "grouping" queries into their own encapsulation that makes it agnostic to the reactable- it further adds convenience method parameters allowing either an "reactable:" kw arg or "reactable_type:" and "reactable_id:" pair.
https://community.openproject.org/wp/64167
Follows #18988
Emoji Reactions should always be returned in their current state, timeslicing will yield incorrect results.
At any given time, we ONLY need to know what reactions a Journal has. Further, EmojiReactions are never updated, rather created
and destroyed.
Retain timeslicing only for the journal render- where that is relevant to find updated journals