Stopping posts being made while rich-embed preview processing #2418
Summary
Closes #2418
Original change on prod is that if you hit enter too quickly after posting a link, it will not post with the rich embed preview. That will upload in a separate comment below after the comment is posted.
Steps to test
- Log in and go to a post
- Copy a link e.g.
https://www.google.com/
- Paste it into a comment on the post and repeatedly and rapidly hit enter until the preview is done
- it should post with the preview, waiting till the preview is ready.
- Repeat with an invalid URL e.g.
https://www.ks3fnj3n9.com
- it should only post when it's been processed for an available preview - you should see the loading indicator that indicates when this is happening.
Estimated Regression Scope
This feature touches a few areas
-
It affects when a user can post by directly stopping the user from posting until progress equal to 100, when a rich-embed is detected. In the worst-case, this could conceivably stop users posting in some edge-case situation.
-
It uses the same progress mechanism as image uploads - I felt it made the most sense as there shouldn't be an overlap of uploading an image and a rich-embed. Regardless, tests one after the other are good.
added scoped labels
174 174 this.detectChanges(); 175 175 } 176 176 177 async getPostPreview(message) { 178 if (!message) { 177 /** 178 * Checks for rich-embed and fetches a preview. 179 * 180 * @param { string } - message to be parsed. 181 */ 182 async getPostPreview(message: string) { 183 if ( 184 !message || 185 this.attachment.getMeta().is_rich || 186 !this.attachment.containsRichEmbed(message) - Developer
This call is also made inside of the attachment.preview() function, so gets called twice. I split it off into its own function because:
- I need to be able to call it outside the scope of the attachment service.
- I wanted to be as delicate as possible with my changes to the attachment service.
Edited by Ben Hayward