Hi John.
The current design of the contract is to accumulate the proceeds of sales in the balance of the seller in the marketplace. This can be withdrawn by sellers at any time. The front-end has not implemented that function but this implementation is quite straight-forward.
Remember the following facts:
- When someone buys your NFT you most likely will not be online to sign transfer the NFT to them. Even if both parties are online how to decide what will be done first. I send you my money or you send me your NFT.
- You need to be able to grant an allowance to a third party to transfer the NFT on your behalf, but you also want to make sure that this third party only executes that allowance when a buyer pays the money you require to sell the NFT.
- As well you want to make sure that you can withdraw the funds from the third party at any time.
- Solving the issues above is the reason the market place exist in the first place.
You could in theory change the design in order the withdrawal function or some equivalent is executed by the buyer but it requires a bit of work to make such design secure. Besides that will be inefficient in several accounts. You will make buyers spend more gas, making their overall transaction cost higher. This gas costs are in all fairness cost that the seller should bear and the most efficient way for the seller is to withdraw when he wants maybe after several sales (transferring any amount of ETH costs the same amount of gas).