i've been following this example to see how to transfer WSOL from inside the transfer hook:
at the bottom there is a small note that the user has to 'approve' the delegate before the transfer can happen, and indeed, if i make a call to approve before transfer_checked then the transfer works just fine.
However, how does this work in the wider ecosystem? I don't really understand how e.g. phantom should know to prepend a transfer instruction with an approve for the correct amount and get the user to sign for it, is there some mechanism by which to do that?