|  |  |  | /* global Whisper, log */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // eslint-disable-next-line func-names
 | 
					
						
							|  |  |  | (function() { | 
					
						
							|  |  |  |   'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   window.Whisper = window.Whisper || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Whisper.AddModeratorsDialogView = Whisper.View.extend({ | 
					
						
							|  |  |  |     className: 'loki-dialog modal', | 
					
						
							|  |  |  |     async initialize(convo) { | 
					
						
							|  |  |  |       this.close = this.close.bind(this); | 
					
						
							|  |  |  |       this.onSubmit = this.onSubmit.bind(this); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.chatName = convo.get('name'); | 
					
						
							|  |  |  |       this.chatServer = convo.get('server'); | 
					
						
							|  |  |  |       this.channelId = convo.get('channelId'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // get current list of moderators
 | 
					
						
							|  |  |  |       this.channelAPI = await convo.getPublicSendData(); | 
					
						
							|  |  |  |       const modPubKeys = await this.channelAPI.getModerators(); | 
					
						
							|  |  |  |       const convos = window.getConversations().models; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // private contacts (not you) that aren't already moderators
 | 
					
						
							|  |  |  |       const contacts = convos.filter( | 
					
						
							|  |  |  |         d => | 
					
						
							|  |  |  |           !!d && | 
					
						
							|  |  |  |           d.isPrivate() && | 
					
						
							|  |  |  |           !d.isBlocked() && | 
					
						
							|  |  |  |           !d.isMe() && | 
					
						
							|  |  |  |           !modPubKeys.includes(d.id) | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.contacts = contacts; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.$el.focus(); | 
					
						
							|  |  |  |       this.render(); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     render() { | 
					
						
							|  |  |  |       const view = new Whisper.ReactWrapperView({ | 
					
						
							|  |  |  |         className: 'add-moderators-dialog', | 
					
						
							|  |  |  |         Component: window.Signal.Components.AddModeratorsDialog, | 
					
						
							|  |  |  |         props: { | 
					
						
							|  |  |  |           contactList: this.contacts, | 
					
						
							|  |  |  |           chatName: this.chatName, | 
					
						
							|  |  |  |           onSubmit: this.onSubmit, | 
					
						
							|  |  |  |           onClose: this.close, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.$el.append(view.el); | 
					
						
							|  |  |  |       return this; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     close() { | 
					
						
							|  |  |  |       this.remove(); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     async onSubmit(pubKeys) { | 
					
						
							|  |  |  |       log.info(`asked to add ${pubKeys}`); | 
					
						
							|  |  |  |       const res = await this.channelAPI.serverAPI.addModerators(pubKeys); | 
					
						
							|  |  |  |       if (res !== true) { | 
					
						
							|  |  |  |         // we have errors, deal with them...
 | 
					
						
							|  |  |  |         // how?
 | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | })(); |