Summary: | An existing chat window/tab stops working when going offline and back online | ||
---|---|---|---|
Product: | [Unmaintained] telepathy | Reporter: | Lasse Liehu <lasse.liehu> |
Component: | text-ui | Assignee: | Telepathy Bugs <kde-telepathy-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | kde |
Priority: | NOR | ||
Version: | git-latest | ||
Target Milestone: | 0.4.0 | ||
Platform: | Unlisted Binaries | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Lasse Liehu
2011-04-12 02:30:35 UTC
Focussing purely on the "messages get eaten" part, as this is the most critical: When the channel emits invalidated() we should disable the send button. (and possibly the text edit?). I think this would work. In the future we might want to try and re-establish a new channel, and make sure we re-use the same windows but that can wait. The "eating" part is fixed in http://commits.kde.org/telepathy-chat-handler/dc1d38314b8d3703e2b05020caa78b7380af0fd2 For resuming in the same window we need the following: - a method in ChatWidget called setChannel(Tp::TextChannel) which will correctly replace the channel object for a new one, and update/reconnect _everything_. The original code wasn't designed for this, so this may be a tricky task. This should undo any disabling that happened when the first channel became invalidated. - a method in the ChatWidget to expose a set of contact IDs we are/were talking to. - The chat app needs to search through all the windows and look for anything with matching contacts _IDs_ (don't compare Tp::ContactPtrs as the first set become invalidated when you went offline) We already have code that checks for matching channels, I'm not sure if we then should remove that, as it's doing effectively the same thing (in a faster+better way, but one that only works whilst the first channel is connected) Possible future bug: if we do it like I described, there is a slim chance that if we join a room which just happens to have exactly the same people in it, it would open in the same window. Not sure how to fix that, maybe we should only do it for 1-1 chats? We can use the (upcoming) targetID of the channel to identify where windows should match. [13:59] <oggis_> what I'd do if I were you is to match all channels by their (targetHandleType(), targetId()) pair - except skip matching altogether if targetHandleType() == HandleTypeNone (in which case targetId will be empty as well) Git commit aaed121605dc91aef945d7852575765c0a1b33f5 by Francesco Nwokeka. Committed on 30/04/2011 at 20:04. Pushed by nwokeka into branch 'master'. Re-establish chat after going offline and back online PART 3 of 3 Final part of bug 270725: An existing chat window/tab stops working when going offline and back online. When user goes offline, the chat is invalidated. If the user comes back online, and the previous chat window is still open, the chat with that contact is re-established. BUG: 270725 REVIEW: 101260 Reviewed by: David Edmundson M +17 -3 app/chat-tab.cpp M +6 -1 app/chat-tab.h M +6 -5 app/chat-window.cpp M +2 -2 app/chat-window.h M +1 -3 app/telepathy-chat-ui.cpp M +9 -1 lib/chat-widget.cpp M +4 -1 lib/chat-widget.h http://commits.kde.org/telepathy-chat-handler/aaed121605dc91aef945d7852575765c0a1b33f5 |