From 9084f22ab1178f5698300f8c37c4d4ce0953daac Mon Sep 17 00:00:00 2001
From: Prateek Jain <44807945+Prateek93a@users.noreply.github.com>
Date: Tue, 17 Dec 2019 19:42:55 +0530
Subject: [PATCH] [IMPROVEMENT] Tap app and server version to copy to clipboard
 (#1425)

---
 app/views/SettingsView/index.js | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/app/views/SettingsView/index.js b/app/views/SettingsView/index.js
index 4ed1599a2..e6601737e 100644
--- a/app/views/SettingsView/index.js
+++ b/app/views/SettingsView/index.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import {
-	View, Linking, ScrollView, AsyncStorage, SafeAreaView, Switch, Text, Share
+	View, Linking, ScrollView, AsyncStorage, SafeAreaView, Switch, Text, Share, Clipboard
 } from 'react-native';
 import PropTypes from 'prop-types';
 import { connect } from 'react-redux';
@@ -31,6 +31,8 @@ import { themedHeader } from '../../utils/navigation';
 import SidebarView from '../SidebarView';
 import { withSplit } from '../../split';
 import Navigation from '../../lib/Navigation';
+import { LISTENER } from '../../containers/Toast';
+import EventEmitter from '../../utils/events';
 
 const SectionSeparator = React.memo(({ theme }) => (
 	<View
@@ -131,6 +133,20 @@ class SettingsView extends React.Component {
 		Share.share({ message: isAndroid ? PLAY_MARKET_LINK : APP_STORE_LINK });
 	}
 
+	copyServerVersion = () => {
+		const { server } = this.props;
+		this.saveToClipboard(server.version);
+	}
+
+	copyAppVersion = () => {
+		this.saveToClipboard(getReadableVersion);
+	}
+
+	saveToClipboard = async(content) => {
+		await Clipboard.setString(content);
+		EventEmitter.emit(LISTENER, { message: I18n.t('Copied_to_clipboard') });
+	}
+
 	changeTheme = () => {
 		const { navigation } = this.props;
 		navigation.navigate('ThemeView');
@@ -267,11 +283,19 @@ class SettingsView extends React.Component {
 						right={this.renderDisclosure}
 						theme={theme}
 					/>
+
 					<Separator theme={theme} />
-					<ListItem title={I18n.t('Version_no', { version: getReadableVersion })} testID='settings-view-version' theme={theme} />
+					<ListItem
+						title={I18n.t('Version_no', { version: getReadableVersion })}
+						onPress={this.copyAppVersion}
+						testID='settings-view-version'
+						theme={theme}
+					/>
 					<Separator theme={theme} />
+
 					<ListItem
 						title={I18n.t('Server_version', { version: server.version })}
+						onPress={this.copyServerVersion}
 						subtitle={`${ server.server.split('//')[1] }`}
 						testID='settings-view-server-version'
 						theme={theme}
-- 
GitLab