Solve conflicts

This commit is contained in:
Nicola Benaglia 2025-04-10 09:08:02 +02:00
parent 2cce4ec7c6
commit d687db11f2
6 changed files with 1146 additions and 2319 deletions

View File

@ -1,9 +1,4 @@
import { import { Typography, Box, TextField, InputLabel } from "@mui/material";
Typography,
Box,
TextField,
InputLabel,
} from "@mui/material";
import { styled } from "@mui/system"; import { styled } from "@mui/system";
export const AppContainer = styled(Box)(({ theme }) => ({ export const AppContainer = styled(Box)(({ theme }) => ({
@ -11,9 +6,9 @@ export const AppContainer = styled(Box)(({ theme }) => ({
alignItems: "center", alignItems: "center",
flexDirection: "column", flexDirection: "column",
width: "100vw", width: "100vw",
background: "rgba(39, 40, 44, 1)",
height: "100vh", height: "100vh",
radius: "15px", radius: "15px",
overflow: 'hidden',
backgroundColor: theme.palette.background.default, backgroundColor: theme.palette.background.default,
color: theme.palette.text.primary, color: theme.palette.text.primary,
})); }));
@ -85,44 +80,70 @@ export const TextSpan = styled("span")(({ theme }) => ({
color: theme.palette.text.primary, color: theme.palette.text.primary,
})); }));
export const AddressBox = styled(Box)` export const AddressBox = styled(Box)(({ theme }) => ({
display: flex; display: "flex",
border: 1px solid var(--50-white, rgba(255, 255, 255, 0.5)); border: `1px solid ${
justify-content: space-between; theme.palette.mode === "dark"
align-items: center; ? "rgba(255, 255, 255, 0.5)"
width: auto; : "rgba(0, 0, 0, 0.3)"
height: 25px; }`,
padding: 5px 15px 5px 15px; justifyContent: "space-between",
gap: 5px; alignItems: "center",
border-radius: 100px; width: "auto",
font-family: Inter; height: "25px",
font-size: 12px; padding: "5px 15px",
font-weight: 600; gap: "5px",
line-height: 14.52px; borderRadius: "100px",
text-align: left; fontFamily: "Inter",
color: var(--50-white, rgba(255, 255, 255, 0.5)); fontSize: "12px",
cursor: pointer; fontWeight: 600,
transition: all 0.2s; lineHeight: "14.52px",
&:hover { textAlign: "left",
background-color: rgba(41, 41, 43, 1); backgroundColor: theme.palette.background.default,
color: white; color: theme.palette.text.primary,
svg path { cursor: "pointer",
fill: white; // Fill color changes to white on hover transition: "all 0.2s",
}
}
`;
export const CustomButton = styled(Box)` "&:hover": {
/* Authenticate */ backgroundColor:
theme.palette.mode === "dark"
? "rgba(41, 41, 43, 1)"
: "rgba(240, 240, 240, 1)",
color: theme.palette.mode === "dark" ? "#fff" : "#000",
box-sizing: border-box; "svg path": {
fill: theme.palette.mode === "dark" ? "#fff" : "#000",
},
},
}));
padding: 15px 20px; export const CustomButton = styled(Box)(({ theme }) => ({
gap: 10px; boxSizing: "border-box",
padding: "15px 20px",
gap: "10px",
border: 0.5px solid rgba(255, 255, 255, 0.5); border: `0.5px solid ${
filter: drop-shadow(1px 4px 10.5px rgba(0, 0, 0, 0.3)); theme.palette.mode === "dark"
border-radius: 5px; ? "rgba(255, 255, 255, 0.5)"
: "rgba(0, 0, 0, 0.3)"
}`,
filter: "drop-shadow(1px 4px 10.5px rgba(0, 0, 0, 0.3))",
borderRadius: "5px",
display: "inline-flex",
justifyContent: "center",
alignItems: "center",
width: "fit-content",
minWidth: "160px",
cursor: "pointer",
transition: "all 0.2s",
fontWeight: 600,
fontFamily: "Inter",
textAlign: "center",
backgroundColor: theme.palette.background.default,
color: theme.palette.text.primary,
"&:hover": { "&:hover": {
backgroundColor: backgroundColor:
@ -172,30 +193,18 @@ export const CustomButtonAccept = styled(Box)<CustomButtonProps>(
"&:hover": { "&:hover": {
opacity: 1, opacity: 1,
<<<<<<< HEAD
backgroundColor: bgColor || (theme.palette.mode === "dark" ? "rgba(41, 41, 43, 1)" : "rgba(230, 230, 230, 1)"), backgroundColor: bgColor || (theme.palette.mode === "dark" ? "rgba(41, 41, 43, 1)" : "rgba(230, 230, 230, 1)"),
color: color || "#fff", color: color || "#fff",
svg: { svg: {
path: { path: {
fill: color || "#fff", fill: color || "#fff",
=======
backgroundColor: bgColor ? bgColor : "rgba(41, 41, 43, 1)", // fallback hover bg
color: color || "white",
svg: {
path: {
fill: color || "white",
>>>>>>> ffb39b3 (Bind color and background to selected theme)
}, },
}, },
}, },
}) })
); );
<<<<<<< HEAD
export const CustomInput = styled(TextField)(({ theme }) => ({ export const CustomInput = styled(TextField)(({ theme }) => ({
=======
export const CustomInput = styled(TextField)({
>>>>>>> ffb39b3 (Bind color and background to selected theme)
width: "183px", // Adjust the width as needed width: "183px", // Adjust the width as needed
borderRadius: "5px", borderRadius: "5px",
// backgroundColor: "rgba(30, 30, 32, 1)", // backgroundColor: "rgba(30, 30, 32, 1)",
@ -236,7 +245,6 @@ export const CustomInput = styled(TextField)({
}, },
})); }));
<<<<<<< HEAD
export const CustomLabel = styled(InputLabel)(({ theme }) => ({ export const CustomLabel = styled(InputLabel)(({ theme }) => ({
fontWeight: 400, fontWeight: 400,
fontFamily: "Inter", fontFamily: "Inter",
@ -247,13 +255,3 @@ export const CustomLabel = styled(InputLabel)(({ theme }) => ({
? "rgba(255, 255, 255, 0.5)" ? "rgba(255, 255, 255, 0.5)"
: "rgba(0, 0, 0, 0.5)", : "rgba(0, 0, 0, 0.5)",
})); }));
=======
export const CustomLabel = styled(InputLabel)`
font-weight: 400;
font-family: Inter;
font-size: 10px;
line-height: 12px;
color: rgba(255, 255, 255, 0.5);
`;
>>>>>>> ffb39b3 (Bind color and background to selected theme)

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,11 @@
import React, { import React, { useCallback, useContext, useEffect, useRef, useState } from "react";
useCallback,
useContext,
useEffect,
useRef,
useState,
} from "react";
import { Spacer } from "../common/Spacer"; import { Spacer } from "../common/Spacer";
import { CustomButton, TextP, TextSpan } from "../App-styles"; import { CustomButton, TextItalic, TextP, TextSpan } from "../App-styles";
import { import {
Box, Box,
Button, Button,
ButtonBase, ButtonBase,
Checkbox,
Dialog, Dialog,
DialogActions, DialogActions,
DialogContent, DialogContent,
@ -22,33 +17,37 @@ import {
TextField, TextField,
Typography, Typography,
} from "@mui/material"; } from "@mui/material";
import Logo1 from "../assets/svgs/Logo1.svg";
import Logo1Dark from "../assets/svgs/Logo1Dark.svg"; import Logo1Dark from "../assets/svgs/Logo1Dark.svg";
import HelpIcon from "@mui/icons-material/Help"; import Info from "../assets/svgs/Info.svg";
import HelpIcon from '@mui/icons-material/Help';
import { CustomizedSnackbars } from "../components/Snackbar/Snackbar"; import { CustomizedSnackbars } from "../components/Snackbar/Snackbar";
import { cleanUrl, gateways } from "../background"; import { set } from "lodash";
import { cleanUrl, gateways, isUsingLocal } from "../background";
import { GlobalContext } from "../App"; import { GlobalContext } from "../App";
import Tooltip, { TooltipProps, tooltipClasses } from "@mui/material/Tooltip"; import Tooltip, { TooltipProps, tooltipClasses } from '@mui/material/Tooltip';
import ThemeSelector from "../components/Theme/ThemeSelector";
const manifestData = { const manifestData = {
version: "0.5.3", version: "0.5.3",
}; };
export const HtmlTooltip = styled(({ className, ...props }: TooltipProps) => ( export const HtmlTooltip = styled(({ className, ...props }: TooltipProps) => (
<Tooltip {...props} classes={{ popper: className }} /> <Tooltip {...props} classes={{ popper: className }} />
))(({ theme }) => ({ ))(({ theme }) => ({
[`& .${tooltipClasses.tooltip}`]: { [`& .${tooltipClasses.tooltip}`]: {
backgroundColor: "#232428", backgroundColor: '#232428',
color: "white", color: 'white',
maxWidth: 320, maxWidth: 320,
padding: "20px", padding: '20px',
fontSize: theme.typography.pxToRem(12), fontSize: theme.typography.pxToRem(12),
}, },
})); }));
function removeTrailingSlash(url) { function removeTrailingSlash(url) {
return url.replace(/\/+$/, ""); return url.replace(/\/+$/, '');
} }
export const NotAuthenticated = ({ export const NotAuthenticated = ({
getRootProps, getRootProps,
getInputProps, getInputProps,
@ -61,7 +60,7 @@ export const NotAuthenticated = ({
currentNode, currentNode,
setCurrentNode, setCurrentNode,
useLocalNode, useLocalNode,
setUseLocalNode, setUseLocalNode
}) => { }) => {
const [isValidApiKey, setIsValidApiKey] = useState<boolean | null>(null); const [isValidApiKey, setIsValidApiKey] = useState<boolean | null>(null);
const [hasLocalNode, setHasLocalNode] = useState<boolean | null>(null); const [hasLocalNode, setHasLocalNode] = useState<boolean | null>(null);
@ -99,30 +98,32 @@ export const NotAuthenticated = ({
setImportedApiKey(text); // Store the file content in the state setImportedApiKey(text); // Store the file content in the state
if(customNodes){ if(customNodes){
setCustomNodes((prev)=> { setCustomNodes((prev)=> {
const copyPrev = [...prev]; const copyPrev = [...prev]
const findLocalIndex = copyPrev?.findIndex( const findLocalIndex = copyPrev?.findIndex((item)=> item?.url === 'http://127.0.0.1:12391')
(item) => item?.url === "http://127.0.0.1:12391"
);
if(findLocalIndex === -1){ if(findLocalIndex === -1){
copyPrev.unshift({ copyPrev.unshift({
url: "http://127.0.0.1:12391", url: "http://127.0.0.1:12391",
apikey: text, apikey: text
}); })
} else { } else {
copyPrev[findLocalIndex] = { copyPrev[findLocalIndex] = {
url: "http://127.0.0.1:12391", url: "http://127.0.0.1:12391",
apikey: text, apikey: text
};
} }
window.sendMessage("setCustomNodes", copyPrev).catch((error) => { }
window
.sendMessage("setCustomNodes", copyPrev)
.catch((error) => {
console.error( console.error(
"Failed to set custom nodes:", "Failed to set custom nodes:",
error.message || "An error occurred" error.message || "An error occurred"
); );
}); });
return copyPrev; return copyPrev
}); })
} }
}; };
reader.readAsText(file); // Read the file as text reader.readAsText(file); // Read the file as text
} }
@ -140,11 +141,13 @@ export const NotAuthenticated = ({
const data = await response.json(); const data = await response.json();
if (data?.height) { if (data?.height) {
setHasLocalNode(true); setHasLocalNode(true);
return true; return true
} }
return false; return false
} catch (error) { } catch (error) {
return false; return false
} }
}, []); }, []);
@ -156,20 +159,18 @@ export const NotAuthenticated = ({
window window
.sendMessage("getCustomNodesFromStorage") .sendMessage("getCustomNodesFromStorage")
.then((response) => { .then((response) => {
setCustomNodes(response || []); setCustomNodes(response || []);
if(window?.electronAPI?.setAllowedDomains){ if(window?.electronAPI?.setAllowedDomains){
window.electronAPI.setAllowedDomains( window.electronAPI.setAllowedDomains(response?.map((node)=> node.url))
response?.map((node) => node.url)
);
} }
if(Array.isArray(response)){ if(Array.isArray(response)){
const findLocal = response?.find( const findLocal = response?.find((item)=> item?.url === 'http://127.0.0.1:12391')
(item) => item?.url === "http://127.0.0.1:12391"
);
if(findLocal && findLocal?.apikey){ if(findLocal && findLocal?.apikey){
setImportedApiKey(findLocal?.apikey); setImportedApiKey(findLocal?.apikey)
} }
} }
}) })
.catch((error) => { .catch((error) => {
console.error( console.error(
@ -190,31 +191,28 @@ export const NotAuthenticated = ({
hasLocalNodeRef.current = hasLocalNode; hasLocalNodeRef.current = hasLocalNode;
}, [hasLocalNode]); }, [hasLocalNode]);
const validateApiKey = useCallback(async (key, fromStartUp) => { const validateApiKey = useCallback(async (key, fromStartUp) => {
try { try {
if (key === "isGateway") return; if(key === "isGateway") return
const isLocalKey = cleanUrl(key?.url) === "127.0.0.1:12391"; const isLocalKey = cleanUrl(key?.url) === "127.0.0.1:12391";
if ( if (fromStartUp && key?.url && key?.apikey && !isLocalKey && !gateways.some(gateway => key?.url?.includes(gateway))) {
fromStartUp &&
key?.url &&
key?.apikey &&
!isLocalKey &&
!gateways.some((gateway) => key?.url?.includes(gateway))
) {
setCurrentNode({ setCurrentNode({
url: key?.url, url: key?.url,
apikey: key?.apikey, apikey: key?.apikey,
}); });
let isValid = false; let isValid = false
const url = `${key?.url}/admin/settings/localAuthBypassEnabled`; const url = `${key?.url}/admin/settings/localAuthBypassEnabled`;
const response = await fetch(url); const response = await fetch(url);
// Assuming the response is in plain text and will be 'true' or 'false' // Assuming the response is in plain text and will be 'true' or 'false'
const data = await response.text(); const data = await response.text();
if (data && data === "true") { if(data && data === 'true'){
isValid = true; isValid = true
} else { } else {
const url2 = `${key?.url}/admin/apikey/test?apiKey=${key?.apikey}`; const url2 = `${key?.url}/admin/apikey/test?apiKey=${key?.apikey}`;
const response2 = await fetch(url2); const response2 = await fetch(url2);
@ -222,18 +220,19 @@ export const NotAuthenticated = ({
// Assuming the response is in plain text and will be 'true' or 'false' // Assuming the response is in plain text and will be 'true' or 'false'
const data2 = await response2.text(); const data2 = await response2.text();
if (data2 === "true") { if (data2 === "true") {
isValid = true; isValid = true
} }
} }
if (isValid) { if (isValid) {
setIsValidApiKey(true); setIsValidApiKey(true);
setUseLocalNode(true); setUseLocalNode(true);
return; return
} }
} }
if (!currentNodeRef.current) return; if (!currentNodeRef.current) return;
const stillHasLocal = await checkIfUserHasLocalNode(); const stillHasLocal = await checkIfUserHasLocalNode()
if (isLocalKey && !stillHasLocal && !fromStartUp) { if (isLocalKey && !stillHasLocal && !fromStartUp) {
throw new Error("Please turn on your local node"); throw new Error("Please turn on your local node");
@ -308,15 +307,16 @@ export const NotAuthenticated = ({
} else if (currentNodeRef.current) { } else if (currentNodeRef.current) {
payload = currentNodeRef.current; payload = currentNodeRef.current;
} }
let isValid = false; let isValid = false
const url = `${payload?.url}/admin/settings/localAuthBypassEnabled`; const url = `${payload?.url}/admin/settings/localAuthBypassEnabled`;
const response = await fetch(url); const response = await fetch(url);
// Assuming the response is in plain text and will be 'true' or 'false' // Assuming the response is in plain text and will be 'true' or 'false'
const data = await response.text(); const data = await response.text();
if (data && data === "true") { if(data && data === 'true'){
isValid = true; isValid = true
} else { } else {
const url2 = `${payload?.url}/admin/apikey/test?apiKey=${payload?.apikey}`; const url2 = `${payload?.url}/admin/apikey/test?apiKey=${payload?.apikey}`;
const response2 = await fetch(url2); const response2 = await fetch(url2);
@ -324,10 +324,11 @@ export const NotAuthenticated = ({
// Assuming the response is in plain text and will be 'true' or 'false' // Assuming the response is in plain text and will be 'true' or 'false'
const data2 = await response2.text(); const data2 = await response2.text();
if (data2 === "true") { if (data2 === "true") {
isValid = true; isValid = true
} }
} }
if (isValid) { if (isValid) {
window window
.sendMessage("setApiKey", payload) .sendMessage("setApiKey", payload)
@ -357,6 +358,7 @@ export const NotAuthenticated = ({
}); });
setOpenSnack(true); setOpenSnack(true);
} }
} }
} catch (error) { } catch (error) {
setIsValidApiKey(false); setIsValidApiKey(false);
@ -379,7 +381,7 @@ export const NotAuthenticated = ({
error.message || "An error occurred" error.message || "An error occurred"
); );
}); });
return; return
} }
if(!fromStartUp){ if(!fromStartUp){
setInfoSnack({ setInfoSnack({
@ -427,9 +429,7 @@ export const NotAuthenticated = ({
setUrl("https://"); setUrl("https://");
setCustomApiKey(""); setCustomApiKey("");
if(window?.electronAPI?.setAllowedDomains){ if(window?.electronAPI?.setAllowedDomains){
window.electronAPI.setAllowedDomains( window.electronAPI.setAllowedDomains(nodes?.map((node) => node.url))
nodes?.map((node) => node.url)
);
} }
// add alert if needed // add alert if needed
} }
@ -459,18 +459,13 @@ export const NotAuthenticated = ({
sx={{ sx={{
textAlign: "center", textAlign: "center",
lineHeight: 1.2, lineHeight: 1.2,
fontSize: "18px", fontSize: '18px'
}} }}
> >
WELCOME TO WELCOME TO
<TextSpan <TextSpan sx={{
sx={{ fontSize: '18px'
fontSize: "18px", }}> QORTAL</TextSpan>
}}
>
{" "}
QORTAL
</TextSpan>
</TextP> </TextP>
<Spacer height="30px" /> <Spacer height="30px" />
@ -486,23 +481,13 @@ export const NotAuthenticated = ({
placement="left" placement="left"
title={ title={
<React.Fragment> <React.Fragment>
<Typography <Typography color="inherit" sx={{
color="inherit" fontSize: '16px'
sx={{ }}>Your wallet is like your digital ID on Qortal, and is how you will login to the Qortal User Interface. It holds your public address and the Qortal name you will eventually choose. Every transaction you make is linked to your ID, and this is where you manage all your QORT and other tradeable cryptocurrencies on Qortal.</Typography>
fontSize: "16px",
}}
>
Your wallet is like your digital ID on Qortal, and is how you
will login to the Qortal User Interface. It holds your public
address and the Qortal name you will eventually choose. Every
transaction you make is linked to your ID, and this is where you
manage all your QORT and other tradeable cryptocurrencies on
Qortal.
</Typography>
</React.Fragment> </React.Fragment>
} }
> >
<CustomButton onClick={() => setExtstate("wallets")}> <CustomButton onClick={()=> setExtstate('wallets')}>
{/* <input {...getInputProps()} /> */} {/* <input {...getInputProps()} /> */}
Accounts Accounts
</CustomButton> </CustomButton>
@ -518,6 +503,7 @@ export const NotAuthenticated = ({
display: "flex", display: "flex",
gap: "10px", gap: "10px",
alignItems: "center", alignItems: "center",
}} }}
> >
<HtmlTooltip <HtmlTooltip
@ -525,27 +511,14 @@ export const NotAuthenticated = ({
placement="right" placement="right"
title={ title={
<React.Fragment> <React.Fragment>
<Typography <Typography color="inherit" sx={{
color="inherit" fontWeight: 'bold',
sx={{ fontSize: '18px'
fontWeight: "bold", }}>New users start here!</Typography>
fontSize: "18px", <Spacer height='10px'/>
}} <Typography color="inherit" sx={{
> fontSize: '16px'
New users start here! }}>Creating an account means creating a new wallet and digital ID to start using Qortal. Once you have made your account, you can start doing things like obtaining some QORT, buying a name and avatar, publishing videos and blogs, and much more.</Typography>
</Typography>
<Spacer height="10px" />
<Typography
color="inherit"
sx={{
fontSize: "16px",
}}
>
Creating an account means creating a new wallet and digital ID
to start using Qortal. Once you have made your account, you can
start doing things like obtaining some QORT, buying a name and
avatar, publishing videos and blogs, and much more.
</Typography>
</React.Fragment> </React.Fragment>
} }
> >
@ -554,19 +527,18 @@ export const NotAuthenticated = ({
setExtstate("create-wallet"); setExtstate("create-wallet");
}} }}
sx={{ sx={{
backgroundColor: backgroundColor: hasSeenGettingStarted === false && 'var(--green)',
hasSeenGettingStarted === false && "var(--green)", color: hasSeenGettingStarted === false && 'black',
color: hasSeenGettingStarted === false && "black",
"&:hover": { "&:hover": {
backgroundColor: backgroundColor: hasSeenGettingStarted === false && 'var(--green)',
hasSeenGettingStarted === false && "var(--green)", color: hasSeenGettingStarted === false && 'black'
color: hasSeenGettingStarted === false && "black", }
},
}} }}
> >
Create account Create account
</CustomButton> </CustomButton>
</HtmlTooltip> </HtmlTooltip>
</Box> </Box>
<Spacer height="15px" /> <Spacer height="15px" />
@ -586,19 +558,15 @@ export const NotAuthenticated = ({
gap: "10px", gap: "10px",
alignItems: "center", alignItems: "center",
flexDirection: "column", flexDirection: "column",
outline: "0.5px solid rgba(255, 255, 255, 0.5)", outline: '0.5px solid rgba(255, 255, 255, 0.5)',
padding: "20px 30px", padding: '20px 30px',
borderRadius: "5px", borderRadius: '5px',
}} }}
> >
<> <>
<Typography <Typography sx={{
sx={{ textDecoration: 'underline'
textDecoration: "underline", }}>For advanced users</Typography>
}}
>
For advanced users
</Typography>
<Box <Box
sx={{ sx={{
display: "flex", display: "flex",
@ -611,8 +579,9 @@ export const NotAuthenticated = ({
<FormControlLabel <FormControlLabel
sx={{ sx={{
"& .MuiFormControlLabel-label": { "& .MuiFormControlLabel-label": {
fontSize: "14px", fontSize: '14px'
}, }
}} }}
control={ control={
<Switch <Switch
@ -651,6 +620,7 @@ export const NotAuthenticated = ({
} }
}} }}
disabled={false} disabled={false}
defaultChecked
/> />
} }
label={`Use ${isLocal ? "Local" : "Custom"} Node`} label={`Use ${isLocal ? "Local" : "Custom"} Node`}
@ -937,7 +907,44 @@ export const NotAuthenticated = ({
</Dialog> </Dialog>
)} )}
<ThemeSelector style={{ position: "fixed", bottom: "1%", left: "1%" }}/> {showSelectApiKey && (
<Dialog
open={showSelectApiKey}
aria-labelledby="alert-dialog-title"
aria-describedby="alert-dialog-description"
>
<DialogTitle id="alert-dialog-title">{"Enter apikey"}</DialogTitle>
<DialogContent>
<Box
sx={{
display: "flex",
flexDirection: "column",
gap: '20px'
}}
>
<TextField value={enteredApiKey} onChange={(e)=> setEnteredApiKey(e.target.value)}/>
<Button disabled={!!enteredApiKey} variant="contained" component="label">Alternative: File select
<input
type="file"
accept=".txt"
hidden
onChange={handleFileChangeApiKey} // File input handler
/>
</Button>
</Box>
</DialogContent>
<DialogActions>
<Button
variant="contained"
onClick={() => {
setEnteredApiKey("")
setShowSelectApiKey(false)
}}
>
Close
</Button>
<Button <Button
variant="contained" variant="contained"
@ -999,8 +1006,6 @@ export const NotAuthenticated = ({
color: 'var(--unread)' color: 'var(--unread)'
}} /> }} />
</ButtonBase> </ButtonBase>
<ThemeSelector style={{ position: "fixed", bottom: "1%", left: "1%" }}/>
</> </>
); );
}; };

View File

@ -358,7 +358,6 @@ export const AppsCategoryInfoLabel = styled(Typography)(({ theme }) => ({
fontSize: "12px", fontSize: "12px",
fontWeight: 700, fontWeight: 700,
lineHeight: 1.2, lineHeight: 1.2,
color: "#8D8F93",
backgroundColor: theme.palette.background.default, backgroundColor: theme.palette.background.default,
color: theme.palette.text.primary, color: theme.palette.text.primary,
})); }));

View File

@ -74,9 +74,6 @@ const {getIndividualUserInfo} = useContext(MyContext)
const [selectedReaction, setSelectedReaction] = useState(null); const [selectedReaction, setSelectedReaction] = useState(null);
const [userInfo, setUserInfo] = useState(null) const [userInfo, setUserInfo] = useState(null)
const [anchorEl, setAnchorEl] = useState(null);
const [selectedReaction, setSelectedReaction] = useState(null);
useEffect(()=> { useEffect(()=> {
const getInfo = async ()=> { const getInfo = async ()=> {
if(!message?.sender) return if(!message?.sender) return

View File

@ -94,7 +94,6 @@ export const DesktopSideBar = ({
hasUnreadDirects || hasUnreadGroups hasUnreadDirects || hasUnreadGroups
? "var(--unread)" ? "var(--unread)"
: theme.palette.text.primary : theme.palette.text.primary
? "rgba(250, 250, 250, 0.5)"
} }
/> />
</IconWrapper> </IconWrapper>