Open Bug 954059 Opened 10 years ago Updated 2 years ago

Auto-Join option field is hard coded for certain protocols

Categories

(Chat Core :: General, defect)

defect

Tracking

(Not tracked)

People

(Reporter: clokep, Unassigned)

Details

*** Original post on bio 623 at 2010-12-12 04:02:00 UTC ***

The auto-join field seems to only show up for certain protocols:
http://lxr.instantbird.org/instantbird/source/instantbird/content/joinchat.js#72
and http://lxr.instantbird.org/instantbird/source/instantbird/content/account.js#61

Ideally I should be able to set this for a protocol/account as "canAutoJoin = true" or something and have this field pop up. I haven't seen this code too much, but I'm willing to patch this if necessary.

Also, I wasn't really sure if this was a UI bug or a purplexpcom, I chose the latter.
Blocks: 953944
*** Original post on bio 623 at 2010-12-12 09:41:32 UTC ***

Hmm... are there actually protocols that can join chat but can't auto-join them?
(That would mean the ChatRoomFields value cannot be serialized to a user-readable/editable string).
*** Original post on bio 623 at 2010-12-14 16:46:43 UTC ***

I figured I'd just go into those two files and replace that if statement with if (account.canJoinChat), but apparently this is not defined on any of the libpurple protocols even though it's in purpleIAccount: http://lxr.instantbird.org/instantbird/source/purple/purplexpcom/public/purpleIAccount.idl#121
*** Original post on bio 623 at 2010-12-16 07:55:37 UTC ***

(In reply to comment #2)
> I figured I'd just go into those two files and replace that if statement with
> if (account.canJoinChat), but apparently this is not defined on any of the
> libpurple protocols even though it's in purpleIAccount:
> http://lxr.instantbird.org/instantbird/source/purple/purplexpcom/public/purpleIAccount.idl#121

I'm not sure of what you mean.
See http://lxr.instantbird.org/instantbird/source/purple/purplexpcom/src/purpleAccount.cpp#574 for how the canJoinChat property getter is implemented in purplexpcom.

Only the accounts that have canJoinChat are listed in the Join Chat dialog, and if none is connected, the "Join Chat" menu item is disabled.

To be able to auto-join an account, you need more than "canJoinChat" though, you also need a simple way to serialize all the chatroom parameters so that it can be exposed to the user in the UI.
The current UI is a quick ugly hack to make it work for IRC and XMPP where it's easy to serialize the chatroom name and parameters to a user readable string. For protocols like AIM where the parameters include a number, I don't see how to do it except with JSON, which I would feel bad exposing to the user in an editable textbox.

If you want to make this work really well, the UI should be redesigned to not use a textbox.
I think a listbox with at the top all the currently auto-joined chat rooms of the account and bellow all the recently used rooms with respectively checked (for auto-joined) and unchecked (for recently used but not auto-joined) checkboxes would make sense.
The listbox would display only the chat room name (same as what is displayed in a tab when the conversation is visible) and the back-end would store the list in JSON with all the parameters.

Such a UI would take a lot more space than the current textbox, so it should probably have its own tab ("Chat rooms"?) in the Account details dialog.
No longer blocks: 953944
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.