It seems Empathy requires the ContactLists and Presence interfaces if
it is to use your connection and show it as online. In addition, we
were emitting the "connected" signal from the wrong source - it needed
to have the object path of the specific connection, rather than the
general connection object path.
So now we can show as connected in Empathy, but we can't add a contact
yet - presumably that's another interface.
Sending a message to a connected deltachat account does nothing yet, as
the message from deltachat-core is unhandled.
Empathy still isn't happy, but it's going to take some debugging to
work out why. I suspect it requires one of the "optional" interfaces
in practice... but which one?
Empathy still doesn't show us as connected. I think we need to add the
Requests and Contacts interfaces (which we're advertising as a minimal
requirement, but not implementing) before it will.
We also introduce a sleep() to "fix" a race condition where empathy
tries to contact the connection bus name before the thread has gotten
around to starting it. That really needs fixing better, but for now
I'm focused on basic functionality.
Without this, telepathy-glib/empathy doesn't believe the protocol is
bonafide (i.e., implementing TP_PROTOCOL_FEATURE_CORE). Adding a dummy
gets empathy to display the protocol without needing to be patched \o/.