about the logic: this seems great when the user presses the "new message" button, write something etc. But when the user loads an existing draft, I think that saving that draft should update the existing draft (or remove it/add a new one). But I don't see you're using draft.id here.