diff --git a/web/cashtab/src/assets/styles/theme.js b/web/cashtab/src/assets/styles/theme.js
--- a/web/cashtab/src/assets/styles/theme.js
+++ b/web/cashtab/src/assets/styles/theme.js
@@ -11,6 +11,7 @@
text: {
primary: '#273498',
secondary: '#273498',
+ link: '#20242d',
},
switch: {
activeCash: {
diff --git a/web/cashtab/src/components/Common/Atoms.js b/web/cashtab/src/components/Common/Atoms.js
--- a/web/cashtab/src/components/Common/Atoms.js
+++ b/web/cashtab/src/components/Common/Atoms.js
@@ -1,5 +1,9 @@
import styled from 'styled-components';
+export const CopyToClipBoardStyle = styled.span`
+ font-size: 20px;
+`;
+
export const LoadingCtn = styled.div`
width: 100%;
display: flex;
diff --git a/web/cashtab/src/components/Common/Notifications.js b/web/cashtab/src/components/Common/Notifications.js
--- a/web/cashtab/src/components/Common/Notifications.js
+++ b/web/cashtab/src/components/Common/Notifications.js
@@ -170,6 +170,15 @@
});
};
+const generalNotification = msg => {
+ const notificationStyle = getDeviceNotificationStyle();
+ notification.success({
+ message: msg,
+ icon:
You need at least @@ -130,14 +130,14 @@ exports[`Wallet with BCH balances and tokens 1`] = ` Array [
You need at least @@ -257,14 +257,14 @@ exports[`Wallet with BCH balances and tokens and state field 1`] = ` Array [
You need at least @@ -517,14 +517,14 @@ exports[`Without wallet defined 1`] = ` Array [
You need at least
diff --git a/web/cashtab/src/components/Wallet/Tx.js b/web/cashtab/src/components/Wallet/Tx.js
--- a/web/cashtab/src/components/Wallet/Tx.js
+++ b/web/cashtab/src/components/Wallet/Tx.js
@@ -7,7 +7,10 @@
ArrowDownOutlined,
ExperimentOutlined,
ExclamationOutlined,
+ CopyOutlined,
} from '@ant-design/icons';
+import { generalNotification } from '@components/Common/Notifications';
+import { CopyToClipBoardStyle } from '@components/Common/Atoms';
import { currency } from '@components/Common/Ticker';
import makeBlockie from 'ethereum-blockies-base64';
import { Img } from 'react-image';
@@ -193,6 +196,18 @@
}
`;
+const handleCopyMsgToClipboard = (message, e) => {
+ // prevent the click of the clipboard button from opening up the explorer link
+ if (e) {
+ e.stopPropagation();
+ }
+
+ // @TODO: back out the Buffer.from().toString() conversion once D10821 lands
+ navigator.clipboard.writeText(Buffer.from(message).toString());
+
+ generalNotification('Message copied to clipboard');
+};
+
const Tx = ({ data, fiatPrice, fiatCurrency }) => {
const txDate =
typeof data.blocktime === 'undefined'
@@ -459,8 +474,24 @@
) : (
''
)}
+
+ {data.opReturnMessage ? (
+