Add additional NodeJS bits required for properly dealing with IM's (Bug #1173)
Details to be added.
What we need is Activities (have these ready to go once the methods are implemented in the service):
1. Availability Watch: Watch for changes to imbuddystatus availability and call changedAvailability method which will "update the groupAvailability field in com.palm.imbuddystatus. The groupAvailability field is the concatination of the buddy group with the most available availability of that person across all it's IM accounts. The app will render and order the buddy list according to this field."
2. Watch for imbuddystatus records with no displayName and call newBuddies method which will "link new buddies to their respective record in com.palm.person. This assistant looks for records with an empty displayName field. If it finds one, it will look up the person for it and update the personId and displayName. This assistant will also take care of the situation where a person doesn't have a displayName and is returning an empty string. In that case, the account username will be used as the displayName."
3. Watch for deleted ImChatGroup records and call deletedImGroupChat method which will lock the groupchat so no future messages can be added and a few other things.
4. Watch for deleted messaging records and call deletedMessage method which will make sure the chatthread and other bits are aware of the deleted message.
5. Watch for changes to the ImChatGroup displayName and call changeImGroupChatDisplayName method which will update the name of the groupchat where it's necessary.
6. Watch for changes to the 'locked' flag in ImChatGroup records and call lockedImGroupChat method which will be invoked whenever flags.locked changes in a com.palm.imgroupchat record.
7. Watch for new ImChatGroup records and call newImGroupChat method which will "be invoked whenever the chatThreadId property of a com.palm.imgroupchat record changes. Once set, the chatThreadId will never change so this assistant is only invoked for the following cases: 1. a new imgroupchat record is created (either with or without the chatThreadId property set 2. the imgroupchat record was just updated by this assistant. This case can be identified by noting that both the imgroupchat and the chatthread are already both referencing each other. The chatthreads now exist for the groupchats, so null out the conversation of any messages that were temporarily stored in the "pending_groupchat" chatthread. This way they can be processed and show up the their intended group's chatthread. Do this for each imgroupchat: if imgroupchat.chatThreadId get the chatthread, if chatthread returned, merge chatthread.groupChatId, else create chatthread and merge imgroupchat.chatThreadId"
8. Watch for changes to the 'read' flag in message records and call readFlagChanged method which will take care of a message being read and update it at the relevant places.
- Target version changed from Later to Zorro
- File missingim.zip added