Challenge Overview
Challenge Objectives
-
Implement telemetry in the current extension to capture every interaction of the user with our extension
-
Display time until end of submission phase
-
Display the current time in EDT
-
Indicate if we are using the development instance or production instance of Topcoder
Project Background
-
Topcoder is aiming to create an extension in Visual Studio Code and package in Atom
-
The extension / package is meant to closely integrate the Topcoder platform with the text editors, to allow the user to perform actions from within the editor, without having to open a browser.
Technology Stack
-
Typescript
Code access
You can find the code here. Use the develop branch as your base branch
Individual requirements
Implement telemetry in the current extension to capture every interaction of the user with our extension (Major Requirement)
-
We would like to capture user interaction with the extension
-
For every interaction of the user with the extension, you need to call an endpoint to which you will pass details of the interaction.
-
The list of interactions to capture will be shared in the contest forum.
-
We are yet to create a dedicated endpoint for this, so for now, we will use https://webhook.site.
-
Also, provide a configuration (in the same section where user currently sets their username and password) to allow users to opt out of this telemetry. In case a user has opted out, you will not send the interaction details to the endpoint.
Display time until end of submission phase (Minor Requirement)
-
If the current workspace has a .topcoderrc file, then the extension will automatically make an api call to get the details of the challenge associated with the challenge id mentioned in this file. Note that the extension already calls an api to get the details of the challenge when the user attempts to upload the current workspace as a submission for that challenge - you will make use of the same api.
-
In the challenge details, you will find details of the phases. Locate the Submission phase and get the value of the scheduledEndTime for this phase.
-
Calculate the time until the end of submission phase and display it in the SideBar. We expect it to countdown automatically, something like this (except clicking on it will do nothing). Note that the time present in the api is in EDT. You would need to convert it before you can display the accurate countdown timer in the user’s timezone.
Display the current time in EDT (Minor Requirement)
-
Display the current time in EDT in the status bar
Indicate if we are using the development instance or production instance of Topcoder (MInor Requirement)
-
The extension currently supports both the dev and production instances of Topcoder (topcoder.com and topcoder-dev.com)
-
At the moment, to switch between the two, we need to update a file.
-
However, kindly provide this as a configuration in the extension (along with the username and password). Provide a help text letting the user know that if they switch between the two, they need to logout and reload the window
-
Additionally, in the status bar, indicate if we are running the dev instance or prod instance.
Deployment guide and validation document
Update the deployment guide as needed.
Important Notes
-
Follow existing conventions used in the app
-
Ensure your app has no lint errors
-
You need to update the tests as needed
-
Note that the extension itself has a feature where it describes the features of itself. You are expected to update this too with the newly added requirements of this contest. This is a major requirement
Final Submission Guidelines
Submit a git patch of your changes