Step 5 of sending a post (waiting for the AppView to index the new record)
can take an unbounded amount of time, but the post is already created after
step 4. Close the composer immediately after the record is written and show
a pending toast while the AppView wait runs in the background. When it
settles, swap the pending toast in place for the existing success toast.
Adds a 'pending' ToastType that renders a spinner via the existing Loader,
and a new Toast.promise() helper that drives the in-place swap on both
sonner and sonner-native.