Changeset 830864d for protocols


Ignore:
Timestamp:
2015-03-15T09:31:18Z (10 years ago)
Author:
dequis <dx@…>
Children:
ac6855b3
Parents:
c0e4c22
git-author:
dequis <dx@…> (05-03-15 10:31:24)
git-committer:
dequis <dx@…> (15-03-15 09:31:18)
Message:

WIP placeholder channels with hipchat implementation

i was going to clean this up and split in two commits but uhhh...
maybe some other day, i'm tired now

not very tested and i'm not 100% happy about the design, but sucks way
less than what i had in the hip-cat branch

feedback still appreciated.

this adds channels to the channel list without creating groupchats for
them, allowing users to /join them. what the hip-cat branch did before
but with proper api and hopefully less dumb behavior

it still 'leaks' them intentionally, just like it did before, but now it
prevents saving them to the xml so yay

also slightly improved channel name generation, refactored
bee_irc_chat_name_hint into three or four functions, and so on

Location:
protocols
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • protocols/bee.h

    rc0e4c22 r830864d  
    115115        gboolean (*chat_new)(bee_t *bee, struct groupchat *c);
    116116        gboolean (*chat_free)(bee_t *bee, struct groupchat *c);
     117        gboolean (*chat_placeholder_new)(bee_t *bee, struct im_connection *ic, const char *handle,
     118                                         const char *name, const char *topic);
    117119        /* System messages of any kind. */
    118120        gboolean (*chat_log)(bee_t *bee, struct groupchat *c, const char *text);
     
    165167 *   user, too. */
    166168G_MODULE_EXPORT struct groupchat *imcb_chat_new(struct im_connection *ic, const char *handle);
     169G_MODULE_EXPORT void imcb_chat_placeholder_new(struct im_connection *ic, const char *handle, const char *name,
     170                                               const char *topic);
    167171G_MODULE_EXPORT void imcb_chat_name_hint(struct groupchat *c, const char *name);
    168172G_MODULE_EXPORT void imcb_chat_free(struct groupchat *c);
  • protocols/bee_chat.c

    rc0e4c22 r830864d  
    5454}
    5555
     56void imcb_chat_placeholder_new(struct im_connection *ic, const char *handle, const char *name, const char *topic)
     57{
     58        bee_t *bee = ic->bee;
     59
     60        if (bee->ui->chat_placeholder_new) {
     61                bee->ui->chat_placeholder_new(bee, ic, handle, name, topic);
     62        }
     63}
     64
    5665void imcb_chat_name_hint(struct groupchat *c, const char *name)
    5766{
  • protocols/jabber/hipchat.c

    rc0e4c22 r830864d  
    132132        while ((c = xt_find_node(c, "item"))) {
    133133                struct xt_node *c2;
    134                 struct groupchat *gc;
    135                 struct irc_channel *ircc;
    136134                char *topic = NULL;
    137                 gboolean new_room = FALSE;
    138135                char *jid = xt_find_attr(c, "jid");
    139136                char *name = xt_find_attr(c, "name");
     
    146143                }
    147144
    148                 gc = bee_chat_by_title(ic->bee, ic, jid);
    149                 if (!gc) {
    150                         gc = imcb_chat_new(ic, jid);
    151                         new_room = TRUE;
    152                 }
    153                 imcb_chat_name_hint(gc, name);
    154                 imcb_chat_topic(gc, NULL, topic, 0);
    155 
    156                 ircc = gc->ui_data;
    157                 set_setstr(&ircc->set, "account", ic->acc->tag);
    158                 set_setstr(&ircc->set, "room", jid);
    159                 set_setstr(&ircc->set, "chat_type", "room");
    160 
    161                 if (new_room) {
    162                         /* This cleans everything but leaves the irc channel around,
    163                          * since it just graduated to a room.*/
    164                         imcb_chat_free(gc);
    165                 }
    166 
     145                imcb_chat_placeholder_new(ic, jid, name, topic);
    167146                c = c->next;
    168147        }
Note: See TracChangeset for help on using the changeset viewer.