summaryrefslogtreecommitdiffstats
blob: 55ba4ebab1c5dadbc5f167be4dba0327c045b17a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
 * Copyright (c) 2011 Kevin Smith
 * Licensed under the GNU General Public License v3.
 * See Documentation/Licenses/GPLv3.txt for more information.
 */

#include "Swiftob/Users.h"

#include <iostream>

#include <Swiften/Client/Client.h>

#include "Swiftob/MUCs.h"

Users::Users(Client* client, MUCs* mucs) {
	client_ = client;
	mucs_ = mucs;
}

/* TODO: Store in roster */
void Users::clearAll() {
	users_.clear();
}

void Users::addUser(const User& user) {
	users_.push_back(user);
}

Users::User::Role Users::getRoleForSender(Message::ref message) {
	JID jid = message->getFrom();
	MUC::ref muc = mucs_->getMUC(message->getFrom().toBare());
	if (muc && muc->hasOccupant(message->getFrom().getResource())) {
		MUCOccupant occupant = muc->getOccupant(message->getFrom().getResource());
		if (occupant.getRealJID()) {
			jid = occupant.getRealJID().get();
		}
	}
	foreach (User user, users_) {
		if (user.getJID().equals(jid.toBare(), JID::WithoutResource)) {
			return user.getRole();
		}
	}
	return User::Unknown;
}