mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Added p_contact_add_resource
This commit is contained in:
parent
1a6490a5b7
commit
8c9f916246
@ -20,6 +20,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@ -40,9 +41,7 @@ struct p_contact_t {
|
|||||||
|
|
||||||
PContact
|
PContact
|
||||||
p_contact_new(const char * const barejid, const char * const name,
|
p_contact_new(const char * const barejid, const char * const name,
|
||||||
const char * const presence, const char * const status,
|
const char * const subscription, gboolean pending_out)
|
||||||
const char * const subscription, gboolean pending_out,
|
|
||||||
const char * const caps_str)
|
|
||||||
{
|
{
|
||||||
PContact contact = malloc(sizeof(struct p_contact_t));
|
PContact contact = malloc(sizeof(struct p_contact_t));
|
||||||
contact->barejid = strdup(barejid);
|
contact->barejid = strdup(barejid);
|
||||||
@ -63,16 +62,19 @@ p_contact_new(const char * const barejid, const char * const name,
|
|||||||
|
|
||||||
contact->available_resources = g_hash_table_new_full(g_str_hash, g_str_equal, free,
|
contact->available_resources = g_hash_table_new_full(g_str_hash, g_str_equal, free,
|
||||||
(GDestroyNotify)resource_destroy);
|
(GDestroyNotify)resource_destroy);
|
||||||
// TODO, priority, last activity
|
|
||||||
if (g_strcmp0(presence, "offline") != 0) {
|
|
||||||
resource_presence_t resource_presence = resource_presence_from_string(presence);
|
|
||||||
Resource *resource = resource_new("default", resource_presence, status, 0, caps_str);
|
|
||||||
g_hash_table_insert(contact->available_resources, strdup(resource->name), resource);
|
|
||||||
}
|
|
||||||
|
|
||||||
return contact;
|
return contact;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
p_contact_add_resource(PContact contact, Resource *resource)
|
||||||
|
{
|
||||||
|
assert(contact != NULL);
|
||||||
|
assert(resource != NULL);
|
||||||
|
|
||||||
|
g_hash_table_insert(contact->available_resources, strdup(resource->name), resource);
|
||||||
|
}
|
||||||
|
|
||||||
PContact
|
PContact
|
||||||
p_contact_new_subscription(const char * const barejid,
|
p_contact_new_subscription(const char * const barejid,
|
||||||
const char * const subscription, gboolean pending_out)
|
const char * const subscription, gboolean pending_out)
|
||||||
|
@ -23,14 +23,15 @@
|
|||||||
#ifndef CONTACT_H
|
#ifndef CONTACT_H
|
||||||
#define CONTACT_H
|
#define CONTACT_H
|
||||||
|
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
typedef struct p_contact_t *PContact;
|
typedef struct p_contact_t *PContact;
|
||||||
|
|
||||||
PContact p_contact_new(const char * const barejid, const char * const name,
|
PContact p_contact_new(const char * const barejid, const char * const name,
|
||||||
const char * const presence, const char * const status,
|
const char * const subscription, gboolean pending_out);
|
||||||
const char * const subscription, gboolean pending_out,
|
|
||||||
const char * const caps_str);
|
|
||||||
PContact p_contact_new_subscription(const char * const barejid,
|
PContact p_contact_new_subscription(const char * const barejid,
|
||||||
const char * const subscription, gboolean pending_out);
|
const char * const subscription, gboolean pending_out);
|
||||||
|
void p_contact_add_resource(PContact contact, Resource *resource);
|
||||||
void p_contact_free(PContact contact);
|
void p_contact_free(PContact contact);
|
||||||
const char* p_contact_barejid(PContact contact);
|
const char* p_contact_barejid(PContact contact);
|
||||||
const char* p_contact_name(PContact contact);
|
const char* p_contact_name(PContact contact);
|
||||||
|
@ -70,8 +70,7 @@ contact_list_add(const char * const barejid, const char * const name,
|
|||||||
PContact contact = g_hash_table_lookup(contacts, barejid);
|
PContact contact = g_hash_table_lookup(contacts, barejid);
|
||||||
|
|
||||||
if (contact == NULL) {
|
if (contact == NULL) {
|
||||||
contact = p_contact_new(barejid, name, "offline", NULL, subscription,
|
contact = p_contact_new(barejid, name, subscription, pending_out);
|
||||||
pending_out, NULL);
|
|
||||||
g_hash_table_insert(contacts, strdup(barejid), contact);
|
g_hash_table_insert(contacts, strdup(barejid), contact);
|
||||||
autocomplete_add(ac, strdup(barejid));
|
autocomplete_add(ac, strdup(barejid));
|
||||||
added = TRUE;
|
added = TRUE;
|
||||||
|
@ -220,7 +220,10 @@ muc_add_to_roster(const char * const room, const char * const nick,
|
|||||||
(g_strcmp0(p_contact_status(old), status) != 0)) {
|
(g_strcmp0(p_contact_status(old), status) != 0)) {
|
||||||
updated = TRUE;
|
updated = TRUE;
|
||||||
}
|
}
|
||||||
PContact contact = p_contact_new(nick, NULL, show, status, NULL, FALSE, caps_str);
|
PContact contact = p_contact_new(nick, NULL, NULL, FALSE);
|
||||||
|
resource_presence_t resource_presence = resource_presence_from_string(show);
|
||||||
|
Resource *resource = resource_new("default", resource_presence, status, 0, caps_str);
|
||||||
|
p_contact_add_resource(contact, resource);
|
||||||
g_hash_table_replace(chat_room->roster, strdup(nick), contact);
|
g_hash_table_replace(chat_room->roster, strdup(nick), contact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
#ifndef RESOURCE_H
|
#ifndef RESOURCE_H
|
||||||
#define RESOURCE_H
|
#define RESOURCE_H
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
typedef struct resource_t {
|
typedef struct resource_t {
|
||||||
char *name;
|
char *name;
|
||||||
resource_presence_t presence;
|
resource_presence_t presence;
|
||||||
|
Loading…
Reference in New Issue
Block a user