From ab093ffc624bdb2cb590a50b9cea9b3c1d3ef343 Mon Sep 17 00:00:00 2001
From: William Grant
Date: Fri, 26 Apr 2024 12:29:00 +1000
Subject: [PATCH] feat: replace react-qr-svg with react-qrcode-logo
updated error correction to 25%
---
package.json | 2 +-
stylesheets/_session.scss | 24 --------------------
ts/components/dialog/EditProfileDialog.tsx | 19 +++++++---------
ts/components/dialog/SessionSeedModal.tsx | 20 ++++++-----------
ts/util/saveQRCode.ts | 26 +++++-----------------
yarn.lock | 20 ++++++++---------
6 files changed, 32 insertions(+), 79 deletions(-)
diff --git a/package.json b/package.json
index 83c3119ed..c9fdf44b8 100644
--- a/package.json
+++ b/package.json
@@ -117,7 +117,7 @@
"react-h5-audio-player": "^3.2.0",
"react-intersection-observer": "^9.7.0",
"react-mentions": "^4.4.9",
- "react-qr-svg": "^2.2.1",
+ "react-qrcode-logo": "^2.10.0",
"react-redux": "8.0.4",
"react-toastify": "^6.0.9",
"react-use": "^17.4.0",
diff --git a/stylesheets/_session.scss b/stylesheets/_session.scss
index 37258d6ff..3ac42138b 100644
--- a/stylesheets/_session.scss
+++ b/stylesheets/_session.scss
@@ -413,21 +413,6 @@ label {
}
}
-.qr-image {
- display: flex;
- justify-content: center;
-
- background: var(--white-color);
- padding: 0.5rem;
- svg {
- width: 135px;
- height: 135px;
- border-radius: 3px;
- padding: var(--margins-xs);
- background-color: var(--white-color);
- }
-}
-
.conversation-loader {
position: absolute;
top: 50%;
@@ -447,15 +432,6 @@ label {
background-color: var(--background-secondary-color);
}
-#qr svg,
-.qr-image svg {
- width: $session-modal-size-sm;
- height: $session-modal-size-sm;
- padding: var(--margins-xs);
- background-color: var(--white-color);
- border-radius: 3px;
-}
-
.messages li {
transition: var(--default-duration) !important;
}
diff --git a/ts/components/dialog/EditProfileDialog.tsx b/ts/components/dialog/EditProfileDialog.tsx
index ef5996ee0..5e18e5bfb 100644
--- a/ts/components/dialog/EditProfileDialog.tsx
+++ b/ts/components/dialog/EditProfileDialog.tsx
@@ -1,7 +1,6 @@
-import { useDispatch } from 'react-redux';
-// eslint-disable-next-line import/no-named-default
import { ChangeEvent, MouseEvent, useState } from 'react';
-import { QRCode } from 'react-qr-svg';
+import { QRCode } from 'react-qrcode-logo';
+import { useDispatch } from 'react-redux';
import styled from 'styled-components';
import { Avatar, AvatarSize } from '../avatar/Avatar';
@@ -17,33 +16,31 @@ import { editProfileModal, updateEditProfilePictureModel } from '../../state/duc
import { saveQRCode } from '../../util/saveQRCode';
import { setLastProfileUpdateTimestamp } from '../../util/storage';
import { SessionWrapperModal } from '../SessionWrapperModal';
+import { Flex } from '../basic/Flex';
import { SessionButton, SessionButtonType } from '../basic/SessionButton';
import { SessionIconButton } from '../icon';
import { SessionSpinner } from '../loading';
+const qrCodeId = 'session-account-id';
const handleSaveQRCode = (event: MouseEvent) => {
event.preventDefault();
- saveQRCode('session-id', '220px', '220px', 'var(--white-color)', 'var(--black-color)');
+ saveQRCode(qrCodeId);
};
-const StyledQRView = styled.div`
+const StyledQRView = styled(Flex)`
cursor: pointer;
`;
const QRView = ({ sessionID }: { sessionID: string }) => {
return (
-
+
);
};
diff --git a/ts/components/dialog/SessionSeedModal.tsx b/ts/components/dialog/SessionSeedModal.tsx
index ec658973d..d0411ff98 100644
--- a/ts/components/dialog/SessionSeedModal.tsx
+++ b/ts/components/dialog/SessionSeedModal.tsx
@@ -1,9 +1,9 @@
import { MouseEvent, useState } from 'react';
-import { QRCode } from 'react-qr-svg';
import { useDispatch } from 'react-redux';
import useMount from 'react-use/lib/useMount';
import styled from 'styled-components';
+import { QRCode } from 'react-qrcode-logo';
import { Data } from '../../data/data';
import { ToastUtils } from '../../session/utils';
import { matchesHash } from '../../util/passwordUtils';
@@ -15,6 +15,7 @@ import { SpacerSM } from '../basic/Text';
import { saveQRCode } from '../../util/saveQRCode';
import { getCurrentRecoveryPhrase } from '../../util/storage';
import { SessionWrapperModal } from '../SessionWrapperModal';
+import { Flex } from '../basic/Flex';
import { SessionButton, SessionButtonColor, SessionButtonType } from '../basic/SessionButton';
interface PasswordProps {
@@ -99,28 +100,20 @@ interface SeedProps {
const StyledRecoveryPhrase = styled.i``;
-const StyledQRImage = styled.div`
- width: fit-content;
+const StyledQRImage = styled(Flex)`
margin: 0 auto var(--margins-lg);
cursor: pointer;
`;
+const qrCodeId = 'session-recovery-password';
const handleSaveQRCode = (event: MouseEvent) => {
event.preventDefault();
- saveQRCode(
- 'session-recovery-phrase',
- '220px',
- '220px',
- 'var(--white-color)',
- 'var(--black-color)'
- );
+ saveQRCode(qrCodeId);
};
const Seed = (props: SeedProps) => {
const { recoveryPhrase, onClickCopy } = props;
const i18n = window.i18n;
- const bgColor = 'var(--white-color)';
- const fgColor = 'var(--black-color)';
const dispatch = useDispatch();
const hexEncodedSeed = mnDecode(recoveryPhrase, 'english');
@@ -150,12 +143,13 @@ const Seed = (props: SeedProps) => {
-
+