From a23e489adce3c1ad415008b8a3fab2927ebb5445 Mon Sep 17 00:00:00 2001
From: Maria Rushkova <66270386+mrushkova@users.noreply.github.com>
Date: Tue, 4 Jan 2022 16:03:51 +0100
Subject: [PATCH] Logout modal (#170)
* Fix mention in input
* Extract buttons style
* Add logout modal
---
packages/react-chat-example/src/index.tsx | 2 +-
.../src/components/Buttons/buttonStyle.ts | 21 +++-
packages/react-chat/src/components/Chat.tsx | 2 +
.../src/components/Chat/ChatInput.tsx | 2 +-
.../src/components/Members/MembersList.tsx | 12 +--
.../src/components/Modals/LinkModal.tsx | 21 +---
.../src/components/Modals/LogoutModal.tsx | 98 +++++++++++++++++++
.../src/components/Modals/ProfileModal.tsx | 11 ++-
8 files changed, 136 insertions(+), 33 deletions(-)
create mode 100644 packages/react-chat/src/components/Modals/LogoutModal.tsx
diff --git a/packages/react-chat-example/src/index.tsx b/packages/react-chat-example/src/index.tsx
index 880fc5f1..96885d23 100644
--- a/packages/react-chat-example/src/index.tsx
+++ b/packages/react-chat-example/src/index.tsx
@@ -76,7 +76,7 @@ function DragDiv() {
diff --git a/packages/react-chat/src/components/Buttons/buttonStyle.ts b/packages/react-chat/src/components/Buttons/buttonStyle.ts
index d531e9f7..fd29e47b 100644
--- a/packages/react-chat/src/components/Buttons/buttonStyle.ts
+++ b/packages/react-chat/src/components/Buttons/buttonStyle.ts
@@ -1,4 +1,4 @@
-import { css } from "styled-components";
+import styled, { css } from "styled-components";
export const buttonStyles = css`
font-family: "Inter";
@@ -38,3 +38,22 @@ export const buttonTransparentStyles = css`
background: ${({ theme }) => theme.buttonBg};
}
`;
+
+export const ButtonNo = styled.button`
+ padding: 11px 24px;
+ margin-right: 16px;
+
+ ${buttonStyles}
+ background: ${({ theme }) => theme.buttonNoBg};
+ color: ${({ theme }) => theme.redColor};
+
+ &:hover {
+ background: ${({ theme }) => theme.buttonNoBgHover};
+ }
+`;
+
+export const ButtonYes = styled.button`
+ padding: 11px 24px;
+
+ ${buttonStyles}
+`;
diff --git a/packages/react-chat/src/components/Chat.tsx b/packages/react-chat/src/components/Chat.tsx
index 4f99c0fe..83707e35 100644
--- a/packages/react-chat/src/components/Chat.tsx
+++ b/packages/react-chat/src/components/Chat.tsx
@@ -13,6 +13,7 @@ import { Members } from "./Members/Members";
import { CoinbaseModal } from "./Modals/CoinbaseModal";
import { CommunityModal } from "./Modals/CommunityModal";
import { EditModal } from "./Modals/EditModal";
+import { LogoutModal } from "./Modals/LogoutModal";
import { ProfileModal } from "./Modals/ProfileModal";
import { StatusModal } from "./Modals/StatusModal";
import { UserCreationModal } from "./Modals/UserCreationModal";
@@ -32,6 +33,7 @@ function Modals() {
+
>
);
}
diff --git a/packages/react-chat/src/components/Chat/ChatInput.tsx b/packages/react-chat/src/components/Chat/ChatInput.tsx
index f101fb7c..6db6ca09 100644
--- a/packages/react-chat/src/components/Chat/ChatInput.tsx
+++ b/packages/react-chat/src/components/Chat/ChatInput.tsx
@@ -375,7 +375,7 @@ const Input = styled.div`
}
& > span {
- display: inline-block;
+ display: inline;
color: ${({ theme }) => theme.mentionColor};
background: ${({ theme }) => theme.mentionBg};
border-radius: 4px;
diff --git a/packages/react-chat/src/components/Members/MembersList.tsx b/packages/react-chat/src/components/Members/MembersList.tsx
index b4756a04..06af8281 100644
--- a/packages/react-chat/src/components/Members/MembersList.tsx
+++ b/packages/react-chat/src/components/Members/MembersList.tsx
@@ -3,14 +3,12 @@ import { utils } from "status-communities/dist/cjs";
import { bufToHex } from "status-communities/dist/cjs/utils";
import styled from "styled-components";
-import {
- useIdentity,
- useNickname,
- useSetIdentity,
-} from "../../contexts/identityProvider";
+import { useIdentity, useNickname } from "../../contexts/identityProvider";
import { useMessengerContext } from "../../contexts/messengerProvider";
+import { useModal } from "../../contexts/modalProvider";
import { buttonStyles } from "../Buttons/buttonStyle";
import { LogoutIcon } from "../Icons/LogoutIcon";
+import { LogoutModalName } from "../Modals/LogoutModal";
import { Member } from "./Member";
@@ -21,8 +19,8 @@ interface MembersListProps {
export function MembersList({ switchShowMembers }: MembersListProps) {
const { contacts } = useMessengerContext();
const identity = useIdentity();
+ const { setModal } = useModal(LogoutModalName);
- const logout = useSetIdentity();
const nickname = useNickname();
const userContacts = useMemo(() => {
@@ -58,7 +56,7 @@ export function MembersList({ switchShowMembers }: MembersListProps) {
}}
isYou={true}
/>
- logout(undefined)}>
+ setModal(true)}>
diff --git a/packages/react-chat/src/components/Modals/LinkModal.tsx b/packages/react-chat/src/components/Modals/LinkModal.tsx
index e288298c..6c260bc8 100644
--- a/packages/react-chat/src/components/Modals/LinkModal.tsx
+++ b/packages/react-chat/src/components/Modals/LinkModal.tsx
@@ -2,7 +2,7 @@ import React from "react";
import styled from "styled-components";
import { useModal } from "../../contexts/modalProvider";
-import { buttonStyles } from "../Buttons/buttonStyle";
+import { ButtonNo, ButtonYes } from "../Buttons/buttonStyle";
import { textMediumStyles } from "../Text";
import { Modal } from "./Modal";
@@ -46,22 +46,3 @@ const Link = styled.a`
${textMediumStyles}
`;
-
-const ButtonNo = styled.button`
- padding: 11px 24px;
- margin-right: 16px;
-
- ${buttonStyles}
- background: ${({ theme }) => theme.buttonNoBg};
- color: ${({ theme }) => theme.redColor};
-
- &:hover {
- background: ${({ theme }) => theme.buttonNoBgHover};
- }
-`;
-
-const ButtonYes = styled.button`
- padding: 11px 24px;
-
- ${buttonStyles}
-`;
diff --git a/packages/react-chat/src/components/Modals/LogoutModal.tsx b/packages/react-chat/src/components/Modals/LogoutModal.tsx
new file mode 100644
index 00000000..a720367b
--- /dev/null
+++ b/packages/react-chat/src/components/Modals/LogoutModal.tsx
@@ -0,0 +1,98 @@
+import React from "react";
+import { utils } from "status-communities/dist/cjs";
+import styled from "styled-components";
+
+import {
+ useIdentity,
+ useNickname,
+ useSetIdentity,
+} from "../../contexts/identityProvider";
+import { useModal } from "../../contexts/modalProvider";
+import { ButtonNo, ButtonYes } from "../Buttons/buttonStyle";
+import { UserLogo } from "../Members/UserLogo";
+
+import { Modal } from "./Modal";
+import { ButtonSection, Heading, Section, Text } from "./ModalStyle";
+import {
+ EmojiKey,
+ UserAddress,
+ UserAddressWrapper,
+ UserName,
+ UserNameWrapper,
+} from "./ProfileModal";
+
+export const LogoutModalName = "LogoutModal";
+
+export const LogoutModal = () => {
+ const { setModal } = useModal(LogoutModalName);
+ const logout = useSetIdentity();
+ const identity = useIdentity();
+ const nickname = useNickname();
+
+ if (identity) {
+ return (
+
+
+
+ Do you want to disconnect your profile?
+
+
+
+ {" "}
+ {nickname}
+
+
+
+
+ {" "}
+ Chatkey: {identity.privateKey.slice(0, 10)}...
+ {identity.privateKey.slice(-3)}{" "}
+
+
+ π©ππ₯π¦ππ‘π
π»β£οΈπβΈπ΅π
±
+
+
+
+ {
+ setModal(false);
+ logout(undefined);
+ }}
+ >
+ Disconnect
+
+ {
+ setModal(false);
+ }}
+ >
+ Stay Connected
+
+
+
+ );
+ }
+
+ return null;
+};
+
+const UserSection = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin: 8px 0;
+`;
diff --git a/packages/react-chat/src/components/Modals/ProfileModal.tsx b/packages/react-chat/src/components/Modals/ProfileModal.tsx
index d0a5a312..a662e459 100644
--- a/packages/react-chat/src/components/Modals/ProfileModal.tsx
+++ b/packages/react-chat/src/components/Modals/ProfileModal.tsx
@@ -303,7 +303,7 @@ const ProfileIcon = styled.div`
}
`;
-const UserNameWrapper = styled.div`
+export const UserNameWrapper = styled.div`
display: flex;
justify-content: center;
align-items: center;
@@ -312,9 +312,13 @@ const UserNameWrapper = styled.div`
& > svg {
fill: ${({ theme }) => theme.tertiary};
}
+
+ &.logout {
+ margin: 8px 0;
+ }
`;
-const UserName = styled.p`
+export const UserName = styled.p`
color: ${({ theme }) => theme.primary};
font-weight: bold;
font-size: 22px;
@@ -337,7 +341,7 @@ const UserTrueName = styled.p`
margin-top: 8px;
`;
-const UserAddressWrapper = styled.div`
+export const UserAddressWrapper = styled.div`
display: flex;
justify-content: center;
align-items: center;
@@ -370,6 +374,7 @@ export const EmojiKey = styled.div`
letter-spacing: 0.2px;
&.small {
+ width: 83px;
${textSmallStyles}
}
`;