diff --git a/package.json b/package.json
index 45fb108f8f..f4acd493ac 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
- "name": "@pushprotocol/dapp",
- "version": "0.6.2",
+ "name": "@project/react-app",
+ "version": "0.6.3",
"homepage": "https://app.push.org",
"browserslist": {
"production": [
@@ -34,7 +34,7 @@
"@mui/lab": "^5.0.0-alpha.72",
"@mui/material": "^5.5.0",
"@pushprotocol/ledgerlive": "0.0.1",
- "@pushprotocol/restapi": "1.0.0",
+ "@pushprotocol/restapi": "^1.0.0",
"@pushprotocol/socket": "0.4.2",
"@pushprotocol/uiweb": "0.5.0",
"@reduxjs/toolkit": "^1.7.1",
@@ -108,7 +108,7 @@
"react-player": "2.9.0",
"react-query": "^3.39.1",
"react-redux": "^7.2.6",
- "react-router-dom": "6",
+ "react-router-dom": "^6.9.0",
"react-scripts": "^5.0.1",
"react-scroll-to-bottom": "^4.2.0",
"react-select": "^5.2.2",
diff --git a/public/index-alpha.html b/public/index-alpha.html
index 6f3ac3b160..1967c8e613 100644
--- a/public/index-alpha.html
+++ b/public/index-alpha.html
@@ -1,6 +1,7 @@
+
@@ -13,7 +14,7 @@
-
+
- Push Dev App (Previously EPNS) | Communication Protocol of Web3
-
+ Push App (Previously EPNS) | Communication Protocol of Web3
+
-
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/src/components/chat/chatsnap/ChatSnap.tsx b/src/components/chat/chatsnap/ChatSnap.tsx
index afb5f23d07..50108ded11 100644
--- a/src/components/chat/chatsnap/ChatSnap.tsx
+++ b/src/components/chat/chatsnap/ChatSnap.tsx
@@ -35,8 +35,7 @@ const ChatSnap = ({ pfp, username, chatSnapMsg, timestamp, selected, onClick, is
const theme = useTheme();
// get ens name
const ensName = useResolveEns(!isGroup ? username : null);
- // get reverse name
-
+
// get short username
const walletAddress = !isGroup ? caip10ToWallet(username) : null;
const shortUsername = !isGroup ? shortenText(walletAddress, 8, 7) : null;
@@ -66,7 +65,7 @@ const ChatSnap = ({ pfp, username, chatSnapMsg, timestamp, selected, onClick, is
className="fa fa-picture-o"
aria-hidden="true"
>{' '}
- Media
+ Image
) : chatSnapMsg.type === 'File' ? (
@@ -76,7 +75,7 @@ const ChatSnap = ({ pfp, username, chatSnapMsg, timestamp, selected, onClick, is
>{' '}
File
- ) : chatSnapMsg.type === 'GIF' ? (
+ ) : chatSnapMsg.type === 'GIF' || chatSnapMsg.type === 'MediaEmbed' ? (
{
receivedIntents,
inbox,
messages,
+ activeTab,
setActiveTab,
setMessages,
setChat,
@@ -80,6 +83,8 @@ const ChatBox = ({ setVideoCallInfo, showGroupInfoModal }): JSX.Element => {
setReceivedIntents,
setBlockedLoading,
}: AppContext = useContext(Context);
+ const [chatMeta, setChatMeta] = useState(null);
+
const [newMessage, setNewMessage] = useState('');
const { chainId, account ,library} = useWeb3React();
const [Loading, setLoading] = useState(true);
@@ -108,6 +113,16 @@ const ChatBox = ({ setVideoCallInfo, showGroupInfoModal }): JSX.Element => {
//get ens name
const ensName = useResolveEns(!isGroup ? currentChat?.wallets?.split(',')[0].toString() : null);
+ const navigate = useNavigate();
+ const location = useLocation();
+
+ useEffect(() => {
+ // if ens is resolved, update browse to match ens name is it doesn't match
+ if (ensName && location.pathname !== `/chat/${ensName}`) {
+ // lastly, set navigation for dynamic linking
+ navigate(`/chat/${ensName}`, {replace: true});
+ }
+ }, [ensName]);
const onScroll = async () => {
if (listInnerRef.current) {
@@ -133,14 +148,14 @@ const ChatBox = ({ setVideoCallInfo, showGroupInfoModal }): JSX.Element => {
};
- const scrollToBottom = () => {
- bottomRef?.current?.scrollIntoView({ behavior: "smooth" })
+ const scrollToBottom = (behavior) => {
+ bottomRef?.current?.scrollIntoView(!behavior ? true : { behavior: 'smooth' })
}
useEffect(() => {
if (messages.length <= chatsFetchedLimit)
- scrollToBottom();
+ scrollToBottom(null);
}, [messages]);
@@ -227,8 +242,6 @@ useEffect(() => {
}): Promise => {
setMessageBeingSent(true);
- scrollToBottom();
-
try {
let createdUser;
if(!connectedUser.publicKey){
@@ -246,13 +259,15 @@ useEffect(() => {
});
if (typeof sendResponse !== 'string') {
- intitializeDb('Insert', 'CID_store', sendResponse.cid, sendResponse, 'cid');
+ intitializeDb('Insert', 'CID_store', sendResponse.cid, sendResponse, 'cid');
sendResponse.messageContent = message;
const updatedCurrentChat = currentChat;
updatedCurrentChat.msg = sendResponse;
setChat(updatedCurrentChat);
setNewMessage('');
setMessages([...messages, sendResponse]);
+
+ setMessageBeingSent(false);
} else {
chatBoxToast.showMessageToast({
toastTitle: 'Error',
@@ -265,6 +280,8 @@ useEffect(() => {
/>
),
});
+
+ setMessageBeingSent(false);
}
} catch (error) {
chatBoxToast.showMessageToast({
@@ -278,12 +295,17 @@ useEffect(() => {
/>
),
});
- }
- setTimeout(() => {
+
setMessageBeingSent(false);
- }, 3000);
+ }
};
+ useEffect(() => {
+ if (messageBeingSent == false) {
+ scrollToBottom(true);
+ }
+ }, [messageBeingSent])
+
async function resolveThreadhash(): Promise {
setLoading(true);
let getIntent;
@@ -401,7 +423,7 @@ useEffect(() => {
progressEnabled: true,
progress: 0,
progressNotice:
- 'Reminder: Push Chat is in alpha, Things might break. It seems you are not whitelisted, join our discord channel where we will be frequently dropping new invites: https://discord.com/invite/cHRmsnmyKx',
+ 'Reminder: Push Chat is in alpha, Things might break.',
});
}
// Display toaster
@@ -478,19 +500,19 @@ useEffect(() => {
};
const InfoMessages = [
- { id: 1, content: 'You can send up to 10 chat requests in alpha' },
+ { id: 1, content: 'You can send up to 10 group requests in alpha' },
// { id: 2, content: 'You can send a chat request to anyone including non-whitelisted users' },
// { id: 3, content: 'You can chat with non-whitelisted users but they cannot send a chat request to anyone.' },
{
id: 4,
- content: 'You will have access to 100 latest messages. Encryption is enabled after a chat request is accepted',
+ content: 'You will have access to 1000 latest messages. Encryption is enabled after a chat request is accepted',
},
{ id: 5, content: 'Messages will only be encrypted if the receiver has encryption keys' },
- {
- id: 6,
- content:
- 'Due to certain limitations Push Chat does not support Ledger Wallet yet. We are working on adding support.',
- },
+ // {
+ // id: 6,
+ // content:
+ // 'Due to certain limitations Push Chat does not support Ledger Wallet yet. We are working on adding support.',
+ // },
{ id: 7, content: 'Access to more chat requests and messages will be added in the near future' },
];
@@ -498,44 +520,56 @@ useEffect(() => {
{!viewChatBox ? (
-
- Say
-
- to Push Chat
-
+ }
-
-
- Push Chat is in alpha and things might break.
-
-
- We would love to hear your feedback
-
-
-
- {InfoMessages.map((item) => (
-
-
- {item.content}
-
- ))}
-
-
+ {activeTab != 4 &&
+ <>
+
+ Say
+
+ to Push Chat
+
+
+
+
+ Push Chat is in alpha and things might break.
+
+
+
+ We would love to hear your feedback
+
+
+
+ {InfoMessages.map((item) => (
+
+
+ {item.content}
+
+ ))}
+
+
+ >
+ }
) : (
<>
diff --git a/src/components/chat/w2wChat/chats/Chats.tsx b/src/components/chat/w2wChat/chats/Chats.tsx
index 8e8b3f393f..bcebd7e954 100644
--- a/src/components/chat/w2wChat/chats/Chats.tsx
+++ b/src/components/chat/w2wChat/chats/Chats.tsx
@@ -2,30 +2,29 @@
import React, { useContext, useEffect, useState } from 'react';
// External Packages
-import styled from 'styled-components';
import { TwitterTweetEmbed } from 'react-twitter-embed';
+import styled from 'styled-components';
// Internal Components
-import { ImageV2, ItemHV2, SpanV2 } from 'components/reusables/SharedStylingV2';
-import tickIcon from '../../../../assets/chat/tick.svg';
-import { MessageIPFSWithCID, TwitterFeedReturnType } from 'types/chat';
-import Files, { FileMessageContent } from '../TypeBar/Files/Files';
-import Modal from '../Modal/Modal';
+import * as PushAPI from '@pushprotocol/restapi';
import LoaderSpinner, { LOADER_TYPE } from 'components/reusables/loaders/LoaderSpinner';
+import { ImageV2, ItemHV2, ItemVV2, SpanV2 } from 'components/reusables/SharedStylingV2';
+import { shortenText } from 'helpers/UtilityHelper';
+import { caip10ToWallet } from 'helpers/w2w';
import { checkTwitterUrl } from 'helpers/w2w/twitter';
import { useResolveEns } from 'hooks/useResolveEns';
-import { caip10ToWallet } from 'helpers/w2w';
-import { shortenText } from 'helpers/UtilityHelper';
-import { AppContext } from 'types/chat';
import { Context } from 'modules/chat/ChatModule';
-import { SentMessageWrapper } from './MessageWrappers/SentMessageWrapper';
+import { AppContext, MessageIPFSWithCID, TwitterFeedReturnType } from 'types/chat';
+import tickIcon from '../../../../assets/chat/tick.svg';
import { getMemberDetails } from '../../../../helpers/w2w/groupChat';
+import Modal from '../Modal/Modal';
+import Files, { FileMessageContent } from '../TypeBar/Files/Files';
import { ReceivedMessageWrapper } from './MessageWrappers/ReceivedMessageWrapper';
-import * as PushAPI from '@pushprotocol/restapi';
+import { SentMessageWrapper } from './MessageWrappers/SentMessageWrapper';
// Internal Configs
-import GLOBALS, { device } from 'config/Globals';
import { appConfig } from 'config';
+import GLOBALS, { device } from 'config/Globals';
interface ChatProps {
@@ -55,7 +54,7 @@ export default function Chats({ msg, caip10, messageBeingSent, ApproveIntent, is
setProfilePicture(member.image);
}
else {
- console.log(msg)
+ // console.log(msg)
let user = await PushAPI.user.get({account:msg.fromCAIP10,env:appConfig.appEnv});
setProfilePicture(user.profilePicture);
}
@@ -67,9 +66,10 @@ export default function Chats({ msg, caip10, messageBeingSent, ApproveIntent, is
}, []);
return (
- <>
- {messageType === 'TwitterFeedLink' ? (
- <>
+
+ {/* Support Msg Type = TwitterFeedLink */}
+ {msg.messageType === 'TwitterFeedLink' &&
+
{msg.fromCAIP10 === caip10 ? (
)}
- >
- ) : msg.messageType === 'Text' ? (
- <>
+
+ }
+
+ {/* Support Msg Type = Text */}
+ {msg.messageType === 'Text' &&
+
{msg.fromCAIP10 === caip10 ? (
{msg.messageContent.split('\n').map((str) => (
- {str}
+ {str}
))}
{date}
@@ -133,15 +136,18 @@ export default function Chats({ msg, caip10, messageBeingSent, ApproveIntent, is
>
{msg.messageContent.split('\n').map((str) => (
- {str}
+ {str}
))}
{date}
)}
- >
- ) : msg.messageType === 'Intent' ? (
- <>
+
+ }
+
+ {/* Support Msg Type = Intent */}
+ {msg.messageType === 'Intent' &&
+
- >
- ) : msg.messageType === 'Image' ? (
- <>
+
+ }
+
+ {/* Support Msg Type = Image */}
+ {msg.messageType === 'Image' &&
+
{msg.fromCAIP10 === caip10 ? (
)}
- >
- ) : msg.messageType === 'GIF' ? (
- <>
+
+ }
+
+ {/* Support Msg Type = GIF OR Support Msg Type = MediaEmbed */}
+ {(msg.messageType === 'GIF' || msg.messageType === 'MediaEmbed') &&
+
{msg.fromCAIP10 === caip10 ? (
)}
- >
- ) : msg.messageType === 'File' ? (
- <>
+
+ }
+
+ {/* Support Msg Type = GIF OR Support Msg Type = MediaEmbed */}
+ {msg.messageType === 'File' &&
+
{msg.fromCAIP10 === caip10 ? (
)}
- >
- ) : null}
- >
+
+ }
+
);
}
diff --git a/src/components/chat/w2wChat/messageFeed/MessageFeed.tsx b/src/components/chat/w2wChat/messageFeed/MessageFeed.tsx
index d9a6d7b82f..9fa83a12ec 100644
--- a/src/components/chat/w2wChat/messageFeed/MessageFeed.tsx
+++ b/src/components/chat/w2wChat/messageFeed/MessageFeed.tsx
@@ -2,41 +2,41 @@
import React, { useContext, useEffect, useState } from 'react';
// External Packages
-import styled, { useTheme } from 'styled-components';
import { MdError } from 'react-icons/md';
-import { ethers } from 'ethers';
+import styled, { useTheme } from 'styled-components';
// Internal Components
import { useWeb3React } from '@web3-react/core';
-import { AppContext, Feeds, User } from 'types/chat';
import ChatSnap from 'components/chat/chatsnap/ChatSnap';
import LoaderSpinner, { LOADER_TYPE } from 'components/reusables/loaders/LoaderSpinner';
import { ItemVV2, SpanV2 } from 'components/reusables/SharedStylingV2';
+import { ChatUserContext } from 'contexts/ChatUserContext';
import { decryptFeeds, walletToCAIP10 } from 'helpers/w2w';
-import useToast from 'hooks/useToast';
import { fetchInbox } from 'helpers/w2w/user';
+import useToast from 'hooks/useToast';
import { Context } from 'modules/chat/ChatModule';
-import { intitializeDb } from '../w2wIndexeddb';
-import { ChatUserContext } from 'contexts/ChatUserContext';
+import { AppContext, Feeds, User } from 'types/chat';
import { checkIfGroup, getChatsnapMessage, getGroupImage, getName } from '../../../../helpers/w2w/groupChat';
import { getDefaultFeed } from '../../../../helpers/w2w/user';
+import { intitializeDb } from '../w2wIndexeddb';
// Internal Configs
-interface MessageFeedProps {
+interface MessageFeedPropsI {
filteredUserData: User[];
hasUserBeenSearched: boolean;
isInvalidAddress: boolean;
+ automatedSearch: boolean;
}
-const MessageFeed = (props: MessageFeedProps): JSX.Element => {
+const MessageFeed = (props: MessageFeedPropsI): JSX.Element => {
const theme = useTheme();
- const { setChat, setInbox,currentChat,receivedIntents,setActiveTab, activeTab, inbox, setHasUserBeenSearched, filteredUserData, setFilteredUserData }: AppContext = useContext(Context);
+ const { setChat, setInbox, currentChat, receivedIntents, setActiveTab, activeTab, inbox, setHasUserBeenSearched, filteredUserData, setFilteredUserData }: AppContext = useContext(Context);
- const {connectedUser} = useContext(ChatUserContext);
+ const { connectedUser } = useContext(ChatUserContext);
const [feeds, setFeeds] = useState([]);
const [messagesLoading, setMessagesLoading] = useState(true);
@@ -70,6 +70,7 @@ const MessageFeed = (props: MessageFeedProps): JSX.Element => {
return inboxes;
}
};
+
const fetchInboxApi = async (): Promise => {
try {
const inboxes:Feeds[] = await fetchInbox(connectedUser);
@@ -112,6 +113,12 @@ const MessageFeed = (props: MessageFeedProps): JSX.Element => {
setFeeds(inbox);
},[inbox]);
+ useEffect(() => {
+ if(feeds && feeds.length > 0 && props.automatedSearch) {
+ onFeedClick(feeds[0], 0);
+ setActiveTab(0);
+ }
+ }, [feeds]);
useEffect(() => {
if(!props.hasUserBeenSearched)
@@ -160,7 +167,13 @@ const MessageFeed = (props: MessageFeedProps): JSX.Element => {
});
}
- setFeeds([]);
+ // reset if active tab is 4
+ if (activeTab == 4) {
+ setActiveTab(0);
+ }
+ else {
+ setFeeds([]);
+ }
}
setMessagesLoading(false);
};
@@ -179,7 +192,7 @@ const MessageFeed = (props: MessageFeedProps): JSX.Element => {
justifyContent="flex-start"
>
{/* hey there */}
- {activeTab !== 3 && (
+ {activeTab !== 3 && activeTab !== 4 && (
{
/>
) : (
<>
- {!feeds?.length && !messagesLoading && activeTab!==3 ? (
+ {!feeds?.length && !messagesLoading && activeTab!==3 && activeTab!==4 ? (
Start a new chat by using the + button
) : !messagesLoading ? (
feeds.map((feed: Feeds, i) => (
-
{
+const SearchBar = ({ autofilled }) => {
// get theme
const theme = useTheme();
@@ -48,6 +49,10 @@ const SearchBar = () => {
const provider = new ethers.providers.InfuraProvider(appConfig.coreContractChain, appConfig.infuraAPIKey);
const searchFeedToast = useToast();
+ if (autofilled) {
+ // console.log("Search is autofilled:", autofilled);
+ }
+
useEffect(() => {
if (searchedUser !== '' && userShouldBeSearched) {
handleSearch();
@@ -56,6 +61,23 @@ const SearchBar = () => {
return () => setUserShouldBeSearched(false);
}, []);
+ useEffect(() => {
+ if (autofilled && !userShouldBeSearched) {
+ // automate search
+ setSearchedUser(autofilled);
+ }
+
+ }, [userShouldBeSearched, autofilled]);
+
+ useEffect(() => {
+ if (searchedUser) {
+ const event = new KeyboardEvent('keypress', {
+ key: 'enter',
+ });
+ submitSearch(event);
+ }
+ }, [searchedUser]);
+
useEffect(() => {
if (isInValidAddress) {
searchFeedToast.showMessageToast({
@@ -69,6 +91,10 @@ const SearchBar = () => {
/>
),
});
+
+ if (activeTab == 4) {
+ setActiveTab(0);
+ }
}
}, [isInValidAddress]);
@@ -99,7 +125,7 @@ const SearchBar = () => {
// this ensures address are checksummed
address = ethers.utils.getAddress(address.toLowerCase());
- console.log("searched address", address)
+ // console.log("searched address", address)
if (address) {
handleUserSearch(address);
} else {
@@ -113,7 +139,7 @@ const SearchBar = () => {
setHasUserBeenSearched(true);
}
} else {
- handleUserSearch(searchedUser);
+ await handleUserSearch(searchedUser);
}
setIsLoadingSearch(false);
};
@@ -132,7 +158,12 @@ const SearchBar = () => {
if (filteredData !== null && isUserConnected) {
if (activeTab !== 0) {
setUserShouldBeSearched(true);
- setActiveTab(0);
+
+ if (autofilled) {
+ setActiveTab(4);
+ } else {
+ setActiveTab(0);
+ }
}
setFilteredUserData([filteredData]);
setSearchedUser('')
@@ -141,7 +172,11 @@ const SearchBar = () => {
else {
if (ethers.utils.isAddress(userSearchData)) {
setUserShouldBeSearched(true);
- setActiveTab(3);
+ if (autofilled) {
+ setActiveTab(4);
+ } else {
+ setActiveTab(3);
+ }
const displayUser = displayDefaultUser({ caip10 });
setFilteredUserData([displayUser]);
setSearchedUser('')
@@ -168,7 +203,7 @@ const SearchBar = () => {
justifyContent="flex-start"
flex="0"
>
- {activeTab === 3 && (
+ {(activeTab === 3 || activeTab === 4) && (
{
color="#D53893"
margin="0px 0px 0px 7px"
>
- New Chat
+ {activeTab == 3 ? "New Chat" : "All Chats"}
)}
@@ -200,50 +235,56 @@ const SearchBar = () => {
width="100%"
flex="initial"
>
-
-
- {searchedUser.length > 0 && (
+
+
+
+ {searchedUser.length > 0 && (
+
+
+
+ )}
-
+ {isLoadingSearch && (
+
+ )}
+ {!isLoadingSearch && (
+
+ )}
- )}
-
- {isLoadingSearch && (
-
- )}
- {!isLoadingSearch && (
-
- )}
-
-
- {activeTab !== 3 && (
+
+
+
+ {activeTab !== 3 && activeTab !== 4 && (
{
{isLoadingSearch ? (
-
+
+
+
) : (
filteredUserData.length > 0 && (
)
)}
diff --git a/src/modules/chat/ChatModule.tsx b/src/modules/chat/ChatModule.tsx
index 3e83f20929..952a98d775 100644
--- a/src/modules/chat/ChatModule.tsx
+++ b/src/modules/chat/ChatModule.tsx
@@ -1,45 +1,46 @@
// React + Web3 Essentials
-import React, { useContext, useEffect, useState } from 'react';
import { useWeb3React } from '@web3-react/core';
import { ethers } from 'ethers';
+import React, { useContext, useEffect, useState } from 'react';
+import { useNavigate } from "react-router-dom";
// External Packages
import ReactGA from 'react-ga';
-import styled, { useTheme } from 'styled-components';
import { QueryClient, QueryClientProvider } from 'react-query';
import { ReactQueryDevtools } from 'react-query/devtools';
import { ToastOptions } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
import { useClickAway } from 'react-use';
+import styled, { useTheme } from 'styled-components';
// Internal Compoonents
-import { AppContext, Feeds, MessageIPFS, MessageIPFSWithCID, User } from 'types/chat';
-import { ItemHV2, ItemVV2 } from 'components/reusables/SharedStylingV2';
+import ChatQR from 'components/chat/w2wChat/chatQR/chatQR';
+import MobileView from 'components/chat/w2wChat/chatQR/mobileView';
+import { CreateGroupModalContent } from 'components/chat/w2wChat/groupChat/createGroup/CreateGroupModalContent';
+import { GroupInfoModalContent } from 'components/chat/w2wChat/groupChat/groupInfo/groupInfoModalContent';
import LoaderSpinner, {
LOADER_OVERLAY,
LOADER_SPINNER_TYPE,
LOADER_TYPE,
- PROGRESS_POSITIONING,
+ PROGRESS_POSITIONING
} from 'components/reusables/loaders/LoaderSpinner';
+import { ItemHV2, ItemVV2 } from 'components/reusables/SharedStylingV2';
+import { ChatUserContext } from 'contexts/ChatUserContext';
import { VideoCallContext } from 'contexts/VideoCallContext';
+import * as w2wHelper from 'helpers/w2w/';
+import { checkIfGroup, rearrangeMembers } from 'helpers/w2w/groupChat';
+import { useDeviceWidthCheck, useSDKSocket } from 'hooks';
+import { default as useModalBlur } from 'hooks/useModalBlur';
+import { default as useToast } from 'hooks/useToast';
import ChatBoxSection from 'sections/chat/ChatBoxSection';
import ChatSidebarSection from 'sections/chat/ChatSidebarSection';
import VideoCallSection, { VideoCallInfoI } from 'sections/video/VideoCallSection';
-import useToast from 'hooks/useToast';
-import { GroupInfoModalContent } from 'components/chat/w2wChat/groupChat/groupInfo/groupInfoModalContent';
-import useModalBlur from 'hooks/useModalBlur';
-import { CreateGroupModalContent } from 'components/chat/w2wChat/groupChat/createGroup/CreateGroupModalContent';
-import { useDeviceWidthCheck, useSDKSocket } from 'hooks';
-import MobileView from 'components/chat/w2wChat/chatQR/mobileView';
-import { checkIfGroup, rearrangeMembers } from 'helpers/w2w/groupChat';
-import { ChatUserContext } from 'contexts/ChatUserContext';
-import ChatQR from 'components/chat/w2wChat/chatQR/chatQR';
-import * as w2wHelper from 'helpers/w2w/';
+import { AppContext, Feeds, MessageIPFS, MessageIPFSWithCID, User } from 'types/chat';
// Internal Configs
-import GLOBALS, { device, globalsMargin } from 'config/Globals';
import { appConfig } from 'config';
+import GLOBALS, { device, globalsMargin } from 'config/Globals';
import { fetchIntent } from 'helpers/w2w/user';
export const ToastPosition: ToastOptions = {
@@ -55,7 +56,7 @@ export const ToastPosition: ToastOptions = {
export const Context = React.createContext(null);
// Create Header
-function Chat() {
+function Chat({ chatid }) {
const { account, chainId, library } = useWeb3React();
const { getUser, connectedUser, setConnectedUser, blockedLoading, setBlockedLoading, displayQR, setDisplayQR } =
useContext(ChatUserContext);
@@ -248,7 +249,7 @@ function Chat() {
title: 'Step 1/4: Getting Account Info',
progressEnabled: true,
progress: 25,
- progressNotice: 'Reminder: Push Chat is in alpha, you might need to sign a decrypt transaction to continue',
+ progressNotice: 'Important: Push Chat encryption standard is updated, you might need to sign 3-4 transactions to upgrade (required once).',
});
if (!connectedUser) {
@@ -264,6 +265,14 @@ function Chat() {
});
setIsLoading(false);
+
+ if (chatid) {
+ // reformat chatid first
+ chatid = reformatChatId(chatid);
+
+ // dynamic url
+ setCurrentTab(4);
+ }
};
const setActiveTab = (tab: number): void => {
@@ -276,9 +285,52 @@ function Chat() {
} else if (tab === 3) {
setChat(null);
setCurrentTab(tab);
+ } else if (tab === 4) {
+ setCurrentTab(tab);
}
};
+ const reformatChatId = (chatid: string): string => {
+ let isWallet = false;
+
+ // check if chatid: is appened, then skip anything else
+ if (chatid.startsWith('chatid:')) {
+ return chatid;
+ }
+
+ // check if .eth is at the end, then skip anything else
+ if (chatid.endsWith('.eth')) {
+ return chatid;
+ }
+
+ // check if this is eip155: which is considered default and therefore remove it
+ if (chatid.startsWith('eip155:')) {
+ chatid = chatid.replace('eip155:', '');
+ isWallet = true;
+ }
+
+ // check if this is eip155: which is considered default and therefore remove it
+ if (chatid.startsWith('eip155:')) {
+ chatid = chatid.replace('eip155:', '');
+ isWallet = true;
+ }
+
+ // check if this is an account address or not and based on that take appropriate action
+ if (!isWallet && ethers.utils.isAddress(chatid)) {
+ isWallet = true;
+ }
+
+ // if all checks fail then this is probably a chat id
+ // WARNING: THIS WILL FAIL WITH NON-EVMS, NEED NODES TO INDICATE CHATID:
+ if (!isWallet) {
+ // append chatid:
+ chatid = `chatid:${chatid}`;
+ }
+
+ return chatid;
+ }
+
+ let navigate = useNavigate();
const setChat = (feed: Feeds): void => {
if (feed) {
setViewChatBox(true);
@@ -286,9 +338,24 @@ function Chat() {
{
rearrangeMembers(feed,connectedUser);
}
+
+ // check and set to wallet or chat id
+ let chatid = feed.did;
+ if (!chatid) {
+ // check group information
+ if (feed.groupInformation) {
+ chatid = feed.groupInformation.chatId;
+ }
+ }
+ chatid = reformatChatId(chatid);
+ // console.log(feed);
setCurrentChat(feed);
+
+ // lastly, set navigation for dynamic linking
+ navigate(`/chat/${chatid}`);
} else {
setViewChatBox(false);
+ navigate(`/chat`);
}
};
@@ -332,7 +399,7 @@ function Chat() {
background={theme.default.bg}
chatActive={viewChatBox}
>
-
+
{
+ let { chatid } = useParams();
+
// RENDER
return (
-
+
);
}
diff --git a/src/sections/chat/ChatSidebarSection.tsx b/src/sections/chat/ChatSidebarSection.tsx
index dec5f8e6cf..497bab3712 100644
--- a/src/sections/chat/ChatSidebarSection.tsx
+++ b/src/sections/chat/ChatSidebarSection.tsx
@@ -9,27 +9,28 @@ import { useClickAway } from 'react-use';
import styled, { useTheme } from 'styled-components';
// Internal Compoonents
-import IntentFeed from 'components/chat/w2wChat/intentFeed/IntentFeed';
import * as PushAPI from "@pushprotocol/restapi";
+import { ReactComponent as CreateGroupIcon } from 'assets/chat/group-chat/creategroup.svg';
+import { ReactComponent as CreateGroupFillIcon } from 'assets/chat/group-chat/creategroupfill.svg';
+import IntentFeed from 'components/chat/w2wChat/intentFeed/IntentFeed';
+import MessageFeed from 'components/chat/w2wChat/messageFeed/MessageFeed';
import ProfileHeader from 'components/chat/w2wChat/profile';
import SearchBar from 'components/chat/w2wChat/searchBar/SearchBar';
import { fetchIntent } from 'helpers/w2w/user';
-import { Feeds } from 'types/chat';
import { intitializeDb } from 'components/chat/w2wChat/w2wIndexeddb';
import { ButtonV2, ItemHV2, ItemVV2, SpanV2 } from 'components/reusables/SharedStylingV2';
-import * as w2wHelper from 'helpers/w2w/';
-import StyleHelper from 'helpers/StyleHelper';
-import MessageFeed from 'components/chat/w2wChat/messageFeed/MessageFeed';
-import { Context } from 'modules/chat/ChatModule';
import { ChatUserContext } from 'contexts/ChatUserContext';
-import { ReactComponent as CreateGroupIcon } from 'assets/chat/group-chat/creategroup.svg';
-import { ReactComponent as CreateGroupFillIcon } from 'assets/chat/group-chat/creategroupfill.svg';
+import StyleHelper from 'helpers/StyleHelper';
import { getIsNewTagVisible } from 'helpers/TimerHelper';
-import NewTag from 'components/NewTag';
+import * as w2wHelper from 'helpers/w2w/';
+import { checkConnectedUser } from 'helpers/w2w/user';
+import { Context } from 'modules/chat/ChatModule';
+import { Feeds } from 'types/chat';
// Internal Configs
+import NewTag from 'components/NewTag';
import GLOBALS from 'config/Globals';
import { appConfig } from '../../config';
@@ -63,11 +64,11 @@ const createGroupOnMouseLeave = [{
// Chat Sections
// Divided into two, left and right
-const ChatSidebarSection = ({showCreateGroupModal}) => {
+const ChatSidebarSection = ({ showCreateGroupModal, autofilledSearch }) => {
// theme context
const theme = useTheme();
- const { receivedIntents,searchedUser, setReceivedIntents, filteredUserData } = useContext(Context);
+ const { receivedIntents, searchedUser, setReceivedIntents, filteredUserData } = useContext(Context);
const isNewTagVisible = getIsNewTagVisible(new Date("2023-02-22T00:00:00.000"), 90);
@@ -240,6 +241,7 @@ useClickAway(containerRef, () => closeQRDropdown())
hasUserBeenSearched={false}
filteredUserData={[]}
isInvalidAddress={false}
+ automatedSearch={false}
/>
)}
{activeTab == 1 && (
@@ -247,7 +249,8 @@ useClickAway(containerRef, () => closeQRDropdown())
>
)}
- {activeTab == 3 && }
+ {activeTab == 3 && }
+ {activeTab == 4 && }
{/* Footer */}
diff --git a/src/structure/MasterInterfacePage.tsx b/src/structure/MasterInterfacePage.tsx
index a73b41bc65..2376fa42a2 100644
--- a/src/structure/MasterInterfacePage.tsx
+++ b/src/structure/MasterInterfacePage.tsx
@@ -1,5 +1,5 @@
// React + Web3 Essentials
-import React, { lazy, Suspense, useState } from 'react';
+import React, { lazy, Suspense } from 'react';
// External Packages
import { VscClose } from 'react-icons/vsc';
@@ -76,6 +76,7 @@ function MasterInterfacePage() {
>
} />
+ } />
} />
{/* } /> */}
diff --git a/src/types/chat.ts b/src/types/chat.ts
index 9c4cd7c6ff..fa70f8f449 100644
--- a/src/types/chat.ts
+++ b/src/types/chat.ts
@@ -57,7 +57,23 @@ export interface IGroup {
groupDescription: string | null,
groupCreator: string,
chatId: string
- }
+}
+
+export interface ChatMetaI {
+ did: string;
+ wallets: string;
+ profilePicture: string | null;
+ publicKey: string | null;
+ about: string | null;
+ threadhash: string | null;
+ intent: string | null;
+ intentSentBy: string | null;
+ intentTimestamp: Date;
+ combinedDID: string;
+ cid?: string;
+ groupInformation?: IGroup
+}
+
export interface Feeds {
msg: MessageIPFS;
did: string;
diff --git a/yarn.lock b/yarn.lock
index a9cd095f9c..aea30c4139 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4175,10 +4175,33 @@ __metadata:
languageName: node
linkType: hard
-"@mui/core-downloads-tracker@npm:^5.11.14":
- version: 5.11.14
- resolution: "@mui/core-downloads-tracker@npm:5.11.14"
- checksum: 8b1b42e125b15136ee82d2cb48354202b87beb8e20defcf3a8b758b033732444d09446d85a28c23b0dcaa8b5d067bc20bdd654c9adf551d826b142b4b09d7dd7
+"@mui/base@npm:5.0.0-alpha.123":
+ version: 5.0.0-alpha.123
+ resolution: "@mui/base@npm:5.0.0-alpha.123"
+ dependencies:
+ "@babel/runtime": ^7.21.0
+ "@emotion/is-prop-valid": ^1.2.0
+ "@mui/types": ^7.2.3
+ "@mui/utils": ^5.11.13
+ "@popperjs/core": ^2.11.7
+ clsx: ^1.2.1
+ prop-types: ^15.8.1
+ react-is: ^18.2.0
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0
+ react-dom: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: a17c266d0a922903e43c08cce8f42d1a35716b5d1574393c90ac89290029f6c08ef7261ba7af3609917a32fce1a1c0efdab06320df4d1ab351fd987e429f6dfd
+ languageName: node
+ linkType: hard
+
+"@mui/core-downloads-tracker@npm:^5.11.15":
+ version: 5.11.15
+ resolution: "@mui/core-downloads-tracker@npm:5.11.15"
+ checksum: 8dc377b415ac1c18ec11a55fe916aeb0317e4c454759e3c3c0d3bdeaef75236486f17cb9ef3ae01eaee5f51e2cc7ada6a7e7ca452a64ddbbb8638c32e2615938
languageName: node
linkType: hard
@@ -4229,13 +4252,13 @@ __metadata:
linkType: hard
"@mui/material@npm:^5.5.0":
- version: 5.11.14
- resolution: "@mui/material@npm:5.11.14"
+ version: 5.11.15
+ resolution: "@mui/material@npm:5.11.15"
dependencies:
"@babel/runtime": ^7.21.0
- "@mui/base": 5.0.0-alpha.122
- "@mui/core-downloads-tracker": ^5.11.14
- "@mui/system": ^5.11.14
+ "@mui/base": 5.0.0-alpha.123
+ "@mui/core-downloads-tracker": ^5.11.15
+ "@mui/system": ^5.11.15
"@mui/types": ^7.2.3
"@mui/utils": ^5.11.13
"@types/react-transition-group": ^4.4.5
@@ -4257,7 +4280,7 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: 48fdd56ee55da6d551b8b716b8a080afe2276a62e0441efdd58be3b10ab1204d196a8ecc5f35ac23b8e9c7f5d6884ce37966cdcf8846771fe8ccc5ca626a8e1e
+ checksum: 53726a8aa2ab541c967eda43fe0094486e2f2ac743c39f09a5326aeffdba0be414187f216346c45135751b63a28a9871f4e68f4d6ab89b5b1d86e468f869d328
languageName: node
linkType: hard
@@ -4299,9 +4322,9 @@ __metadata:
languageName: node
linkType: hard
-"@mui/system@npm:^5.11.14":
- version: 5.11.14
- resolution: "@mui/system@npm:5.11.14"
+"@mui/system@npm:^5.11.14, @mui/system@npm:^5.11.15":
+ version: 5.11.15
+ resolution: "@mui/system@npm:5.11.15"
dependencies:
"@babel/runtime": ^7.21.0
"@mui/private-theming": ^5.11.13
@@ -4323,7 +4346,7 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: a9df588ee7358438244ba5115f1f3bfe548b4c9077280204b6f6d4b98f20fd93f76bc36bf1430848b64e5c3a495ecb0e5000379932faa3dfb92360a34262f301
+ checksum: c8b8ffcf48b204f8e0ff6cc2ef5a35b6a3ef3517c9626dbb2fda073b81992c93750167440737459b82ff1ac2bf6d4e9eb9ce3b39887bdc4dbded5bc8266032ac
languageName: node
linkType: hard
@@ -4609,89 +4632,16 @@ __metadata:
languageName: node
linkType: hard
-"@popperjs/core@npm:^2.11.6, @popperjs/core@npm:^2.4.4":
+"@popperjs/core@npm:^2.11.6, @popperjs/core@npm:^2.11.7, @popperjs/core@npm:^2.4.4":
version: 2.11.7
resolution: "@popperjs/core@npm:2.11.7"
checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19
languageName: node
linkType: hard
-"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2":
- version: 1.1.2
- resolution: "@protobufjs/aspromise@npm:1.1.2"
- checksum: 011fe7ef0826b0fd1a95935a033a3c0fd08483903e1aa8f8b4e0704e3233406abb9ee25350ec0c20bbecb2aad8da0dcea58b392bbd77d6690736f02c143865d2
- languageName: node
- linkType: hard
-
-"@protobufjs/base64@npm:^1.1.2":
- version: 1.1.2
- resolution: "@protobufjs/base64@npm:1.1.2"
- checksum: 67173ac34de1e242c55da52c2f5bdc65505d82453893f9b51dc74af9fe4c065cf4a657a4538e91b0d4a1a1e0a0642215e31894c31650ff6e3831471061e1ee9e
- languageName: node
- linkType: hard
-
-"@protobufjs/codegen@npm:^2.0.4":
- version: 2.0.4
- resolution: "@protobufjs/codegen@npm:2.0.4"
- checksum: 59240c850b1d3d0b56d8f8098dd04787dcaec5c5bd8de186fa548de86b86076e1c50e80144b90335e705a044edf5bc8b0998548474c2a10a98c7e004a1547e4b
- languageName: node
- linkType: hard
-
-"@protobufjs/eventemitter@npm:^1.1.0":
- version: 1.1.0
- resolution: "@protobufjs/eventemitter@npm:1.1.0"
- checksum: 0369163a3d226851682f855f81413cbf166cd98f131edb94a0f67f79e75342d86e89df9d7a1df08ac28be2bc77e0a7f0200526bb6c2a407abbfee1f0262d5fd7
- languageName: node
- linkType: hard
-
-"@protobufjs/fetch@npm:^1.1.0":
- version: 1.1.0
- resolution: "@protobufjs/fetch@npm:1.1.0"
- dependencies:
- "@protobufjs/aspromise": ^1.1.1
- "@protobufjs/inquire": ^1.1.0
- checksum: 3fce7e09eb3f1171dd55a192066450f65324fd5f7cc01a431df01bb00d0a895e6bfb5b0c5561ce157ee1d886349c90703d10a4e11a1a256418ff591b969b3477
- languageName: node
- linkType: hard
-
-"@protobufjs/float@npm:^1.0.2":
- version: 1.0.2
- resolution: "@protobufjs/float@npm:1.0.2"
- checksum: 5781e1241270b8bd1591d324ca9e3a3128d2f768077a446187a049e36505e91bc4156ed5ac3159c3ce3d2ba3743dbc757b051b2d723eea9cd367bfd54ab29b2f
- languageName: node
- linkType: hard
-
-"@protobufjs/inquire@npm:^1.1.0":
- version: 1.1.0
- resolution: "@protobufjs/inquire@npm:1.1.0"
- checksum: ca06f02eaf65ca36fb7498fc3492b7fc087bfcc85c702bac5b86fad34b692bdce4990e0ef444c1e2aea8c034227bd1f0484be02810d5d7e931c55445555646f4
- languageName: node
- linkType: hard
-
-"@protobufjs/path@npm:^1.1.2":
- version: 1.1.2
- resolution: "@protobufjs/path@npm:1.1.2"
- checksum: 856eeb532b16a7aac071cacde5c5620df800db4c80cee6dbc56380524736205aae21e5ae47739114bf669ab5e8ba0e767a282ad894f3b5e124197cb9224445ee
- languageName: node
- linkType: hard
-
-"@protobufjs/pool@npm:^1.1.0":
- version: 1.1.0
- resolution: "@protobufjs/pool@npm:1.1.0"
- checksum: d6a34fbbd24f729e2a10ee915b74e1d77d52214de626b921b2d77288bd8f2386808da2315080f2905761527cceffe7ec34c7647bd21a5ae41a25e8212ff79451
- languageName: node
- linkType: hard
-
-"@protobufjs/utf8@npm:^1.1.0":
- version: 1.1.0
- resolution: "@protobufjs/utf8@npm:1.1.0"
- checksum: f9bf3163d13aaa3b6f5e6fbf37a116e094ea021c0e1f2a7ccd0e12a29e2ce08dafba4e8b36e13f8ed7397e1591610ce880ed1289af4d66cf4ace8a36a9557278
- languageName: node
- linkType: hard
-
-"@pushprotocol/dapp@workspace:.":
+"@project/react-app@workspace:.":
version: 0.0.0-use.local
- resolution: "@pushprotocol/dapp@workspace:."
+ resolution: "@project/react-app@workspace:."
dependencies:
"@3id/connect": 0.4.1
"@apollo/client": ^3.3.7
@@ -4713,7 +4663,7 @@ __metadata:
"@mui/lab": ^5.0.0-alpha.72
"@mui/material": ^5.5.0
"@pushprotocol/ledgerlive": 0.0.1
- "@pushprotocol/restapi": 1.0.0
+ "@pushprotocol/restapi": ^1.0.0
"@pushprotocol/socket": 0.4.2
"@pushprotocol/uiweb": 0.5.0
"@reduxjs/toolkit": ^1.7.1
@@ -4799,7 +4749,7 @@ __metadata:
react-player: 2.9.0
react-query: ^3.39.1
react-redux: ^7.2.6
- react-router-dom: 6
+ react-router-dom: ^6.9.0
react-scripts: ^5.0.1
react-scroll-to-bottom: ^4.2.0
react-select: ^5.2.2
@@ -4825,6 +4775,79 @@ __metadata:
languageName: unknown
linkType: soft
+"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "@protobufjs/aspromise@npm:1.1.2"
+ checksum: 011fe7ef0826b0fd1a95935a033a3c0fd08483903e1aa8f8b4e0704e3233406abb9ee25350ec0c20bbecb2aad8da0dcea58b392bbd77d6690736f02c143865d2
+ languageName: node
+ linkType: hard
+
+"@protobufjs/base64@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "@protobufjs/base64@npm:1.1.2"
+ checksum: 67173ac34de1e242c55da52c2f5bdc65505d82453893f9b51dc74af9fe4c065cf4a657a4538e91b0d4a1a1e0a0642215e31894c31650ff6e3831471061e1ee9e
+ languageName: node
+ linkType: hard
+
+"@protobufjs/codegen@npm:^2.0.4":
+ version: 2.0.4
+ resolution: "@protobufjs/codegen@npm:2.0.4"
+ checksum: 59240c850b1d3d0b56d8f8098dd04787dcaec5c5bd8de186fa548de86b86076e1c50e80144b90335e705a044edf5bc8b0998548474c2a10a98c7e004a1547e4b
+ languageName: node
+ linkType: hard
+
+"@protobufjs/eventemitter@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@protobufjs/eventemitter@npm:1.1.0"
+ checksum: 0369163a3d226851682f855f81413cbf166cd98f131edb94a0f67f79e75342d86e89df9d7a1df08ac28be2bc77e0a7f0200526bb6c2a407abbfee1f0262d5fd7
+ languageName: node
+ linkType: hard
+
+"@protobufjs/fetch@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@protobufjs/fetch@npm:1.1.0"
+ dependencies:
+ "@protobufjs/aspromise": ^1.1.1
+ "@protobufjs/inquire": ^1.1.0
+ checksum: 3fce7e09eb3f1171dd55a192066450f65324fd5f7cc01a431df01bb00d0a895e6bfb5b0c5561ce157ee1d886349c90703d10a4e11a1a256418ff591b969b3477
+ languageName: node
+ linkType: hard
+
+"@protobufjs/float@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "@protobufjs/float@npm:1.0.2"
+ checksum: 5781e1241270b8bd1591d324ca9e3a3128d2f768077a446187a049e36505e91bc4156ed5ac3159c3ce3d2ba3743dbc757b051b2d723eea9cd367bfd54ab29b2f
+ languageName: node
+ linkType: hard
+
+"@protobufjs/inquire@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@protobufjs/inquire@npm:1.1.0"
+ checksum: ca06f02eaf65ca36fb7498fc3492b7fc087bfcc85c702bac5b86fad34b692bdce4990e0ef444c1e2aea8c034227bd1f0484be02810d5d7e931c55445555646f4
+ languageName: node
+ linkType: hard
+
+"@protobufjs/path@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "@protobufjs/path@npm:1.1.2"
+ checksum: 856eeb532b16a7aac071cacde5c5620df800db4c80cee6dbc56380524736205aae21e5ae47739114bf669ab5e8ba0e767a282ad894f3b5e124197cb9224445ee
+ languageName: node
+ linkType: hard
+
+"@protobufjs/pool@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@protobufjs/pool@npm:1.1.0"
+ checksum: d6a34fbbd24f729e2a10ee915b74e1d77d52214de626b921b2d77288bd8f2386808da2315080f2905761527cceffe7ec34c7647bd21a5ae41a25e8212ff79451
+ languageName: node
+ linkType: hard
+
+"@protobufjs/utf8@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@protobufjs/utf8@npm:1.1.0"
+ checksum: f9bf3163d13aaa3b6f5e6fbf37a116e094ea021c0e1f2a7ccd0e12a29e2ce08dafba4e8b36e13f8ed7397e1591610ce880ed1289af4d66cf4ace8a36a9557278
+ languageName: node
+ linkType: hard
+
"@pushprotocol/ledgerlive@npm:0.0.1":
version: 0.0.1
resolution: "@pushprotocol/ledgerlive@npm:0.0.1"
@@ -4837,7 +4860,7 @@ __metadata:
languageName: node
linkType: hard
-"@pushprotocol/restapi@npm:1.0.0":
+"@pushprotocol/restapi@npm:^1.0.0":
version: 1.0.0
resolution: "@pushprotocol/restapi@npm:1.0.0"
dependencies:
@@ -7965,18 +7988,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn-node@npm:^1.8.2":
- version: 1.8.2
- resolution: "acorn-node@npm:1.8.2"
- dependencies:
- acorn: ^7.0.0
- acorn-walk: ^7.0.0
- xtend: ^4.0.2
- checksum: 02e1564a1ccf8bd1fcefcd01235398af4a9effaf032c5397994ddd275590a72894cb3e26e4b82579ccdda1e48ade7486aef61e771ddae3563ca452b927f443d8
- languageName: node
- linkType: hard
-
-"acorn-walk@npm:^7.0.0, acorn-walk@npm:^7.1.1":
+"acorn-walk@npm:^7.1.1":
version: 7.2.0
resolution: "acorn-walk@npm:7.2.0"
checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f
@@ -8008,7 +8020,7 @@ __metadata:
languageName: node
linkType: hard
-"acorn@npm:^7.0.0, acorn@npm:^7.1.1, acorn@npm:^7.4.0":
+"acorn@npm:^7.1.1, acorn@npm:^7.4.0":
version: 7.4.1
resolution: "acorn@npm:7.4.1"
bin:
@@ -8244,6 +8256,13 @@ __metadata:
languageName: node
linkType: hard
+"any-promise@npm:^1.0.0":
+ version: 1.3.0
+ resolution: "any-promise@npm:1.3.0"
+ checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de
+ languageName: node
+ linkType: hard
+
"any-signal@npm:^2.0.0, any-signal@npm:^2.1.0":
version: 2.1.2
resolution: "any-signal@npm:2.1.2"
@@ -11249,6 +11268,13 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^4.0.0":
+ version: 4.1.1
+ resolution: "commander@npm:4.1.1"
+ checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977
+ languageName: node
+ linkType: hard
+
"commander@npm:^7.2.0":
version: 7.2.0
resolution: "commander@npm:7.2.0"
@@ -12441,7 +12467,7 @@ __metadata:
languageName: node
linkType: hard
-"defined@npm:^1.0.0, defined@npm:~1.0.1":
+"defined@npm:~1.0.1":
version: 1.0.1
resolution: "defined@npm:1.0.1"
checksum: b1a852300bdb57f297289b55eafdd0c517afaa3ec8190e78fce91b9d8d0c0369d4505ecbdacfd3d98372e664f4a267d9bd793938d4a8c76209c9d9516fbe2101
@@ -12566,19 +12592,6 @@ __metadata:
languageName: node
linkType: hard
-"detective@npm:^5.2.1":
- version: 5.2.1
- resolution: "detective@npm:5.2.1"
- dependencies:
- acorn-node: ^1.8.2
- defined: ^1.0.0
- minimist: ^1.2.6
- bin:
- detective: bin/detective.js
- checksum: dc4601bbc6be850edb3c2dab7a0eaf5a6169a15ad201679c66d40ea1986df816eeaecd590047f15b0780285f3eeea13b82dca0d4c52a47e744a571e326a72dc9
- languageName: node
- linkType: hard
-
"did-jwt@npm:^4.0.0, did-jwt@npm:^4.6.2":
version: 4.9.0
resolution: "did-jwt@npm:4.9.0"
@@ -13125,9 +13138,9 @@ __metadata:
linkType: hard
"electron-to-chromium@npm:^1.3.47, electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.4.284":
- version: 1.4.341
- resolution: "electron-to-chromium@npm:1.4.341"
- checksum: b97377e4e622266953da2c92276b9c0a948ab7e8a0a9c9947da340269f8eb959b8678f76158b78b473a56912c697d89e37a93d82b4d2db84f622e9be7850a540
+ version: 1.4.342
+ resolution: "electron-to-chromium@npm:1.4.342"
+ checksum: 61ecf9f3ea65a6044cdcea092dd56b42d0961fdb8fb3942ba808c6aa6ab3213d3218e599748d6d6ae8b43ddc9f76f428af0b96eaee2f0b4b2f0195c643f36f3d
languageName: node
linkType: hard
@@ -15973,6 +15986,20 @@ __metadata:
languageName: node
linkType: hard
+"glob@npm:7.1.6":
+ version: 7.1.6
+ resolution: "glob@npm:7.1.6"
+ dependencies:
+ fs.realpath: ^1.0.0
+ inflight: ^1.0.4
+ inherits: 2
+ minimatch: ^3.0.4
+ once: ^1.3.0
+ path-is-absolute: ^1.0.0
+ checksum: 351d549dd90553b87c2d3f90ce11aed9e1093c74130440e7ae0592e11bbcd2ce7f0ebb8ba6bfe63aaf9b62166a7f4c80cb84490ae5d78408bb2572bf7d4ee0a6
+ languageName: node
+ linkType: hard
+
"glob@npm:^6.0.1":
version: 6.0.4
resolution: "glob@npm:6.0.4"
@@ -19020,6 +19047,15 @@ __metadata:
languageName: node
linkType: hard
+"jiti@npm:^1.17.2":
+ version: 1.18.2
+ resolution: "jiti@npm:1.18.2"
+ bin:
+ jiti: bin/jiti.js
+ checksum: 46c41cd82d01c6efdee3fc0ae9b3e86ed37457192d6366f19157d863d64961b07982ab04e9d5879576a1af99cc4d132b0b73b336094f86a5ce9fb1029ec2d29f
+ languageName: node
+ linkType: hard
+
"jotai-immer@npm:^0.2.0":
version: 0.2.0
resolution: "jotai-immer@npm:0.2.0"
@@ -21557,6 +21593,17 @@ __metadata:
languageName: node
linkType: hard
+"mz@npm:^2.7.0":
+ version: 2.7.0
+ resolution: "mz@npm:2.7.0"
+ dependencies:
+ any-promise: ^1.0.0
+ object-assign: ^4.0.1
+ thenify-all: ^1.0.0
+ checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87
+ languageName: node
+ linkType: hard
+
"nan@npm:2.14.0":
version: 2.14.0
resolution: "nan@npm:2.14.0"
@@ -23112,7 +23159,7 @@ __metadata:
languageName: node
linkType: hard
-"pirates@npm:^4.0.4":
+"pirates@npm:^4.0.1, pirates@npm:^4.0.4":
version: 4.0.5
resolution: "pirates@npm:4.0.5"
checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227
@@ -25275,7 +25322,7 @@ __metadata:
languageName: node
linkType: hard
-"react-router-dom@npm:6":
+"react-router-dom@npm:^6.9.0":
version: 6.9.0
resolution: "react-router-dom@npm:6.9.0"
dependencies:
@@ -28110,6 +28157,23 @@ __metadata:
languageName: node
linkType: hard
+"sucrase@npm:^3.29.0":
+ version: 3.31.0
+ resolution: "sucrase@npm:3.31.0"
+ dependencies:
+ commander: ^4.0.0
+ glob: 7.1.6
+ lines-and-columns: ^1.1.6
+ mz: ^2.7.0
+ pirates: ^4.0.1
+ ts-interface-checker: ^0.1.9
+ bin:
+ sucrase: bin/sucrase
+ sucrase-node: bin/sucrase-node
+ checksum: 333990b1bca57acc010ae07c763dddfd34f01fd38afe9e53cf43f4a5096bd7a66f924fed65770288fba475f914f3aa5277cc4490ed9e74c50b4cea7f147e9e63
+ languageName: node
+ linkType: hard
+
"super-regex@npm:^0.2.0":
version: 0.2.0
resolution: "super-regex@npm:0.2.0"
@@ -28266,18 +28330,18 @@ __metadata:
linkType: hard
"tailwindcss@npm:^3.0.2":
- version: 3.2.7
- resolution: "tailwindcss@npm:3.2.7"
+ version: 3.3.0
+ resolution: "tailwindcss@npm:3.3.0"
dependencies:
arg: ^5.0.2
chokidar: ^3.5.3
color-name: ^1.1.4
- detective: ^5.2.1
didyoumean: ^1.2.2
dlv: ^1.1.3
fast-glob: ^3.2.12
glob-parent: ^6.0.2
is-glob: ^4.0.3
+ jiti: ^1.17.2
lilconfig: ^2.0.6
micromatch: ^4.0.5
normalize-path: ^3.0.0
@@ -28292,12 +28356,13 @@ __metadata:
postcss-value-parser: ^4.2.0
quick-lru: ^5.1.1
resolve: ^1.22.1
+ sucrase: ^3.29.0
peerDependencies:
postcss: ^8.0.9
bin:
tailwind: lib/cli.js
tailwindcss: lib/cli.js
- checksum: 819446bf67acea1fc738f345d80f328b7bb6e6ef4b24070249a11219307045881cf97baed6258cbdcede7fa18886e9c9c41fd0fa087b3e987cf2948560a2f164
+ checksum: 00a9c603064b15e57be96603112a9e6385b1d1dc229fc49e9267d7f1fd0588a91e07e413ab9422e54afd49fffe9667f317eb5a4e49c44353342128fa3dbb8b0c
languageName: node
linkType: hard
@@ -28499,6 +28564,24 @@ __metadata:
languageName: node
linkType: hard
+"thenify-all@npm:^1.0.0":
+ version: 1.6.0
+ resolution: "thenify-all@npm:1.6.0"
+ dependencies:
+ thenify: ">= 3.1.0 < 4"
+ checksum: dba7cc8a23a154cdcb6acb7f51d61511c37a6b077ec5ab5da6e8b874272015937788402fd271fdfc5f187f8cb0948e38d0a42dcc89d554d731652ab458f5343e
+ languageName: node
+ linkType: hard
+
+"thenify@npm:>= 3.1.0 < 4":
+ version: 3.3.1
+ resolution: "thenify@npm:3.3.1"
+ dependencies:
+ any-promise: ^1.0.0
+ checksum: 84e1b804bfec49f3531215f17b4a6e50fd4397b5f7c1bccc427b9c656e1ecfb13ea79d899930184f78bc2f57285c54d9a50a590c8868f4f0cef5c1d9f898b05e
+ languageName: node
+ linkType: hard
+
"throat@npm:^6.0.1":
version: 6.0.2
resolution: "throat@npm:6.0.2"
@@ -28836,6 +28919,13 @@ __metadata:
languageName: node
linkType: hard
+"ts-interface-checker@npm:^0.1.9":
+ version: 0.1.13
+ resolution: "ts-interface-checker@npm:0.1.13"
+ checksum: 20c29189c2dd6067a8775e07823ddf8d59a33e2ffc47a1bd59a5cb28bb0121a2969a816d5e77eda2ed85b18171aa5d1c4005a6b88ae8499ec7cc49f78571cb5e
+ languageName: node
+ linkType: hard
+
"ts-invariant@npm:^0.10.3":
version: 0.10.3
resolution: "ts-invariant@npm:0.10.3"