forked from necrosis/slack-libpurple
-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch initial chan loading to conversations.list
- Loading branch information
Showing
12 changed files
with
115 additions
and
107 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#include "slack-json.h" | ||
#include "slack-api.h" | ||
#include "slack-channel.h" | ||
#include "slack-im.h" | ||
#include "slack-conversation.h" | ||
|
||
static void conversation_update(SlackAccount *sa, json_value *json) { | ||
if (json_get_prop_boolean(json, "is_im", FALSE)) | ||
slack_im_set(sa, json, &json_value_none); | ||
else | ||
slack_channel_set(sa, json, SLACK_CHANNEL_UNKNOWN); | ||
} | ||
|
||
#define CONVERSATIONS_LIST_CALL(sa, ARGS...) \ | ||
slack_api_call(sa, conversations_list_cb, NULL, "conversations.list", "types", "public_channel,private_channel,mpim,im", "exclude_archived", "true", SLACK_PAGINATE_LIMIT, ##ARGS, NULL) | ||
|
||
static void conversations_list_cb(SlackAccount *sa, gpointer data, json_value *json, const char *error) { | ||
json_value *chans = json_get_prop_type(json, "channels", array); | ||
if (!chans) { | ||
purple_connection_error_reason(sa->gc, | ||
PURPLE_CONNECTION_ERROR_NETWORK_ERROR, error ?: "Missing conversation list"); | ||
return; | ||
} | ||
|
||
for (unsigned i = 0; i < chans->u.array.length; i++) | ||
conversation_update(sa, chans->u.array.values[i]); | ||
|
||
char *cursor = json_get_prop_strptr(json_get_prop(json, "response_metadata"), "next_cursor"); | ||
if (cursor && *cursor) | ||
CONVERSATIONS_LIST_CALL(sa, "cursor", cursor); | ||
else | ||
slack_login_step(sa); | ||
} | ||
|
||
void slack_conversations_load(SlackAccount *sa) { | ||
g_hash_table_remove_all(sa->channels); | ||
g_hash_table_remove_all(sa->ims); | ||
CONVERSATIONS_LIST_CALL(sa); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#ifndef _PURPLE_SLACK_CONVERSATION_H | ||
#define _PURPLE_SLACK_CONVERSATION_H | ||
|
||
#include "json.h" | ||
#include "slack-object.h" | ||
#include "slack.h" | ||
|
||
static inline SlackObject *slack_conversation_lookup_id(SlackAccount *sa, const slack_object_id id) { | ||
return g_hash_table_lookup(sa->channels, id) ?: g_hash_table_lookup(sa->ims, id); | ||
} | ||
|
||
static inline SlackObject *slack_conversation_lookup_sid(SlackAccount *sa, const char *sid) { | ||
if (!sid) | ||
return NULL; | ||
slack_object_id id; | ||
slack_object_id_set(id, sid); | ||
return slack_conversation_lookup_id(sa, id); | ||
} | ||
|
||
/* Initialization */ | ||
void slack_conversations_load(SlackAccount *sa); | ||
|
||
#endif // _PURPLE_SLACK_CONVERSATION_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters