[ENG-8975](https://linear.app/comm/issue/ENG-8975/logic-for-reacting-to-messages)
We could consider moving this to shared code in lib but at this point, I don't think it worth adding another abstraction layer. For other ops, logic could be specific and different. After implementing other DM ops we can see what can be extracted.
Depends on D13173