Adium

Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#10547 closed enhancement (fixed)

Revamp the contact and account selection criteria for meta-contacts

Reported by: bjhomer Owned by:
Milestone: Adium 1.4 Component: Adium UI
Version: 1.3svn Severity: major
Keywords: Cc:
Patch Status:

Description (last modified by evands)

The current code in AdiumPreferredAccounts.m uses lots of black-magic logic when selecting a contact and account from a meta-contact. Users have no control over which contact/account pair is returned, and it often seems arbitrary to them. Now that sorting of contacts within a meta-contact is working well, we should allow users to prioritize contact selection themselves. The new criteria for selecting accounts should be as follows:

  1. Use the first contact in available status
  2. If no contact is available, use the first online contact
  3. If no contact is online, use the first contact in the list

Invisible contacts should be treated as offline; if users want to message invisible users, they can select them manually.

After selecting a contact, preference for the source account should be based upon:

  1. Use the first account with that contact on its contact list
  2. If the contact is a stranger on all accounts, use the first account which is available and can message the contact
  3. If no account is available, use the first account which is online and can message the contact

Change History (6)

comment:1 Changed 11 years ago by evands

  • Description modified (diff)
  • Summary changed from Revamp the account selection criteria for meta-contacts to Revamp the contact and account selection criteria for meta-contacts

Revising to split the distinction between contact (the other guy) and account (you).

comment:2 Changed 11 years ago by jas8522

  • Milestone set to Adium X 1.4
  • priority changed from normal to high
  • Severity changed from normal to blocker
  • Version set to 1.3svn

This should be done sooner than later as it should fix a lot of odd behavior that has been reported over the the last couple years at least.

comment:3 Changed 11 years ago by Robby

#8456, for example.

comment:4 Changed 11 years ago by evands

I agreed with this ticket when I first read it, but looking at the code now, I'm not sure that a change is necessary in the contact logic. The existing code is complex, but it actually produces a very good algorithm for choice.

When messaging a metacontact, the contact within is chosen based on the following algorithm:

  1. If the last-messaged contact within the metacontact is online and available, or it's away and the entire metacontact is away, use that contact.
  2. Otherwise, use the first available contact (excluding mobile contacts). If no contact is available, use the first online contact (including mobile contacts). If no contact is online, use the first contact regardless of status.

Having determined the contact, or using the contact originally passed if we didn't start with a metacontact, the account is determined.

comment:5 Changed 11 years ago by evands

  • Resolution set to fixed
  • Status changed from new to closed

(In [25367]) Reduced complexity when determining what account is preferred for messaging a given contact.

  1. If the account last used to message that contact is online, it is used.
  2. If the account has never been messaged for that account is not online, use the first account which is online and has that contact on its contact list.
  3. Failing that, use the first account which is online and on the right service.
  4. Failing that, select the first account which is offline and on the right service.


Fixes #10547, though of course this warrants thorough testing to make sure it fits our expectations in longer term use.

comment:6 Changed 11 years ago by zacw

  • Component changed from MetaContact to Adium UI

Removing 'Meta Contact' component.

Note: See TracTickets for help on using tickets.