Compare commits
	
		
			2 Commits
		
	
	
		
			ddb0066733
			...
			158860e1b0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 158860e1b0 | |||
| 759cd414ab | 
| @@ -95,35 +95,53 @@ void Bridge::registerCommands(void) { | ||||
| 			const auto contact_from = m.get<Message::Components::ContactFrom>().c; | ||||
| 			const auto contact_to = m.get<Message::Components::ContactTo>().c; | ||||
|  | ||||
| 			// TODO: if no vgroup name supplied | ||||
|  | ||||
| 			Contact3Handle group_contact; | ||||
| 			if (/*is public ?*/ _c_to_vg.count({_cr, contact_to})) { | ||||
| 				// message was sent public in group | ||||
| 				group_contact = {_cr, contact_to}; | ||||
| 			} else if (_cr.all_of<Contact::Components::Parent>(contact_from)) { | ||||
| 				// use parent of sender | ||||
| 				group_contact = {_cr, _cr.get<Contact::Components::Parent>(contact_from).parent}; | ||||
| 			} else if (false /* parent of contact_to ? */) { | ||||
| 			const VirtualGroups* vg = nullptr; | ||||
|  | ||||
| 			if (!params.empty()) { // vgroup_name supplied | ||||
| 				for (const auto& vg_it : _vgroups) { | ||||
| 					if (vg_it.vg_name == params) { | ||||
| 						vg = &vg_it; | ||||
| 						break; | ||||
| 					} | ||||
| 				} | ||||
| 				if (vg == nullptr) { | ||||
| 					_rmm.sendText( | ||||
| 						contact_from, | ||||
| 						"The supplied vgroup name does not exist!" | ||||
| 					); | ||||
| 					return true; | ||||
| 				} | ||||
| 			} else { | ||||
| 				if (/*is public ?*/ _c_to_vg.count({_cr, contact_to})) { | ||||
| 					// message was sent public in group | ||||
| 					group_contact = {_cr, contact_to}; | ||||
| 				} else if (_cr.all_of<Contact::Components::Parent>(contact_from)) { | ||||
| 					// use parent of sender | ||||
| 					group_contact = {_cr, _cr.get<Contact::Components::Parent>(contact_from).parent}; | ||||
| 				} else if (false /* parent of contact_to ? */) { | ||||
| 				} | ||||
|  | ||||
| 				if (!_c_to_vg.count(group_contact)) { | ||||
| 					// nope | ||||
| 					_rmm.sendText( | ||||
| 						contact_from, | ||||
| 						"It appears you are not bridged or forgot to supply the vgroup name!" | ||||
| 					); | ||||
| 					return true; | ||||
| 				} | ||||
|  | ||||
| 				assert(static_cast<bool>(group_contact)); | ||||
| 				vg = &_vgroups.at(_c_to_vg.at(group_contact)); | ||||
| 			} | ||||
|  | ||||
| 			if (!_c_to_vg.count(group_contact)) { | ||||
| 				// nope | ||||
| 				_rmm.sendText( | ||||
| 					contact_from, | ||||
| 					"It appears you are not bridged or forgot to supply the vgroup name!" | ||||
| 				); | ||||
| 				return true; | ||||
| 			} | ||||
|  | ||||
| 			assert(static_cast<bool>(group_contact)); | ||||
| 			const auto& vg = _vgroups.at(_c_to_vg.at(group_contact)); | ||||
| 			assert(vg != nullptr); | ||||
|  | ||||
| 			_rmm.sendText( | ||||
| 				contact_from, | ||||
| 				"Contacts online in other bridged group(s) in vgroup '" + vg.vg_name + "'" | ||||
| 				"Contacts online in other bridged group(s) in vgroup '" + vg->vg_name + "'" | ||||
| 			); | ||||
| 			for (const auto& vgc : vg.contacts) { | ||||
| 			for (const auto& vgc : vg->contacts) { | ||||
| 				if (vgc.c == group_contact) { | ||||
| 					// skip self | ||||
| 					continue; | ||||
| @@ -152,7 +170,7 @@ void Bridge::registerCommands(void) { | ||||
| 							"    '" + | ||||
| 							(_cr.all_of<Contact::Components::Name>(sub_c) ? _cr.get<Contact::Components::Name>(sub_c).name : "<unk>") + | ||||
| 							"'" + | ||||
| 							(_cr.all_of<Contact::Components::ID>(sub_c) ? " id:" + bin2hex(vgc.id) : "") | ||||
| 							(_cr.all_of<Contact::Components::ID>(sub_c) ? " id:" + bin2hex(_cr.get<Contact::Components::ID>(sub_c).data) : "") | ||||
| 						); | ||||
| 					} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user