This week was the final week to get done with my Release 0.3 work and I did.
Some claps for me.
But this was not like my usual assignment in a course. It was something that I had to decide, commit to and get it done. The work I wanted to do was chosen by me and completed by me. If you don’t know what is Release 0.3 you can read about in my blog post here.
Also, before continuing reading this post please read my previous posts about Release 0.3 to understand what is happening in this post. List of blogs:
Telescope: Internal Is Done
Please read my last blog post which goes over the issue and PR in detail.
I resolved the issues with my pull request was able to get it merged. The final code looked like this:
The issue was closed but my professor did asked me to create another issue for writing a test for the new functionality,which I did. The other issue can be viewed here. I wrote in the issue that even though I want to do this, would still encourage PRs for it from anyone. The reason for doing this was that there are around 60 people in class and each one of them should at least get one PR merged to count for grading. My one PR was already merged so I wanted other people to get a shot at this and get a PR in.
The test in this project are written using Jest. I went onto the Jest documentation to see how I can go about tackling this issue because I have never written a test case from scratch. I know what I wanted to test. I wanted to see if the Promise object returned contains certain properties or not for a given string. This was the same thing I replied in my issue with the expected output and what to test to help the other person working on it.
The other person did get the PR on it and had asked me to review it and it has been merged now.
This one was a long one and there were two reasons for it :
- It was a complex issue
- The project is using Kotlin.
I know what Kotlin is in theory. But I have never worked with it and used it anywhere until now when I had to deal with the issue. I chose this repository to learn some Kotlin and to get to know how it works and which I can say I did.
I achieved my two goals by fixing the issue in this repository:
1 . Solved a complex issue in a fairly big repository.
2. Programmed in a new language: Kotlin
There were a lot of hurdles which is obvious as the issue was a feature request for 3 enhancements. One of them to add functionality to be able to mark a Source/Catalog as favorite.
This one was possible but it required a major overhaul of whole project structure and the API it depends on.
The Sources are a list of installed external extensions which provided from another application (repository of the extensions).
They only provide read only data and you cannot post anything back.
To fix this a local hosted database would be required to store which sources are favorite. Also , the classes and interfaces for the sources were immutable and had no setter methods to implement editing values. Further there were some more files that need to be restructured or added.
So I recommended to the issue creator to create a separate issue for this as this feature was affecting the project in a major way and also asked to file another issue in the extensions repository which deals with the extensions used by the application. I also explained the reason to do so in the comment.
Turns out someone already created a specific issue for this feature to be added already before my comment.
There was another request in the issue to add search across catalogue feature but the application already did that.
I did manage to add the feature of rating individual mangas in the library. It required a knowledge of XML and Kotlin syntax to get through this. There were a lot of files changed (17) so to look at each file you have to visit my fork.
After I was satisfied with my implementation of the feature I did a PR for it.
Still waiting for a response on the Pull Request
Happy Coding !
- Telescope Project Repository: https://github.com/Seneca-CDOT/telescope
- My Fork for Telescope Project: https://github.com/jatinAroraGit/telescope
- Internal Issue: https://github.com/Seneca-CDOT/telescope/issues/15
- Internal PR: https://github.com/Seneca-CDOT/telescope/pull/46
- Jest: https://jestjs.io/
- External Project Repository: https://github.com/inorichi/tachiyomi
- My Fork of External Project with new files: https://github.com/jatinAroraGit/tachiyomi/tree/issue-2272
- External Issue: https://github.com/inorichi/tachiyomi/issues/2272
- External Project PR: https://github.com/inorichi/tachiyomi/pull/2326
- Blog 1
- Blog 2