When the user applies from the gigs page, and UI shows them a button to redirect to my gigs application. But because there is a third-party architectural component(Zapier)that syncs RCMR data to the TaaS system, and it creates eventual consistency between the two systems. That adds latency, and it's a bad user experience.
Here is the solution to improve the user experience.
When the user applies from https://www.topcoder.com/gigs/{ID} page, add 7 seconds of forced delay(loading spinner) before it shows the CHECK GIG APPLICATION STATUS button.
User clicks on the CHECK GIG APPLICATION STATUS button, that request should look like https://platform.topcoder.com/earn/my-gigs?jobExternalId={ID}, this is ID is RCRM job ID.
Request lands on with the ID in the URL https://platform.topcoder.com/earn/my-gigs?jobExternalId={ID}, then My gigs code checks if this Job ID(got from URL) exists in the list returned by API, if that doesn't exist then UI shows spinner and UI logic polls for a new set of my gigs with the ID every 3 seconds. In this polling whenever Job with that ID is returned as part of my gigs listing, the spinner stops. This logic will not execute if the user directly comes to my gigs with the URL https://platform.topcoder.com/earn/my-gigs
PS: This solution will not improve the performance but will improve the user experience. Users don't have to reload the page again and again in order to get the applied job in my gigs listing.
Long term solution would be to replace Zap from the architecture with synchronous write to backend.
Problem:
When the user applies from the gigs page, and UI shows them a button to redirect to my gigs application. But because there is a third-party architectural component(Zapier)that syncs RCMR data to the TaaS system, and it creates eventual consistency between the two systems. That adds latency, and it's a bad user experience.
Here is the solution to improve the user experience.
https://www.topcoder.com/gigs/{ID}
page, add 7 seconds of forced delay(loading spinner) before it shows theCHECK GIG APPLICATION STATUS
button.CHECK GIG APPLICATION STATUS
button, that request should look likehttps://platform.topcoder.com/earn/my-gigs?jobExternalId={ID}
, this is ID is RCRM job ID.https://platform.topcoder.com/earn/my-gigs?jobExternalId={ID}
, then My gigs code checks if this Job ID(got from URL) exists in the list returned by API, if that doesn't exist then UI shows spinner and UI logic polls for a new set of my gigs with the ID every 3 seconds. In this polling whenever Job with that ID is returned as part of my gigs listing, the spinner stops. This logic will not execute if the user directly comes to my gigs with the URLhttps://platform.topcoder.com/earn/my-gigs
PS: This solution will not improve the performance but will improve the user experience. Users don't have to reload the page again and again in order to get the applied job in my gigs listing.
Long term solution would be to replace Zap from the architecture with synchronous write to backend.