
The fifth week of the official coding period at Google Summer of Code has concluded. As I have already built the main functionality previously, I spent this week on integrating it with the Taskwarrior Flutter App
. I worked on re-using all the components that are common between all Taskwarrior versions and building new views and components as per the requirement. Here’s a detailed explanation of what I accomplished during this week:
- Built an API service: I made a class in the app using which we can interact with the Golang API and perform the actions such as fetching and modifying the tasks.
- Used sqflite for local data storage: The flow of the app with API would originally require the users to be connected to the internet in order to perform any actions on the tasks, or even for retrieving the tasks. As some users may not have a good internet connection at all times, I decided to store all the tasks locally, in a sqflite database. The users can perform all the actions on their tasks locally, such as editing, deleting, completing or simply fetching tasks. And they can sync with their TW clients by simply refreshing the tasks using the sync button in the app bar.
- The users can still use taskd for syncing, if they wish to do so, by changing their preferences in settings. They have to provide their taskc credentials in order to sync with our server. All these preferences are stored locally using the
shared_preferences
package. - The tasks can be sorted by the various parameters provided in the Filter Drawer.
- I also updated the reports view and now whenever a user is using taskc for syncing, they can view their daily, weekly, and monthly reports.
- All the sync between the database and server is done on the basis of the latest modification date of that task.
- Next week, I am planning to test these features further. I will also be working on the testing of new functions and handlers that are added to the backend for facilitating features with the app. Apart from this I will be adding any left over features to the app so as to provide a smooth user experience.