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.
		
		
		
		
		
			
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
| import React from 'react';
 | |
| import { SessionIconButton, SessionIconSize, SessionIconType } from '../icon';
 | |
| 
 | |
| import { SessionSettingCategory, SettingsViewProps } from './SessionSettings';
 | |
| import { SessionButton } from '../SessionButton';
 | |
| 
 | |
| export class SettingsHeader extends React.Component<SettingsViewProps, any> {
 | |
|   public constructor(props: any) {
 | |
|     super(props);
 | |
|     this.state = {
 | |
|       disableLinkDeviceButton: true,
 | |
|     };
 | |
|     this.showAddLinkedDeviceModal = this.showAddLinkedDeviceModal.bind(this);
 | |
|   }
 | |
| 
 | |
|   public focusSearch() {
 | |
|     $('.left-pane-setting-section .session-search-input input').focus();
 | |
|   }
 | |
| 
 | |
|   public showAddLinkedDeviceModal() {
 | |
|     window.Whisper.events.trigger('showDevicePairingDialog');
 | |
|   }
 | |
| 
 | |
|   public componentDidMount() {
 | |
|     window.Whisper.events.on('refreshLinkedDeviceList', async () => {
 | |
|       this.refreshLinkedDevice();
 | |
|     });
 | |
|     this.refreshLinkedDevice();
 | |
|   }
 | |
| 
 | |
|   public refreshLinkedDevice() {
 | |
|     const ourPubKey = window.textsecure.storage.user.getNumber();
 | |
| 
 | |
|     window.libloki.storage
 | |
|       .getSecondaryDevicesFor(ourPubKey)
 | |
|       .then((pubKeys: any) => {
 | |
|         this.setState({
 | |
|           disableLinkDeviceButton: pubKeys && pubKeys.length > 0,
 | |
|         });
 | |
|       });
 | |
|   }
 | |
| 
 | |
|   public componentWillUnmount() {
 | |
|     window.Whisper.events.off('refreshLinkedDeviceList');
 | |
|   }
 | |
| 
 | |
|   public render() {
 | |
|     const { category } = this.props;
 | |
|     const { disableLinkDeviceButton } = this.state;
 | |
|     const categoryString = String(category);
 | |
|     const categoryTitlePrefix =
 | |
|       categoryString[0].toUpperCase() + categoryString.substr(1);
 | |
|     // Remove 's' on the end to keep words in singular form
 | |
|     const categoryTitle =
 | |
|       categoryTitlePrefix[categoryTitlePrefix.length - 1] === 's'
 | |
|         ? `${categoryTitlePrefix.slice(0, -1)} Settings`
 | |
|         : `${categoryTitlePrefix} Settings`;
 | |
|     const showSearch = false;
 | |
|     const showAddDevice = category === SessionSettingCategory.Devices;
 | |
| 
 | |
|     return (
 | |
|       <div className="session-settings-header">
 | |
|         <div className="session-settings-header-title">{categoryTitle}</div>
 | |
|         {showSearch && (
 | |
|           <SessionIconButton
 | |
|             iconType={SessionIconType.Search}
 | |
|             iconSize={SessionIconSize.Huge}
 | |
|             onClick={this.focusSearch}
 | |
|           />
 | |
|         )}
 | |
|         {showAddDevice && (
 | |
|           <SessionButton
 | |
|             text={window.i18n('linkNewDevice')}
 | |
|             onClick={this.showAddLinkedDeviceModal}
 | |
|             disabled={disableLinkDeviceButton}
 | |
|           />
 | |
|         )}
 | |
|       </div>
 | |
|     );
 | |
|   }
 | |
| }
 |