After a while since I discovered Functional Reactive Programming, I believe this is the way Keytty should be built.
Articles that convinced me
Currently, Keytty is mostly made up with proactive OOP written in Objective C.
There are several issues that I found when I try to maintain the code and add more features. such as:
- Controller has too many responsibilities and gets more complex over time.
- That leads some (thankfully minor) bugs that I have hard to understand and hard to fix it
usually about UI drawing and side effects like dragging the mouse.
So, I wanted to give a changes to the code so that It can be more sustainable over long time and be more flexible to future changes.
That's why I'm trying to reimagine Keytty workflow as a collection of reactive streams.
My hands are not dirty enough to feel Reactive Programming (such as RxJS) is my thing yet. So my representation about these streams might inaccurate but I will revise them to make more sense over time.