2023 CW 36 - Development Progress

2023 CW 36 - Development Progress

A busy week with great results. Gmail plugin is more and more functional and the platform is ready to get a second (third?) integration.

Functionality

Gmail Plugin

I have fixed various issues in the Gmail plugin. Now it works more well and reliably. I have started using it for email reading. You can check the list of bugs below.

As part of fixing Gmail issues, I have also fixed the Mark all items read functionality. Now it's correctly updating the counters.

Scrolling

I have added scroll to the last and scroll to the first buttons to the UI. I have also developed scroll to the first unread functionality.

Next integration

I have prepared the system for the next integration plugin. There is now a PluginService that is responsible for loading up the plugins. The functionality, provided by these plugins, is not separated from the functionality provided by the system. The system provided functionality lives in services that can be accessed even by plugins. In the backend, the functionality provided by the plugins can be access via the PluginService by retrieving the implementation of the given plugin. In the frontend, the plugin implementations can be injected via Vue's inject mechanism using plugin:{pluginame} as key.

As part of the preparation, I have decided to move with WhatsApp integration. I have friend who could be great beta testers, and they all use WhatsApp. It's a great choice if I want to give it to other people. Unfortunately, WhatsApp doesn't have a public API. But I have found community efforts to provide such interface. The two biggest I have found:

  • whatsapp-web.js - this wraps a browser where it runs the official WhatsApp web client. ⭐11.7k 📜 Apache 2.0
  • venom - similarly to whatapp-web-js it wraps a browser. ⭐5.2k 📜 Apache 2.0
  • Baileys - ⭐1.4k 📜 MIT

I also use Signal as a messaging app with my family and friend. It would have been great to integrate with it for my beta users. Unfortunately, I haven't found a good client library that I could easily integrate with.

I have ruled out Google Chat as nobody is using it as a chat tool among my friends.

I have ruled out Jira as I am not using. This can be an important integration even in the beta phase as many of my friends are using it.

I have started tracking issues in GitHub for this project. This could be a great integration for myself as the first issue tracker integration. GitHub also provides Pull Requests where people can communicate. This feature is heavily used by my friends. Integrating to GitHub API is easy. They have a very clear documentation and cool client libraries. This would have been a very great candidate. I have decided not to continue with it because it is not a strictly speaking communication tool and I believe it's better to have a chat integrated as soon as possible.

🧑‍⚖️ At the end, I have decided to go with WhatsApp integration. The main reason was that I wanted a chat integration and a chat that is used by my beta testers. I believe WhatsApp is a very great candidate.

I haven't decided on the library yet. The plan is to start with Baileys and if it doesn't work out, I will give a shot to whatsapp-web.js.

What was finished

  • ✅ Navigate to first unread item
  • ✅ 🪲 Gmail plugin: Some emails can't be displayed
  • ✅ Better error handling via Sentry
  • ✅ 🪲 On collapsing a History Item, the page jumps away.
  • ✅ 🪲 Fetching is always applying the filters and moves e-mails 'back'.
  • ✅ Reply to composer box is not controlled by the plugin.
  • ✅ 🪲 Composer: The values are stored and saved even if the plugin doesn't support that functionality. (e.g. subject)
  • ⏫✅ The window size is restored after restart.
  • ✅ 🪲 The sent email doesn't have a nicely formatted sender
  • ✅ 🪲 Read / unread emails are not synced back to Google
  • ✅ Select another integration: WhatsApp, Google Meet, Signal, Github, Jira

What comes next?

The next week, I want to focus on bringing a basic WhatsApp implementation onto the platform. I should be able to associate chats to activities and receive messages.

  • WhatsApp integration
    • Associate chat to Activity
    • Receive messages from Chat that show up in the Histroy
    • ❓ Store WhatsApp contacts in Contacts
    • ❓ Associate WhatsApp id with phone numbers
    • ❓ Create Group Chat for Activity

Backlog

  • Release app and make it available on the website.
  • UI update
    • Make menubar small(er)
    • Apply Contexty colours on the app
    • Add contexty icon
    • Make history filter small
    • Add icons to menus
    • Create easy to access menus (always visible icons)
  • Make Resource sidebar disappear and only show by clicking a menu item.
  • Favourite menu items and filter based on them
  • Filter items based by Label
  • Display Participants of the Activity
  • Contacts
    • Sync Google contacts into Contexty
  • Add the content of the original message as quoted text to the composer.
  • 🪲 Old Gmail integration - where historyId might be off (deleted?) is returning 404 - Postponed because I can't reproduce it.

A new integration needs to be selected and the items for that needs to be identified.

Not prioritized future changes identified this week
  • 👾 i18n support
  • 🪲 Switching Activity should scroll to the end (or first unread(?))
  • Keyboard shortcuts
  • Add Recipient(s) to the HistoryItem - The recipients are currently not saved on the History Item. 🙈