7bea9c1456
iapServiceProvider was lazy and only read by Settings, so the purchase stream attached only after opening Settings — deferred/interrupted/restored transactions wouldn't be delivered or completed until then. Read it in the post-frame callback so the stream is live for the whole session.