The logic here probably need to be a broken up a little more. I think each action needs its own `if` block that checks specifically whether that action should be shown. You can view conversation states as a sub-set of the cross-product of `starting, running, stopping, stopped` and `active, archived`. `stopped` is the only running state that may be paired with `archive`. So

* You can activate a conversation if it is stopped and not archived.
* You can archive a conversation if it is stopped and not archived.
* You can stop a conversation if it is not stopped.

I think that covers all the cases.