Sharp.Xmpp icon indicating copy to clipboard operation
Sharp.Xmpp copied to clipboard

MultiUserChat.SetPrivilege called Get, but never Set - Bug

Open cimframe opened this issue 8 years ago • 0 comments

The SetPrivilege methods never called set, hence never set any affiliation or role values. Instead, these overridden methods called a superfluous method PostSetPrivilege which did a get, but the purpose of the methods is in question. I propose rewriting the methods to do a set (hence, their name) and an example of one of the methods would look as follows:

		/// <summary>
		/// Allows owners and admins to change affiliations for an occupant.
		/// </summary>
		public bool SetPrivilege (Jid room, string nickname, Affiliation affiliation, string reason = null) {

			room.ThrowIfNull ("room");
			nickname.ThrowIfNull ("nickname");

			var item = Xml.Element ("item")
				.Attr ("affiliation", affiliation.ToString ().ToLower ())
				.Attr ("nick", nickname);

			if (!string.IsNullOrWhiteSpace (reason)) {
				item.Child (Xml.Element ("reason").Text (reason));
			}

			var queryElement = Xml.Element ("query", MucNs.NsAdmin)
				.Child (item);

			var iq = im.IqRequest (IqType.Set, room, im.Jid, queryElement);

			return iq.Type == IqType.Result;
		}

cimframe avatar Feb 11 '17 00:02 cimframe