You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
| 
								 
											6 years ago
										 
									 | 
							
								/* global Whisper */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line func-names
							 | 
						||
| 
								 | 
							
								(function() {
							 | 
						||
| 
								 | 
							
								  'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  window.Whisper = window.Whisper || {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  Whisper.RemoveModeratorsDialogView = 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;
							 | 
						||
| 
								 | 
							
								      const moderators = modPubKeys
							 | 
						||
| 
								 | 
							
								        .map(
							 | 
						||
| 
								 | 
							
								          pubKey =>
							 | 
						||
| 
								 | 
							
								            convos.find(c => c.id === pubKey) || {
							 | 
						||
| 
								 | 
							
								              id: pubKey, // memberList need a key
							 | 
						||
| 
								 | 
							
								              authorPhoneNumber: pubKey,
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        .filter(c => !!c);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      this.mods = moderators;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      this.$el.focus();
							 | 
						||
| 
								 | 
							
								      this.render();
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    render() {
							 | 
						||
| 
								 | 
							
								      const view = new Whisper.ReactWrapperView({
							 | 
						||
| 
								 | 
							
								        className: 'remove-moderators-dialog',
							 | 
						||
| 
								 | 
							
								        Component: window.Signal.Components.RemoveModeratorsDialog,
							 | 
						||
| 
								 | 
							
								        props: {
							 | 
						||
| 
								 | 
							
								          modList: this.mods,
							 | 
						||
| 
								 | 
							
								          onSubmit: this.onSubmit,
							 | 
						||
| 
								 | 
							
								          onClose: this.close,
							 | 
						||
| 
								 | 
							
								          chatName: this.chatName,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      this.$el.append(view.el);
							 | 
						||
| 
								 | 
							
								      return this;
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    close() {
							 | 
						||
| 
								 | 
							
								      this.remove();
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    async onSubmit(pubKeys) {
							 | 
						||
| 
								 | 
							
								      const res = await this.channelAPI.serverAPI.removeModerators(pubKeys);
							 | 
						||
| 
								 | 
							
								      if (res !== true) {
							 | 
						||
| 
								 | 
							
								        // we have errors, deal with them...
							 | 
						||
| 
								 | 
							
								        // how?
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								})();
							 |