add a separate progress bar component and an upload simulation function