hoehermann / purple-signald

Pidgin libpurple bridge to signald.
GNU General Public License v3.0
153 stars 19 forks source link

Groups v2 #17

Closed fancypantalons closed 4 years ago

fancypantalons commented 4 years ago

This PR represents a refactoring that culminates in control over whether groups are automatically opened/joined at startup.

First, we refactoring all the tracking so that groups are stored alongside the SignaldAccount in their own list. Previously group data was attached to the conversation, but since we may not have open conversations for all groups right away, we have to start tracking that information separately.

Second, we automatically add group chats to the buddy list and mark them persistent. Since we're not automatically opening chats, this is the only way to ensure the user has a way to open a group chat that isn't opened yet. Marking them persistent ensures that when you close the chat, you don't accidentally leave it unless you really mean it!

Third, since we're in here adding a bunch of capabilities anyway, we add support for renaming group chats. We do this using the Pidgin "Alias..." function, such that if you alias a chat it's renamed in the Signal protocol and all the associated tracking is updated. Similarly, if we receive a rename, we automatically alias the chat to rename it.

Then, last but not least, we add the new auto-join-group-chats setting. When disabled, group chats are only automatically opened when a message is received (this ensures we don't lose any messages; if we didn't open the conversation, we'd have nowhere to put them!) When enabled, they're opened at startup as per the previous behaviour.

The default is to not automatically open chats. So Bitlbee users will definitely want to enable this setting.

demure commented 4 years ago

This change probably merits some form of documentation of the settings, either in the readme or perhaps the start of a docs/ dir.

fancypantalons commented 4 years ago

This change probably merits some form of documentation of the settings, either in the readme or perhaps the start of a docs/ dir.

IMO the latter would be ideal. There definitely needs to be a setup/install guide for linking, and the settings for external attachment hosting also deserve to be documented.

hoehermann commented 4 years ago

Does this include the changes from commit 5a99200 mentioned in #13 or am I to merge and cherry-pick both?

fancypantalons commented 4 years ago

Does this include the changes from commit 5a99200 mentioned in #13 or am I to merge and cherry-pick both?

This PR contains everything (including an additional fix I just pushed to deal with orphaned group chats). So you can just review and pull this and you should get everything!

hoehermann commented 4 years ago

Nice work! Your code is very clean and it even has comments! :)

demure commented 4 years ago

Did the new settings end up in any user facing documentation?

hoehermann commented 4 years ago

No. Not as far as I know. At least I did not write anything. ;)

Moreover, it is unlikely that I will supply a detailed user-documentation for these new features. I am writing a lot of documentation at my day job and I do not want this project to feel like work.

fancypantalons commented 4 years ago

Hah, I get that. I have no issues throwing a little bit of doc together if it's helpful. If @demure if there isn't already an issue filed to create some doc, feel free to file one and I can dig into it at some point!

Of course, if you wanted to volunteer a first draft... ;)

demure commented 4 years ago

I can take a stab at documenting it from my bitlbee bias perspective. I assume markdown format, in a /doc dir is desirable?

hoehermann commented 4 years ago

Yes, markdown in a doc directory is good.