Logout modal (#170)

* Fix mention in input

* Extract buttons style

* Add logout modal
This commit is contained in:
Maria Rushkova 2022-01-04 16:03:51 +01:00 committed by GitHub
parent 8794782a4e
commit a23e489adc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 136 additions and 33 deletions

View File

@ -76,7 +76,7 @@ function DragDiv() {
<ReactChat <ReactChat
theme={theme ? lightTheme : darkTheme} theme={theme ? lightTheme : darkTheme}
communityKey={ communityKey={
"0x03e28ca2c56526d3ebd673e779bea6aff740cf16227dc0f284fc73e5b26c0942ef" "0x03c07c5a31d5a662b670a9caaccd131bb2cfad0659bcc031205f22d5788b97e3d2"
} }
fetchMetadata={fetchMetadata} fetchMetadata={fetchMetadata}
/> />

View File

@ -1,4 +1,4 @@
import { css } from "styled-components"; import styled, { css } from "styled-components";
export const buttonStyles = css` export const buttonStyles = css`
font-family: "Inter"; font-family: "Inter";
@ -38,3 +38,22 @@ export const buttonTransparentStyles = css`
background: ${({ theme }) => theme.buttonBg}; 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}
`;

View File

@ -13,6 +13,7 @@ import { Members } from "./Members/Members";
import { CoinbaseModal } from "./Modals/CoinbaseModal"; import { CoinbaseModal } from "./Modals/CoinbaseModal";
import { CommunityModal } from "./Modals/CommunityModal"; import { CommunityModal } from "./Modals/CommunityModal";
import { EditModal } from "./Modals/EditModal"; import { EditModal } from "./Modals/EditModal";
import { LogoutModal } from "./Modals/LogoutModal";
import { ProfileModal } from "./Modals/ProfileModal"; import { ProfileModal } from "./Modals/ProfileModal";
import { StatusModal } from "./Modals/StatusModal"; import { StatusModal } from "./Modals/StatusModal";
import { UserCreationModal } from "./Modals/UserCreationModal"; import { UserCreationModal } from "./Modals/UserCreationModal";
@ -32,6 +33,7 @@ function Modals() {
<WalletModal /> <WalletModal />
<WalletConnectModal /> <WalletConnectModal />
<CoinbaseModal /> <CoinbaseModal />
<LogoutModal />
</> </>
); );
} }

View File

@ -375,7 +375,7 @@ const Input = styled.div`
} }
& > span { & > span {
display: inline-block; display: inline;
color: ${({ theme }) => theme.mentionColor}; color: ${({ theme }) => theme.mentionColor};
background: ${({ theme }) => theme.mentionBg}; background: ${({ theme }) => theme.mentionBg};
border-radius: 4px; border-radius: 4px;

View File

@ -3,14 +3,12 @@ import { utils } from "status-communities/dist/cjs";
import { bufToHex } from "status-communities/dist/cjs/utils"; import { bufToHex } from "status-communities/dist/cjs/utils";
import styled from "styled-components"; import styled from "styled-components";
import { import { useIdentity, useNickname } from "../../contexts/identityProvider";
useIdentity,
useNickname,
useSetIdentity,
} from "../../contexts/identityProvider";
import { useMessengerContext } from "../../contexts/messengerProvider"; import { useMessengerContext } from "../../contexts/messengerProvider";
import { useModal } from "../../contexts/modalProvider";
import { buttonStyles } from "../Buttons/buttonStyle"; import { buttonStyles } from "../Buttons/buttonStyle";
import { LogoutIcon } from "../Icons/LogoutIcon"; import { LogoutIcon } from "../Icons/LogoutIcon";
import { LogoutModalName } from "../Modals/LogoutModal";
import { Member } from "./Member"; import { Member } from "./Member";
@ -21,8 +19,8 @@ interface MembersListProps {
export function MembersList({ switchShowMembers }: MembersListProps) { export function MembersList({ switchShowMembers }: MembersListProps) {
const { contacts } = useMessengerContext(); const { contacts } = useMessengerContext();
const identity = useIdentity(); const identity = useIdentity();
const { setModal } = useModal(LogoutModalName);
const logout = useSetIdentity();
const nickname = useNickname(); const nickname = useNickname();
const userContacts = useMemo(() => { const userContacts = useMemo(() => {
@ -58,7 +56,7 @@ export function MembersList({ switchShowMembers }: MembersListProps) {
}} }}
isYou={true} isYou={true}
/> />
<LogoutBtn onClick={() => logout(undefined)}> <LogoutBtn onClick={() => setModal(true)}>
<LogoutIcon /> <LogoutIcon />
</LogoutBtn> </LogoutBtn>
</Row> </Row>

View File

@ -2,7 +2,7 @@ import React from "react";
import styled from "styled-components"; import styled from "styled-components";
import { useModal } from "../../contexts/modalProvider"; import { useModal } from "../../contexts/modalProvider";
import { buttonStyles } from "../Buttons/buttonStyle"; import { ButtonNo, ButtonYes } from "../Buttons/buttonStyle";
import { textMediumStyles } from "../Text"; import { textMediumStyles } from "../Text";
import { Modal } from "./Modal"; import { Modal } from "./Modal";
@ -46,22 +46,3 @@ const Link = styled.a`
${textMediumStyles} ${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}
`;

View File

@ -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 (
<Modal name={LogoutModalName}>
<Section>
<Heading>Disconnect</Heading>
</Section>
<Section>
<Text>Do you want to disconnect your profile?</Text>
<UserSection>
<UserLogo
contact={{
id: utils.bufToHex(identity.publicKey),
customName: nickname,
trueName: utils.bufToHex(identity.publicKey),
}}
radius={80}
colorWheel={[
["red", 150],
["blue", 250],
["green", 360],
]}
/>
<UserNameWrapper className="logout">
{" "}
<UserName className="small">{nickname}</UserName>
</UserNameWrapper>
<UserAddressWrapper className="small">
<UserAddress className="small">
{" "}
Chatkey: {identity.privateKey.slice(0, 10)}...
{identity.privateKey.slice(-3)}{" "}
</UserAddress>
</UserAddressWrapper>
<EmojiKey className="small">🎩🍞🥑🦍🌈📡💅🏻🔔👵🅱</EmojiKey>
</UserSection>
</Section>
<ButtonSection>
<ButtonNo
onClick={() => {
setModal(false);
logout(undefined);
}}
>
Disconnect
</ButtonNo>
<ButtonYes
onClick={() => {
setModal(false);
}}
>
Stay Connected
</ButtonYes>
</ButtonSection>
</Modal>
);
}
return null;
};
const UserSection = styled.div`
display: flex;
flex-direction: column;
align-items: center;
margin: 8px 0;
`;

View File

@ -303,7 +303,7 @@ const ProfileIcon = styled.div`
} }
`; `;
const UserNameWrapper = styled.div` export const UserNameWrapper = styled.div`
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -312,9 +312,13 @@ const UserNameWrapper = styled.div`
& > svg { & > svg {
fill: ${({ theme }) => theme.tertiary}; fill: ${({ theme }) => theme.tertiary};
} }
&.logout {
margin: 8px 0;
}
`; `;
const UserName = styled.p` export const UserName = styled.p`
color: ${({ theme }) => theme.primary}; color: ${({ theme }) => theme.primary};
font-weight: bold; font-weight: bold;
font-size: 22px; font-size: 22px;
@ -337,7 +341,7 @@ const UserTrueName = styled.p`
margin-top: 8px; margin-top: 8px;
`; `;
const UserAddressWrapper = styled.div` export const UserAddressWrapper = styled.div`
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -370,6 +374,7 @@ export const EmojiKey = styled.div`
letter-spacing: 0.2px; letter-spacing: 0.2px;
&.small { &.small {
width: 83px;
${textSmallStyles} ${textSmallStyles}
} }
`; `;