This is the final diff that adds support for uploading encrypted media.
Media support in web input-state-container works differently but it's as complicated as on native. Basically: firstly, we create a pendingUpload and enhance it with actual upload result. Then (when enter/send btn is clicked) we create message based on that pending upload.
Similiar to native version, the encrypted uploads functionality is hidden behind a boolean.