When you click on the button it takes few seconds to load up the tx for approval in the wallet, so user might not know that the button has responded and may click the button again. I suggest having the button change when it is clicked to show that something is loading, the user will know to wait