After the long silence (MozFest + vacations) from my previous release 0.2 pull request, I got some feedback from Mozilla Appmaker team. Apparently, my code doesn’t meet their requirements. I decided to continue working on the same bug as my Release 0.4 project. The following is the suggestion from appmaker team:
If we want to remove a known active listener from the channel map, for instance, we should give the channel map a function like removeActiveListener and then call channelMap.removeActiveListener(…) on it, rather than extracting all the data from the various sources into local scope, processing then, and then setting them back on remote scope. Ideally, no extraction happens, we just tell the relevant components to run their own local function on their local data, based on passed parameters.