add new ad-hoc command to forward unread messages then disconnect. Thanks Geobert.
This commit is contained in:
		
							parent
							
								
									3d6f65defb
								
							
						
					
					
						commit
						25d251b455
					
				
					 3 changed files with 43 additions and 6 deletions
				
			
		|  | @ -290,6 +290,41 @@ class ForwardMessagesCommand(AdHocCommand): | |||
| 
 | ||||
|         return False    # finish the session | ||||
| 
 | ||||
| class FwdMsgThenDisconnectCommand(AdHocCommand): | ||||
|     commandnode = 'fwd-msd-disconnect' | ||||
|     commandname = _('Forward unread message then disconnect') | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def isVisibleFor(samejid): | ||||
|         """ | ||||
|         Change status is visible only if the entity has the same bare jid | ||||
|         """ | ||||
|         return samejid | ||||
| 
 | ||||
|     def execute(self, request): | ||||
|         account = self.connection.name | ||||
|         # Forward messages | ||||
|         events = gajim.events.get_events(account, types=['chat', 'normal']) | ||||
|         j, resource = gajim.get_room_and_nick_from_fjid(self.jid) | ||||
|         for jid in events: | ||||
|             for event in events[jid]: | ||||
|                 self.connection.send_message(j, event.parameters[0], '', | ||||
|                     type_=event.type_, subject=event.parameters[1], | ||||
|                     resource=resource, forward_from=jid, delayed=event.time_, | ||||
|                     now=True) | ||||
| 
 | ||||
|         response, cmd = self.buildResponse(request, status = 'completed') | ||||
|         cmd.addChild('note', {}, _('The status has been changed.')) | ||||
| 
 | ||||
|         # if going offline, we need to push response so it won't go into | ||||
|         # queue and disappear | ||||
|         self.connection.connection.send(response, now = True) | ||||
| 
 | ||||
|         # send new status | ||||
|         gajim.interface.roster.send_status(self.connection.name, 'offline', '') | ||||
|         # finish the session | ||||
|         return False | ||||
| 
 | ||||
| class ConnectionCommands: | ||||
|     """ | ||||
|     This class depends on that it is a part of Connection() class | ||||
|  | @ -299,7 +334,7 @@ class ConnectionCommands: | |||
|         # a list of all commands exposed: node -> command class | ||||
|         self.__commands = {} | ||||
|         for cmdobj in (ChangeStatusCommand, ForwardMessagesCommand, | ||||
|         LeaveGroupchatsCommand): | ||||
|         LeaveGroupchatsCommand, FwdMsgThenDisconnectCommand): | ||||
|             self.__commands[cmdobj.commandnode] = cmdobj | ||||
| 
 | ||||
|         # a list of sessions; keys are tuples (jid, sessionid, node) | ||||
|  |  | |||
|  | @ -1606,11 +1606,12 @@ class Connection(CommonConnection, ConnectionHandlers): | |||
|     def send_message(self, jid, msg, keyID, type_='chat', subject='', | ||||
|     chatstate=None, msg_id=None, composing_xep=None, resource=None, | ||||
|     user_nick=None, xhtml=None, session=None, forward_from=None, form_node=None, | ||||
|     original_message=None, delayed=None, callback=None, callback_args=[]): | ||||
|     original_message=None, delayed=None, callback=None, callback_args=[], | ||||
|     now=False): | ||||
| 
 | ||||
|         def cb(jid, msg, keyID, forward_from, session, original_message, subject, | ||||
|         type_, msg_iq): | ||||
|             msg_id = self.connection.send(msg_iq) | ||||
|         def cb(jid, msg, keyID, forward_from, session, original_message, | ||||
|         subject, type_, msg_iq): | ||||
|             msg_id = self.connection.send(msg_iq, now=now) | ||||
|             jid = helpers.parse_jid(jid) | ||||
|             self.dispatch('MSGSENT', (jid, msg, keyID)) | ||||
|             if callback: | ||||
|  |  | |||
|  | @ -310,7 +310,8 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf): | |||
|     def send_message(self, jid, msg, keyID, type_='chat', subject='', | ||||
|     chatstate=None, msg_id=None, composing_xep=None, resource=None, | ||||
|     user_nick=None, xhtml=None, session=None, forward_from=None, form_node=None, | ||||
|     original_message=None, delayed=None, callback=None, callback_args=[]): | ||||
|     original_message=None, delayed=None, callback=None, callback_args=[], | ||||
|     now=True): | ||||
| 
 | ||||
|         def on_send_ok(msg_id): | ||||
|             self.dispatch('MSGSENT', (jid, msg, keyID)) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue