From 1f87d171a7652cbd0071dd26c5837f25a1c0a4e2 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Thu, 7 Nov 2024 14:49:59 +0100 Subject: [PATCH 01/37] update interface user account --- .../illustrations/components/Avatar.tsx | 54 +++++++++++ .../components/DiscordProfile.tsx | 30 +++++++ .../illustrations/components/EmailProfile.tsx | 30 +++++++ .../components/TelegramProfile.tsx | 32 +++++++ src/blocks/illustrations/index.ts | 8 ++ .../UserProfileSettings.tsx | 42 +++++++++ .../UserProfileSocialSettings.tsx | 90 +++++++++++++++++++ src/components/userSettings/UserSettings.tsx | 72 +++++++++++---- src/config/Themization.js | 6 ++ 9 files changed, 346 insertions(+), 18 deletions(-) create mode 100644 src/blocks/illustrations/components/Avatar.tsx create mode 100644 src/blocks/illustrations/components/DiscordProfile.tsx create mode 100644 src/blocks/illustrations/components/EmailProfile.tsx create mode 100644 src/blocks/illustrations/components/TelegramProfile.tsx create mode 100644 src/components/UserProfileSettings/UserProfileSettings.tsx create mode 100644 src/components/UserProfileSettings/UserProfileSocialSettings.tsx diff --git a/src/blocks/illustrations/components/Avatar.tsx b/src/blocks/illustrations/components/Avatar.tsx new file mode 100644 index 0000000000..05cee6e9ff --- /dev/null +++ b/src/blocks/illustrations/components/Avatar.tsx @@ -0,0 +1,54 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const Avatar: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + + + + + + } + {...restProps} + /> + ); +}; + +export default Avatar; diff --git a/src/blocks/illustrations/components/DiscordProfile.tsx b/src/blocks/illustrations/components/DiscordProfile.tsx new file mode 100644 index 0000000000..35a9944ae6 --- /dev/null +++ b/src/blocks/illustrations/components/DiscordProfile.tsx @@ -0,0 +1,30 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const DiscordProfile: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + } + {...restProps} + /> + ); +}; + +export default DiscordProfile; diff --git a/src/blocks/illustrations/components/EmailProfile.tsx b/src/blocks/illustrations/components/EmailProfile.tsx new file mode 100644 index 0000000000..1df8eba6db --- /dev/null +++ b/src/blocks/illustrations/components/EmailProfile.tsx @@ -0,0 +1,30 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const EmailProfile: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + } + {...restProps} + /> + ); +}; + +export default EmailProfile; diff --git a/src/blocks/illustrations/components/TelegramProfile.tsx b/src/blocks/illustrations/components/TelegramProfile.tsx new file mode 100644 index 0000000000..82ee5c7161 --- /dev/null +++ b/src/blocks/illustrations/components/TelegramProfile.tsx @@ -0,0 +1,32 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const TelegramProfile: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + } + {...restProps} + /> + ); +}; + +export default TelegramProfile; diff --git a/src/blocks/illustrations/index.ts b/src/blocks/illustrations/index.ts index 5d9470392a..1ff4806b18 100644 --- a/src/blocks/illustrations/index.ts +++ b/src/blocks/illustrations/index.ts @@ -7,6 +7,8 @@ export { default as AlphaAccessNFT } from './components/AlphaAccessNFT'; export { default as Arbitrum } from './components/Arbitrum'; +export { default as Avatar } from './components/Avatar'; + export { default as Base } from './components/Base'; export { default as BlueBonusActivitySubscribers } from './components/BlueBonusActivitySubscribers'; @@ -29,8 +31,12 @@ export { default as CyberLogoRewards } from './components/CyberLogoRewards'; export { default as Discord } from './components/Discord'; +export { default as DiscordProfile } from './components/DiscordProfile'; + export { default as EarnOnPush } from './components/EarnOnPush'; +export { default as EmailProfile } from './components/EmailProfile'; + export { default as Ethereum } from './components/Ethereum'; export { default as FiveSubscribedDefiChannel } from './components/FiveSubscribedDefiChannel'; @@ -99,6 +105,8 @@ export { default as StakePushYellowMultiplier } from './components/StakePushYell export { default as SubscribePoints } from './components/SubscribePoints'; +export { default as TelegramProfile } from './components/TelegramProfile'; + export { default as TripleRewardsCoin } from './components/TripleRewardsCoin'; export { default as Twitter } from './components/Twitter'; diff --git a/src/components/UserProfileSettings/UserProfileSettings.tsx b/src/components/UserProfileSettings/UserProfileSettings.tsx new file mode 100644 index 0000000000..cb3b968b5f --- /dev/null +++ b/src/components/UserProfileSettings/UserProfileSettings.tsx @@ -0,0 +1,42 @@ +//Components +import { Avatar, Box, Button, TextInput } from 'blocks'; + +const UserProfileSettings = () => { + return ( + + + + + + + + + console.log('new')} + totalCount={50} + /> + + + + + ); +}; + +export default UserProfileSettings; diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx new file mode 100644 index 0000000000..8dc2566ccc --- /dev/null +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -0,0 +1,90 @@ +//Components +import { Avatar, Box, Button, Discord, DiscordProfile, EmailProfile, TelegramProfile, Text, TextInput } from 'blocks'; + +const UserProfileSocialSettings = () => { + const itemList = [ + { + icon: () => , + itemTitle: 'Email', + itemDescription: 'Receive notifications in your email inbox', + }, + { + icon: () => , + itemTitle: 'Telegram', + itemDescription: 'Receive notifications as Telegram messages', + }, + { + icon: () => , + itemTitle: 'Discord', + itemDescription: 'Receive notifications as Discord messages', + }, + ]; + return ( + + + + Get Notified Anywhere + + + + Connects apps and receive notifications directly in your Email, Telegram and Discord + + + + + {itemList?.map((item) => ( + + + + {item?.icon()} + + + + + {item.itemTitle} + + + {item.itemDescription} + + + + + + + ))} + + + ); +}; + +export default UserProfileSocialSettings; diff --git a/src/components/userSettings/UserSettings.tsx b/src/components/userSettings/UserSettings.tsx index c65f4dba5a..28fcda4f19 100644 --- a/src/components/userSettings/UserSettings.tsx +++ b/src/components/userSettings/UserSettings.tsx @@ -12,11 +12,14 @@ import { useAccount } from 'hooks'; import { Button } from 'primaries/SharedStyling'; import { ImageV2 } from 'components/reusables/SharedStylingV2'; import { updateBulkSubscriptions, updateBulkUserSettings } from 'redux/slices/channelSlice'; +import UserProfileSettings from 'components/UserProfileSettings/UserProfileSettings'; // Internal Configs import { device } from 'config/Globals'; import ChannelListSettings from 'components/channel/ChannelListSettings'; import PushSnapSettings from 'components/PushSnap/PushSnapSettings'; +import { Box } from 'blocks'; +import UserProfileSocialSettings from 'components/UserProfileSettings/UserProfileSocialSettings'; interface ChannelListItem { channel: string; @@ -95,11 +98,16 @@ function UserSettings() { const selectOptions = [ { value: 0, + label: 'My Profile', + title: 'Your Profile', + }, + { + value: 1, label: 'Notification Settings', title: 'Notification Settings', }, { - value: 1, + value: 2, label: 'Push Snap', title: '', }, @@ -107,8 +115,11 @@ function UserSettings() { return ( - Settings - Customize your Push profile or manage your notification preferences + + Settings + Customize your Push profile or manage your notification preferences + + {selectOptions.map((selectOptions) => ( @@ -121,16 +132,32 @@ function UserSettings() { ))} - - - {selectOptions[selectedOption]?.title && ( - {selectOptions[selectedOption]?.title} - )} - - {selectedOption === 0 && } - {selectedOption === 1 && } - - + + + + + {selectOptions[selectedOption]?.title && ( + {selectOptions[selectedOption]?.title} + )} + + {selectedOption === 0 && } + {selectedOption === 1 && } + {selectedOption === 2 && } + + + + {selectedOption == 0 && ( + + + {/* {selectOptions[selectedOption]?.title && ( + {selectOptions[selectedOption]?.title} + )} */} + + + + + )} + ); @@ -220,10 +247,10 @@ const SelectListOption = styled(Button)<{ isSelected: boolean }>` `; const ChannelWrapper = styled.div` - border: 1px solid ${(props) => props.theme.default.borderColor}; + border: 1px solid ${(props) => props.theme.userSettingsBorder}; padding: 12px; - border-radius: 16px; - flex-grow: 1; + border-radius: 24px; + // flex-grow: 1; @media ${device.tablet} { margin: 8px 0px; @@ -231,10 +258,19 @@ const ChannelWrapper = styled.div` } `; -const ChannelContainer = styled.div` +const ChannelBlock = styled.div` + display: flex; + flex-direction: column; + flex: 1; + gap: 16px; + overflow-y: auto; + height: 700px; +`; + +const ChannelContainer = styled.div<{ selectedOption: number }>` overflow: hidden; overflow-y: scroll; - height: 55vh; + height: ${(props) => (props.selectedOption === 0 ? 'auto' : '55vh')}; padding: 12px; &::-webkit-scrollbar-track { diff --git a/src/config/Themization.js b/src/config/Themization.js index 8a1933a90e..7194737191 100644 --- a/src/config/Themization.js +++ b/src/config/Themization.js @@ -311,6 +311,9 @@ const themeLight = { //Connect Wallet and Push user Flow Modal userSecText: '#8C93A0', disabledBtnColor: '#E5E5E5', + + //userSettings + userSettingsBorder: '#EAEBF2', }; const themeDark = { @@ -627,6 +630,9 @@ const themeDark = { //Connect Wallet and Push user Flow Modal userSecText: '#484D58', disabledBtnColor: '#484D58', + + //userSettings + userSettingsBorder: '#313338', }; export { themeDark, themeLight }; From e6d8208466c43343b3788aaf5d7445e5c018805e Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 8 Nov 2024 00:29:14 +0100 Subject: [PATCH 02/37] update email and verify modal --- .../UserProfileSettings/AddEmail.tsx | 156 ++++++++++++++++++ .../UserProfileSettings.tsx | 5 +- .../UserProfileSocialSettings.tsx | 63 ++++++- 3 files changed, 215 insertions(+), 9 deletions(-) create mode 100644 src/components/UserProfileSettings/AddEmail.tsx diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx new file mode 100644 index 0000000000..adef8a2fc4 --- /dev/null +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -0,0 +1,156 @@ +import { FC, useEffect, useState } from 'react'; +import { css } from 'styled-components'; +import { useFormik } from 'formik'; +import * as Yup from 'yup'; + +import { ModalResponse } from 'common'; + +import { Box, Button, Modal, Text, TextInput } from 'blocks'; + +export type AddEmailProps = { modalControl: ModalResponse }; + +const AddEmail: FC = ({ modalControl }) => { + const { isOpen, onClose } = modalControl; + const [step, setStep] = useState(1); // Step 1 for email input, Step 2 for verification + + // Email validation schema for Step 1 + const emailValidationSchema = Yup.object({ + email: Yup.string().email('Invalid email address').required('Required'), + }); + + // Formik setup for the email form in Step 1 + const emailFormik = useFormik({ + initialValues: { email: '' }, + validationSchema: emailValidationSchema, + onSubmit: () => { + setStep(2); + }, + }); + + // Verification code validation schema for Step 2 + const codeValidationSchema = Yup.object({ + code: Yup.string().length(6, 'Code should be 6 digits').required('Required'), + }); + + // Formik setup for the verification code form in Step 2 + const codeFormik = useFormik({ + initialValues: { code: '' }, + validationSchema: codeValidationSchema, + onSubmit: (values) => { + console.log('Verification code submitted:', values.code); + // Add your logic here for what happens after the verification code is submitted + }, + }); + + // Watch for code length and submit automatically if it reaches 6 digits + useEffect(() => { + if (codeFormik.values.code.length === 6 && !codeFormik.errors.code) { + codeFormik.submitForm(); + } + }, [codeFormik.values.code, codeFormik.errors.code]); + + return ( + + {step == 1 && ( + + + Enter your email + + + + Confirm your email and verify to connect + + +
+ + + + + + + +
+
+ )} + + {step == 2 && ( + + + Verify Email + + + + We sent you a 6 digit confirmation code to {emailFormik.values.email} Please enter it below to confirm your + email address. + + + + + + + + Didn't receive a code? + + Send code again + + + + )} +
+ ); +}; + +export { AddEmail }; diff --git a/src/components/UserProfileSettings/UserProfileSettings.tsx b/src/components/UserProfileSettings/UserProfileSettings.tsx index cb3b968b5f..d0da6c5165 100644 --- a/src/components/UserProfileSettings/UserProfileSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSettings.tsx @@ -1,7 +1,10 @@ +// React and other libraries +import { FC } from 'react'; + //Components import { Avatar, Box, Button, TextInput } from 'blocks'; -const UserProfileSettings = () => { +const UserProfileSettings: FC = () => { return ( { + const modalControl = useDisclosure(); -const UserProfileSocialSettings = () => { const itemList = [ { icon: () => , itemTitle: 'Email', itemDescription: 'Receive notifications in your email inbox', + onClick: () => modalControl.open(), }, { icon: () => , @@ -74,15 +96,40 @@ const UserProfileSocialSettings = () => { - + {item.itemTitle != 'Email' ? ( + + ) : ( + + } + onClick={() => console.log('disconnect')} + /> + + } + > + + + )} ))} + + {modalControl.isOpen && } ); }; From 376ea48e8c9c3e889b9192186edae4bb05ae6986 Mon Sep 17 00:00:00 2001 From: Kushdeep Singh Date: Fri, 8 Nov 2024 19:29:00 +0530 Subject: [PATCH 03/37] DAPP-1957: Integrate UI for Dashboard Social Account Links (Email/Telegram/Discord) --- src/modules/dashboard/Dashboard.constants.ts | 23 +++- src/modules/dashboard/Dashboard.tsx | 2 + src/modules/dashboard/Dashboard.types.ts | 7 ++ .../components/ClaimSocialHandles.tsx | 89 +++++++++++++++ .../components/ConnectSocialHandles.tsx | 105 ++++++++++++++++++ .../dashboard/components/Socialhandles.tsx | 36 ++++++ 6 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 src/modules/dashboard/components/ClaimSocialHandles.tsx create mode 100644 src/modules/dashboard/components/ConnectSocialHandles.tsx create mode 100644 src/modules/dashboard/components/Socialhandles.tsx diff --git a/src/modules/dashboard/Dashboard.constants.ts b/src/modules/dashboard/Dashboard.constants.ts index 4a9342b255..0e6e7db8d2 100644 --- a/src/modules/dashboard/Dashboard.constants.ts +++ b/src/modules/dashboard/Dashboard.constants.ts @@ -1,6 +1,6 @@ import { PushAlpha, PushBot, PushDev } from 'blocks'; -import { ChatType, EnvKeys, SourceKeys } from './Dashboard.types'; +import { ChatType, EnvKeys, SocialHandlesItemType, SourceKeys } from './Dashboard.types'; export const recommendedChatList: ChatType[] = [ { @@ -90,3 +90,24 @@ export const trendingSource: Record = { export const firstEndDate = new Date(Date.now()).toISOString().split('T')[0]; export const secondEndDate = new Date(Date.now() - 7 * 86400000).toISOString().split('T')[0]; export const startDate = new Date(Date.now() - 14 * 86400000).toISOString().split('T')[0]; + +export const socialHandlesList: SocialHandlesItemType[] = [ + { + heading: 'Email', + description: 'Receive notifications in your email inbox', + type: 'email', + isConnected: true, + }, + { + heading: 'Telegram', + description: 'Receive notifications as Telegram messages', + type: 'telegram', + isConnected: false, + }, + { + heading: 'Discord', + description: 'Receive notifications as Discord messages', + type: 'discord', + isConnected: false, + }, +]; diff --git a/src/modules/dashboard/Dashboard.tsx b/src/modules/dashboard/Dashboard.tsx index d1db76e55b..ec2b24553b 100644 --- a/src/modules/dashboard/Dashboard.tsx +++ b/src/modules/dashboard/Dashboard.tsx @@ -9,6 +9,7 @@ import { DashboardHeader } from './components/DashboardHeader'; import { DashboardSubHeader } from './components/DashboardSubHeader'; import { FeaturedChannels } from './components/FeaturedChannels'; import { StakingPools } from './components/StakingPools'; +import { SocialHandles } from './components/Socialhandles'; export type DashboardProps = {}; @@ -35,6 +36,7 @@ const Dashboard: FC = () => { flexDirection="column" gap="spacing-md" > + = () => { + return ( + + + + + Get notified anywhere and earn points + + }>NEW + + + Connect apps and receive notifications directly in your Email, Telegram and Discord + + + + + + + + 1.5x + + + + + + 25,000 + + + + + + ); +}; + +export { ClaimSocialHandles }; diff --git a/src/modules/dashboard/components/ConnectSocialHandles.tsx b/src/modules/dashboard/components/ConnectSocialHandles.tsx new file mode 100644 index 0000000000..4bab0b3bc7 --- /dev/null +++ b/src/modules/dashboard/components/ConnectSocialHandles.tsx @@ -0,0 +1,105 @@ +import { FC } from 'react'; +import { css } from 'styled-components'; + +import { Box, Button, Dropdown, Menu, MenuItem, Text, CaretDown, OptOut } from 'blocks'; +import { socialHandlesList } from '../Dashboard.constants'; +import { SocialHandlesItemType } from '../Dashboard.types'; + +export type ConnectSocialHandlesProps = {}; + +const ConnectSocialHandles: FC = () => { + return ( + <> + + {socialHandlesList.map((item: SocialHandlesItemType) => ( + + + + {/* Social icons will be displayed here */} + {/* Add icons according to the specified type */} + + {item.heading} + + + + + {item.description} + + + + + {item.isConnected ? ( + + } + /> + + } + > + + + ) : ( + + )} + + + ))} + + + ); +}; + +export { ConnectSocialHandles }; diff --git a/src/modules/dashboard/components/Socialhandles.tsx b/src/modules/dashboard/components/Socialhandles.tsx new file mode 100644 index 0000000000..7a02870d0f --- /dev/null +++ b/src/modules/dashboard/components/Socialhandles.tsx @@ -0,0 +1,36 @@ +import { FC } from 'react'; + +import { Box } from 'blocks'; +import { ClaimSocialHandles } from './ClaimSocialHandles'; +import { ConnectSocialHandles } from './ConnectSocialHandles'; +import { useAccount } from 'hooks'; + +export type SocialHandlesProps = {}; + +const SocialHandles: FC = () => { + const { isWalletConnected } = useAccount(); + + // Check if the wallet is connected to the DApp. + // If not, return null. If connected, return SocialHandles. + if (!isWalletConnected) return null; + + return ( + + {/* Render Claim based on Social Handles if wallet is connected */} + + + {/* Render option to connect Social Handles */} + + + ); +}; + +export { SocialHandles }; From b7bf3c7781708ca8f84f624b4c73a434c0d1e306 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 8 Nov 2024 23:00:00 +0100 Subject: [PATCH 04/37] update formdata --- .../UserProfileSettings/UploadAvatarModal.tsx | 173 ++++++++++++++++++ .../UserProfileSettings.tsx | 114 +++++++++--- src/components/userSettings/UserSettings.tsx | 4 - 3 files changed, 257 insertions(+), 34 deletions(-) create mode 100644 src/components/UserProfileSettings/UploadAvatarModal.tsx diff --git a/src/components/UserProfileSettings/UploadAvatarModal.tsx b/src/components/UserProfileSettings/UploadAvatarModal.tsx new file mode 100644 index 0000000000..e82606a4b4 --- /dev/null +++ b/src/components/UserProfileSettings/UploadAvatarModal.tsx @@ -0,0 +1,173 @@ +import { FC, useRef, useState } from 'react'; +import { css } from 'styled-components'; +import { Box, Button, Cross, FileUpload, Modal, Text } from 'blocks'; +import ImageClipper from 'primaries/ImageClipper'; +import { ModalResponse } from 'common'; + +type UploadAvatarModalProps = { + formValues: { avatar: File | null; imageSrc: string; imageType: string }; + setFieldValue: (field: string, value: any) => void; + modalControl: ModalResponse; +}; + +const UploadAvatarModal: FC = ({ formValues, setFieldValue, modalControl }) => { + const { isOpen, onClose } = modalControl; + const childRef = useRef(); + const [croppedImage, setCroppedImage] = useState(formValues.imageSrc); + + // Handle file selection from input + const handleFileChange = async (e: React.ChangeEvent) => { + const file = e.currentTarget.files?.[0]; + setCroppedImage(undefined); + if (file) { + await processFile(file); + } + }; + + // Handle file drop + const handleDrop = async (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + setCroppedImage(undefined); + const file = e.dataTransfer.files?.[0]; + if (file) { + await processFile(file); + } + }; + + // Process selected file + const processFile = async (file: File) => { + setFieldValue('avatar', file); + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onloadend = () => { + setFieldValue('imageSrc', reader.result as string); + setFieldValue('imageType', file.type); + }; + }; + + return ( + + {/* Upload Area */} + + + Upload a PNG, JPG up to 1MB. Crop the image to resize to 128px. + + + + + {croppedImage ? ( + + Cropped Img + + ) : ( + { + setCroppedImage(croppedImg); + setFieldValue('avatar', croppedImg); + }} + ref={childRef} + /> + )} + + + + Drag and Drop or + + + + + + + + {/* Action Button */} + + {croppedImage ? ( + + ) : ( + + )} + + + ); +}; + +export default UploadAvatarModal; diff --git a/src/components/UserProfileSettings/UserProfileSettings.tsx b/src/components/UserProfileSettings/UserProfileSettings.tsx index d0da6c5165..bd3659f897 100644 --- a/src/components/UserProfileSettings/UserProfileSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSettings.tsx @@ -1,43 +1,97 @@ // React and other libraries import { FC } from 'react'; +import { useFormik } from 'formik'; +import * as Yup from 'yup'; //Components import { Avatar, Box, Button, TextInput } from 'blocks'; +import { useDisclosure } from 'common'; +import UploadAvatarModal from './UploadAvatarModal'; +import { css } from 'styled-components'; const UserProfileSettings: FC = () => { + const modalControl = useDisclosure(); + + // Validation schema using Yup + const validationSchema = Yup.object({ + displayName: Yup.string().max(50, 'Display Name cannot exceed 50 characters').required('Display Name is required'), + }); + + // Formik setup + const formik = useFormik({ + initialValues: { displayName: '', avatar: null, imageType: '', imageSrc: '' }, + validationSchema, + onSubmit: (values) => { + console.log('Form submitted:', values); + // Add your save logic here + }, + }); return ( - - - - - - - - console.log('new')} - totalCount={50} - /> - - - + {formik.values.avatar ? ( + + + + ) : ( + + )} + + + + + {modalControl.isOpen && ( + + )} + + + + + + + ); }; diff --git a/src/components/userSettings/UserSettings.tsx b/src/components/userSettings/UserSettings.tsx index 28fcda4f19..e2d06171a1 100644 --- a/src/components/userSettings/UserSettings.tsx +++ b/src/components/userSettings/UserSettings.tsx @@ -149,10 +149,6 @@ function UserSettings() { {selectedOption == 0 && ( - {/* {selectOptions[selectedOption]?.title && ( - {selectOptions[selectedOption]?.title} - )} */} - From c7887b691adf3dbf15d0403b0dd68479a3ae039b Mon Sep 17 00:00:00 2001 From: corlard3y Date: Sat, 9 Nov 2024 01:27:54 +0100 Subject: [PATCH 05/37] update button size --- src/modules/dashboard/components/ClaimSocialHandles.tsx | 2 +- src/modules/dashboard/components/ConnectSocialHandles.tsx | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/dashboard/components/ClaimSocialHandles.tsx b/src/modules/dashboard/components/ClaimSocialHandles.tsx index e89b102e84..ca468db97a 100644 --- a/src/modules/dashboard/components/ClaimSocialHandles.tsx +++ b/src/modules/dashboard/components/ClaimSocialHandles.tsx @@ -76,7 +76,7 @@ const ClaimSocialHandles: FC = () => { ) : ( diff --git a/src/components/userSettings/UserSettings.tsx b/src/components/userSettings/UserSettings.tsx index e2d06171a1..72a43512b1 100644 --- a/src/components/userSettings/UserSettings.tsx +++ b/src/components/userSettings/UserSettings.tsx @@ -115,10 +115,10 @@ function UserSettings() { return ( - - Settings - Customize your Push profile or manage your notification preferences - + {/* */} + Settings + Customize your Push profile or manage your notification preferences + {/* */} @@ -165,6 +165,8 @@ export default UserSettings; const Container = styled.div` padding: 32px 24px; flex: 1; + height: 100%; + overflow: hidden; @media ${device.tablet} { padding: 24px 12px; @@ -205,6 +207,10 @@ const Wrapper = styled.div` flex-direction: row; justify-content: space-between; + height: 100%; + flex: 1; + min-height: 0; + @media ${device.tablet} { flex-direction: column; } @@ -246,7 +252,6 @@ const ChannelWrapper = styled.div` border: 1px solid ${(props) => props.theme.userSettingsBorder}; padding: 12px; border-radius: 24px; - // flex-grow: 1; @media ${device.tablet} { margin: 8px 0px; @@ -257,15 +262,41 @@ const ChannelWrapper = styled.div` const ChannelBlock = styled.div` display: flex; flex-direction: column; - flex: 1; + flex-grow: 1; + min-height: 0; gap: 16px; + padding-right: 12px; overflow-y: auto; - height: 700px; + + &::-webkit-scrollbar-track { + background-color: transparent; + position: absolute; + right: 10px; + } + + &::-webkit-scrollbar { + background-color: transparent; + width: 4px; + position: absolute; + right: 10px; + } + + &::-webkit-scrollbar-thumb { + background-color: #d53a94; + border-radius: 99px; + width: 4px; + position: absolute; + right: 10px; + } + + // Adding margin-bottom to the last child + & > *:last-child { + margin-bottom: 100px; + } `; const ChannelContainer = styled.div<{ selectedOption: number }>` - overflow: hidden; - overflow-y: scroll; + overflow-y: auto; height: ${(props) => (props.selectedOption === 0 ? 'auto' : '55vh')}; padding: 12px; diff --git a/src/queries/hooks/user/index.ts b/src/queries/hooks/user/index.ts index fe7160ed77..e92673952c 100644 --- a/src/queries/hooks/user/index.ts +++ b/src/queries/hooks/user/index.ts @@ -2,3 +2,4 @@ export * from './useGetUserSubscriptions'; export * from './useSubscribeChannel'; export * from './useUnsubscribeChannel'; export * from './useUpdateNotificationSettings'; +export * from './useGetUserProfileInfo'; diff --git a/src/queries/hooks/user/useGetUserProfileInfo.ts b/src/queries/hooks/user/useGetUserProfileInfo.ts new file mode 100644 index 0000000000..b006400904 --- /dev/null +++ b/src/queries/hooks/user/useGetUserProfileInfo.ts @@ -0,0 +1,22 @@ +import { useQuery, UseQueryOptions } from '@tanstack/react-query'; +import { useSelector } from 'react-redux'; + +import { userProfileInfo } from '../../queryKeys'; +import { getUserProfileInfo } from '../../services'; + +//Types +import { UserStoreType } from 'types'; +import { UserProfileInfoResponse } from 'queries/types'; + +export const useGetUserProfileInfo = (config?: Partial>) => { + const { userPushSDKInstance } = useSelector((state: UserStoreType) => { + return state.user; + }); + + const query = useQuery({ + queryKey: [userProfileInfo, userPushSDKInstance?.account], + queryFn: () => getUserProfileInfo(userPushSDKInstance), + ...config, + }); + return query; +}; diff --git a/src/queries/models/user/getUserProfileInfoModelCreator.ts b/src/queries/models/user/getUserProfileInfoModelCreator.ts new file mode 100644 index 0000000000..a34881fef0 --- /dev/null +++ b/src/queries/models/user/getUserProfileInfoModelCreator.ts @@ -0,0 +1,4 @@ +import { UserProfileInfoResponse } from 'queries/types'; + +//any remodelling needed in the response can be done here +export const getUserProfileInfoModelCreator = (response: UserProfileInfoResponse): UserProfileInfoResponse => response; diff --git a/src/queries/models/user/index.ts b/src/queries/models/user/index.ts index ea78fdbc11..6c4d9b4ada 100644 --- a/src/queries/models/user/index.ts +++ b/src/queries/models/user/index.ts @@ -1 +1,2 @@ export * from './getUserSubscriptionsModelCreator'; +export * from './getUserProfileInfoModelCreator'; diff --git a/src/queries/queryKeys.ts b/src/queries/queryKeys.ts index 0270b2b84d..3adfe71488 100644 --- a/src/queries/queryKeys.ts +++ b/src/queries/queryKeys.ts @@ -41,6 +41,7 @@ export const uniV2StakeEpoch = 'uniV2StakeEpoch'; export const unsubscribe = 'unsubscribe'; export const updateChannelDetails = 'updateChannelDetails'; export const updatingNotificationSetting = 'updatingNotificationSetting'; +export const userProfileInfo = 'userProfileInfo'; export const userRewardsDetails = 'userRewardsDetails'; export const UserRewardsDetails = 'userRewardsDetails'; export const userSubscription = 'userSubscription'; diff --git a/src/queries/services/user/getUserProfileInfo.ts b/src/queries/services/user/getUserProfileInfo.ts new file mode 100644 index 0000000000..d2130c62a2 --- /dev/null +++ b/src/queries/services/user/getUserProfileInfo.ts @@ -0,0 +1,5 @@ +import { PushAPI } from '@pushprotocol/restapi'; +import { getUserProfileInfoModelCreator } from 'queries/models'; + +export const getUserProfileInfo = (userPushSDKInstance: PushAPI) => + userPushSDKInstance.profile.info().then(getUserProfileInfoModelCreator); diff --git a/src/queries/services/user/index.ts b/src/queries/services/user/index.ts index 6618895a84..54ea4efe28 100644 --- a/src/queries/services/user/index.ts +++ b/src/queries/services/user/index.ts @@ -2,3 +2,4 @@ export * from './getUserSubscriptions'; export * from './subscribeToChannel'; export * from './unsubscribeChannel'; export * from './updateNotificationSettings'; +export * from './getUserProfileInfo'; diff --git a/src/queries/types/user.ts b/src/queries/types/user.ts index dbdf8eec16..9cf9e280b6 100644 --- a/src/queries/types/user.ts +++ b/src/queries/types/user.ts @@ -32,3 +32,10 @@ export type UnsubscribeChannelResponse = { status: string; message: string; }; + +export type UserProfileInfoResponse = { + name: string | null; + desc: string | null; + picture: string | null; + profileVerificationProof: string | null; +}; From ca3bc54387cf87dbcd1d5a09a00d8dbc5b6aeefc Mon Sep 17 00:00:00 2001 From: corlard3y Date: Mon, 11 Nov 2024 22:42:06 +0100 Subject: [PATCH 08/37] update user profile --- .../UserProfileSettings.tsx | 92 ++++++++++++++++--- src/queries/hooks/user/index.ts | 1 + .../hooks/user/useUpdateUserProfileInfo.ts | 9 ++ src/queries/queryKeys.ts | 1 + src/queries/services/user/index.ts | 1 + .../services/user/updateUserProfileInfo.ts | 24 +++++ src/queries/types/user.ts | 10 +- 7 files changed, 123 insertions(+), 15 deletions(-) create mode 100644 src/queries/hooks/user/useUpdateUserProfileInfo.ts create mode 100644 src/queries/services/user/updateUserProfileInfo.ts diff --git a/src/components/UserProfileSettings/UserProfileSettings.tsx b/src/components/UserProfileSettings/UserProfileSettings.tsx index e2390c019d..c53088fca5 100644 --- a/src/components/UserProfileSettings/UserProfileSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSettings.tsx @@ -1,25 +1,40 @@ // React and other libraries -import { FC, useEffect } from 'react'; +import { FC, useEffect, useState } from 'react'; import { useFormik } from 'formik'; import * as Yup from 'yup'; +import { useSelector } from 'react-redux'; + +// hooks +import { useAccount } from 'hooks'; +import { useAppContext } from 'contexts/AppContext'; //Components -import { Box, Button, CameraFilled, TextInput } from 'blocks'; +import { Alert, Box, Button, CameraFilled, TextInput } from 'blocks'; import { useDisclosure } from 'common'; import UploadAvatarModal from './UploadAvatarModal'; import { css } from 'styled-components'; -import { useGetUserProfileInfo } from 'queries'; +import { useGetUserProfileInfo, useUpdateUserProfileInfo } from 'queries'; // Define Formik initial values type type FormValues = { displayName: string | null; picture: string | null; - description: string | null; + desc: string | null; }; const UserProfileSettings: FC = () => { const modalControl = useDisclosure(); - const { data: userProfileInfo } = useGetUserProfileInfo(); + const { wallet } = useAccount(); + const { handleConnectWalletAndEnableProfile } = useAppContext(); + const { data: userProfileInfo, refetch: refetchUserInfo } = useGetUserProfileInfo(); + const { mutate: updateUserInfo, isPending: updatingInfo } = useUpdateUserProfileInfo(); + + const [errorMessage, setErrorMessage] = useState(''); + const [successInfo, setSuccessInfo] = useState(''); + + const { userPushSDKInstance } = useSelector((state: any) => { + return state.user; + }); // Validation schema using Yup const validationSchema = Yup.object({ @@ -28,11 +43,37 @@ const UserProfileSettings: FC = () => { // Formik setup const formik = useFormik({ - initialValues: { displayName: '', picture: null, description: '' }, + initialValues: { displayName: '', picture: null, desc: '' }, validationSchema, - onSubmit: (values) => { - console.log('Form submitted:', values); + onSubmit: async (values) => { // Add your save logic here + + const sdkInstance = !userPushSDKInstance?.signer + ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined + : userPushSDKInstance; + + updateUserInfo( + { + userPushSDKInstance: sdkInstance, + name: values.displayName, + desc: values.desc, + picture: values.picture, + }, + { + onSuccess: (response: any) => { + setSuccessInfo('User Details Updated Successfully'); + refetchUserInfo(); + + setTimeout(() => { + setSuccessInfo(''); + }, 3000); + }, + onError: (error: Error) => { + console.log('Error updating user profile info', error); + setErrorMessage('Error while updating User Info!'); + }, + } + ); }, }); @@ -42,7 +83,7 @@ const UserProfileSettings: FC = () => { formik.setValues({ displayName: userProfileInfo.name || '', picture: userProfileInfo.picture || null, - description: userProfileInfo.desc || null, + desc: userProfileInfo.desc || null, }); } }, [userProfileInfo]); @@ -131,15 +172,38 @@ const UserProfileSettings: FC = () => { > - + + + {successInfo && ( + + + + )} + + {errorMessage && ( + + + + )} ); diff --git a/src/queries/hooks/user/index.ts b/src/queries/hooks/user/index.ts index e92673952c..9e2ac9063c 100644 --- a/src/queries/hooks/user/index.ts +++ b/src/queries/hooks/user/index.ts @@ -3,3 +3,4 @@ export * from './useSubscribeChannel'; export * from './useUnsubscribeChannel'; export * from './useUpdateNotificationSettings'; export * from './useGetUserProfileInfo'; +export * from './useUpdateUserProfileInfo'; diff --git a/src/queries/hooks/user/useUpdateUserProfileInfo.ts b/src/queries/hooks/user/useUpdateUserProfileInfo.ts new file mode 100644 index 0000000000..34ae314c51 --- /dev/null +++ b/src/queries/hooks/user/useUpdateUserProfileInfo.ts @@ -0,0 +1,9 @@ +import { useMutation } from '@tanstack/react-query'; +import { updateUserProfileDetails } from 'queries/queryKeys'; +import { updateUserProfileInfo } from 'queries/services'; + +export const useUpdateUserProfileInfo = () => + useMutation({ + mutationKey: [updateUserProfileDetails], + mutationFn: updateUserProfileInfo, + }); diff --git a/src/queries/queryKeys.ts b/src/queries/queryKeys.ts index 3adfe71488..f94ff0e50e 100644 --- a/src/queries/queryKeys.ts +++ b/src/queries/queryKeys.ts @@ -42,6 +42,7 @@ export const unsubscribe = 'unsubscribe'; export const updateChannelDetails = 'updateChannelDetails'; export const updatingNotificationSetting = 'updatingNotificationSetting'; export const userProfileInfo = 'userProfileInfo'; +export const updateUserProfileDetails = 'updateUserProfileDetails'; export const userRewardsDetails = 'userRewardsDetails'; export const UserRewardsDetails = 'userRewardsDetails'; export const userSubscription = 'userSubscription'; diff --git a/src/queries/services/user/index.ts b/src/queries/services/user/index.ts index 54ea4efe28..2ddc84a565 100644 --- a/src/queries/services/user/index.ts +++ b/src/queries/services/user/index.ts @@ -3,3 +3,4 @@ export * from './subscribeToChannel'; export * from './unsubscribeChannel'; export * from './updateNotificationSettings'; export * from './getUserProfileInfo'; +export * from './updateUserProfileInfo'; diff --git a/src/queries/services/user/updateUserProfileInfo.ts b/src/queries/services/user/updateUserProfileInfo.ts new file mode 100644 index 0000000000..0bb47b9cfb --- /dev/null +++ b/src/queries/services/user/updateUserProfileInfo.ts @@ -0,0 +1,24 @@ +import { PushAPI } from '@pushprotocol/restapi'; +import { UpdateProfileInfoResponse } from 'queries/types'; + +// Assuming PushAPI.Profile is the type you want to use for userPushSDKInstance +type UpdateUserProfileParams = { + userPushSDKInstance: PushAPI; + name: string | null; + desc: string | null; + picture: string | null; +}; + +export const updateUserProfileInfo = async ({ + userPushSDKInstance, + name, + desc, + picture, +}: UpdateUserProfileParams): Promise => { + const res = await userPushSDKInstance.profile.update({ + name: name as string, + desc: desc ? desc : '', + picture: picture as string, + }); + return res; +}; diff --git a/src/queries/types/user.ts b/src/queries/types/user.ts index 9cf9e280b6..4dedd53062 100644 --- a/src/queries/types/user.ts +++ b/src/queries/types/user.ts @@ -37,5 +37,13 @@ export type UserProfileInfoResponse = { name: string | null; desc: string | null; picture: string | null; - profileVerificationProof: string | null; + profileVerificationProof?: string | null; +}; + +export type UpdateProfileInfoResponse = { + name: string | null; + desc: string | null; + picture: string | null; + profileVerificationProof?: string | null; + blockedUserList?: []; }; From 2d510fd3b7b8edd45835136ea39d5e35e33cab2b Mon Sep 17 00:00:00 2001 From: corlard3y Date: Wed, 13 Nov 2024 10:34:12 +0100 Subject: [PATCH 09/37] update verify email --- .../UserProfileSettings/AddEmail.tsx | 126 +++++++++++++++++- .../UserProfileSettings.tsx | 41 ++---- .../UserProfileSocialSettings.tsx | 36 ++++- src/components/userSettings/UserSettings.tsx | 39 +++++- src/queries/hooks/user/index.ts | 3 + src/queries/hooks/user/useGetSocialsStatus.ts | 19 +++ .../user/useSendEmailVerificationCode.ts | 9 ++ .../user/useVerifyEmailVerificationCode.ts | 9 ++ .../user/getSocialsStatusModelCreator.ts | 3 + src/queries/models/user/index.ts | 3 + .../sendEmailVerificationCodeModelCreator.ts | 5 + ...verifyEmailVerificationCodeModelCreator.ts | 5 + src/queries/queryKeys.ts | 3 + .../services/user/getUserSocialsStatus.ts | 13 ++ src/queries/services/user/index.ts | 3 + .../user/sendEmailVerificationCode.ts | 24 ++++ .../user/verifyEmailVerificationCode.ts | 24 ++++ src/queries/types/user.ts | 17 +++ 18 files changed, 339 insertions(+), 43 deletions(-) create mode 100644 src/queries/hooks/user/useGetSocialsStatus.ts create mode 100644 src/queries/hooks/user/useSendEmailVerificationCode.ts create mode 100644 src/queries/hooks/user/useVerifyEmailVerificationCode.ts create mode 100644 src/queries/models/user/getSocialsStatusModelCreator.ts create mode 100644 src/queries/models/user/sendEmailVerificationCodeModelCreator.ts create mode 100644 src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts create mode 100644 src/queries/services/user/getUserSocialsStatus.ts create mode 100644 src/queries/services/user/sendEmailVerificationCode.ts create mode 100644 src/queries/services/user/verifyEmailVerificationCode.ts diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index adef8a2fc4..eb5bb30516 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -2,17 +2,45 @@ import { FC, useEffect, useState } from 'react'; import { css } from 'styled-components'; import { useFormik } from 'formik'; import * as Yup from 'yup'; +import { useSelector } from 'react-redux'; import { ModalResponse } from 'common'; +import { useAccount } from 'hooks'; +import { walletToCAIP10 } from 'helpers/w2w'; +import { useAppContext } from 'contexts/AppContext'; +import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; +import { useSendEmailVerificationCode, useVerifyEmailVerificationCode } from 'queries'; import { Box, Button, Modal, Text, TextInput } from 'blocks'; -export type AddEmailProps = { modalControl: ModalResponse }; +type AddEmailProps = { + modalControl: ModalResponse; + refetchSocialHandleStatus: () => void; + setErrorMessage: (errorMessage: string) => void; + setSuccessMessage: (successMessage: string) => void; +}; -const AddEmail: FC = ({ modalControl }) => { +const AddEmail: FC = ({ + modalControl, + refetchSocialHandleStatus, + setErrorMessage, + setSuccessMessage, +}) => { const { isOpen, onClose } = modalControl; + const { account, isWalletConnected, wallet } = useAccount(); + const { handleConnectWalletAndEnableProfile } = useAppContext(); + + const { userPushSDKInstance } = useSelector((state: any) => { + return state.user; + }); + + // Getting user Id by wallet address + const caip10WalletAddress = walletToCAIP10({ account }); const [step, setStep] = useState(1); // Step 1 for email input, Step 2 for verification + const { mutate: sendVerification } = useSendEmailVerificationCode(); + const { mutate: verifyVerification } = useVerifyEmailVerificationCode(); + // Email validation schema for Step 1 const emailValidationSchema = Yup.object({ email: Yup.string().email('Invalid email address').required('Required'), @@ -23,7 +51,7 @@ const AddEmail: FC = ({ modalControl }) => { initialValues: { email: '' }, validationSchema: emailValidationSchema, onSubmit: () => { - setStep(2); + handleSendVerificationCode(); }, }); @@ -36,9 +64,8 @@ const AddEmail: FC = ({ modalControl }) => { const codeFormik = useFormik({ initialValues: { code: '' }, validationSchema: codeValidationSchema, - onSubmit: (values) => { - console.log('Verification code submitted:', values.code); - // Add your logic here for what happens after the verification code is submitted + onSubmit: () => { + handleVerificationCode(); }, }); @@ -49,6 +76,93 @@ const AddEmail: FC = ({ modalControl }) => { } }, [codeFormik.values.code, codeFormik.errors.code]); + const handleSendVerificationCode = async () => { + const sdkInstance = !userPushSDKInstance?.signer + ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined + : userPushSDKInstance; + + const data = { + wallet: caip10WalletAddress, + value: emailFormik.values.email, + valueType: 'email', + }; + + // generate verification proof + const verificationProof = await generateVerificationProof(data, sdkInstance); + + //if verification proof is null, unlock push profile update to update userPUSHSDKInstance + if (verificationProof === null || verificationProof === undefined) { + if (isWalletConnected && userPushSDKInstance && userPushSDKInstance.readmode()) { + console.log('open modal'); + // setIsAuthModalVisible(true); + } + } + + sendVerification( + { + caipAddress: caip10WalletAddress as string, + verificationProof: verificationProof as string, + value: emailFormik.values.email, + }, + { + onSuccess: (response: any) => { + if (response?.success) { + console.log(response); + setStep(2); + } + }, + onError: (error: Error) => { + console.log('Error sending code', error); + }, + } + ); + }; + + const handleVerificationCode = async () => { + const sdkInstance = !userPushSDKInstance?.signer + ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined + : userPushSDKInstance; + + const data = { + wallet: caip10WalletAddress, + value: emailFormik.values.email, + valueType: 'email', + verificationCode: codeFormik.values.code, + }; + + // generate verification proof + const verificationProof = await generateVerificationProof(data, sdkInstance); + + //if verification proof is null, unlock push profile update to update userPUSHSDKInstance + if (verificationProof === null || verificationProof === undefined) { + if (isWalletConnected && userPushSDKInstance && userPushSDKInstance.readmode()) { + console.log('open modal'); + // setIsAuthModalVisible(true); + } + } + + verifyVerification( + { + caipAddress: caip10WalletAddress as string, + verificationCode: codeFormik.values.code, + value: emailFormik.values.email, + }, + { + onSuccess: (response: any) => { + if (response?.success) { + onClose(); + refetchSocialHandleStatus(); + setSuccessMessage('Email Account was linked successfully'); + } + }, + onError: (error: Error) => { + console.log('Error verifying code', error); + setErrorMessage('Error verifying code'); + }, + } + ); + }; + return ( { +type UserProfileSettingsType = { + errorMessage: string; + setErrorMessage: (errorMessage: string) => void; + successMessage: string; + setSuccessMessage: (successMessage: string) => void; +}; + +const UserProfileSettings: FC = ({ setErrorMessage, setSuccessMessage }) => { const modalControl = useDisclosure(); const { wallet } = useAccount(); const { handleConnectWalletAndEnableProfile } = useAppContext(); const { data: userProfileInfo, refetch: refetchUserInfo } = useGetUserProfileInfo(); const { mutate: updateUserInfo, isPending: updatingInfo } = useUpdateUserProfileInfo(); - const [errorMessage, setErrorMessage] = useState(''); - const [successInfo, setSuccessInfo] = useState(''); - const { userPushSDKInstance } = useSelector((state: any) => { return state.user; }); @@ -61,12 +65,9 @@ const UserProfileSettings: FC = () => { }, { onSuccess: (response: any) => { - setSuccessInfo('User Details Updated Successfully'); + console.log(response); + setSuccessMessage('User Details Updated Successfully'); refetchUserInfo(); - - setTimeout(() => { - setSuccessInfo(''); - }, 3000); }, onError: (error: Error) => { console.log('Error updating user profile info', error); @@ -186,24 +187,6 @@ const UserProfileSettings: FC = () => { > Save Changes - - {successInfo && ( - - - - )} - - {errorMessage && ( - - - - )} ); diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index 9f4e138eb4..22ad999460 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -3,6 +3,9 @@ import { FC } from 'react'; // Helpers import { useDisclosure } from 'common'; +import { useAccount } from 'hooks'; +import { useGetSocialsStatus } from 'queries'; +import { walletToCAIP10 } from 'helpers/w2w'; //Components import { @@ -18,10 +21,23 @@ import { TelegramProfile, Text, } from 'blocks'; -import { AddEmail } from './addEmail'; +import { AddEmail } from './AddEmail'; -const UserProfileSocialSettings: FC = () => { +type UserProfileSocialSettingsType = { + errorMessage?: string; + setErrorMessage: (errorMessage: string) => void; + successMessage?: string; + setSuccessMessage: (successMessage: string) => void; +}; + +const UserProfileSocialSettings: FC = ({ setErrorMessage, setSuccessMessage }) => { const modalControl = useDisclosure(); + const { account } = useAccount(); + + // Getting user Id by wallet address + const channelAddress = walletToCAIP10({ account }); + + const { data: socialHandleStatus, refetch: refetchSocialHandleStatus } = useGetSocialsStatus(channelAddress); const itemList = [ { @@ -29,16 +45,19 @@ const UserProfileSocialSettings: FC = () => { itemTitle: 'Email', itemDescription: 'Receive notifications in your email inbox', onClick: () => modalControl.open(), + userStatus: socialHandleStatus?.email || null, }, { icon: () => , itemTitle: 'Telegram', itemDescription: 'Receive notifications as Telegram messages', + userStatus: socialHandleStatus?.discord_username || null, }, { icon: () => , itemTitle: 'Discord', itemDescription: 'Receive notifications as Discord messages', + userStatus: socialHandleStatus?.telegram_username || null, }, ]; return ( @@ -96,7 +115,7 @@ const UserProfileSocialSettings: FC = () => { - {item.itemTitle != 'Email' ? ( + {item.userStatus === null ? ( )} @@ -129,7 +148,14 @@ const UserProfileSocialSettings: FC = () => { ))} - {modalControl.isOpen && } + {modalControl.isOpen && ( + + )} ); }; diff --git a/src/components/userSettings/UserSettings.tsx b/src/components/userSettings/UserSettings.tsx index 72a43512b1..3810217c92 100644 --- a/src/components/userSettings/UserSettings.tsx +++ b/src/components/userSettings/UserSettings.tsx @@ -18,7 +18,7 @@ import UserProfileSettings from 'components/UserProfileSettings/UserProfileSetti import { device } from 'config/Globals'; import ChannelListSettings from 'components/channel/ChannelListSettings'; import PushSnapSettings from 'components/PushSnap/PushSnapSettings'; -import { Box } from 'blocks'; +import { Alert, Box } from 'blocks'; import UserProfileSocialSettings from 'components/UserProfileSettings/UserProfileSocialSettings'; interface ChannelListItem { @@ -40,6 +40,10 @@ function UserSettings() { const [channelList, setChannelList] = useState([]); const [isLoading, setIsLoading] = useState(true); + // for alerts + const [errorMessage, setErrorMessage] = useState(''); + const [successMessage, setSuccessMessage] = useState(''); + const navigate = useNavigate(); const dispatch = useDispatch(); @@ -134,13 +138,37 @@ function UserSettings() { + {successMessage && ( + + + + )} + + {errorMessage && ( + + + + )} {selectOptions[selectedOption]?.title && ( {selectOptions[selectedOption]?.title} )} - {selectedOption === 0 && } + {selectedOption === 0 && ( + + )} {selectedOption === 1 && } {selectedOption === 2 && } @@ -149,7 +177,12 @@ function UserSettings() { {selectedOption == 0 && ( - + )} diff --git a/src/queries/hooks/user/index.ts b/src/queries/hooks/user/index.ts index 9e2ac9063c..6568e47bfb 100644 --- a/src/queries/hooks/user/index.ts +++ b/src/queries/hooks/user/index.ts @@ -4,3 +4,6 @@ export * from './useUnsubscribeChannel'; export * from './useUpdateNotificationSettings'; export * from './useGetUserProfileInfo'; export * from './useUpdateUserProfileInfo'; +export * from './useSendEmailVerificationCode'; +export * from './useVerifyEmailVerificationCode'; +export * from './useGetSocialsStatus'; diff --git a/src/queries/hooks/user/useGetSocialsStatus.ts b/src/queries/hooks/user/useGetSocialsStatus.ts new file mode 100644 index 0000000000..8783fc88a0 --- /dev/null +++ b/src/queries/hooks/user/useGetSocialsStatus.ts @@ -0,0 +1,19 @@ +import { useQuery, UseQueryOptions } from '@tanstack/react-query'; + +import { userSocialStatus } from '../../queryKeys'; +import { getUserSocialsStatus } from '../../services'; + +//Types +import { UserSocialStatusResponse } from 'queries/types'; + +export const useGetSocialsStatus = ( + channelAddress: string, + config?: Partial> +) => { + const query = useQuery({ + queryKey: [userSocialStatus, channelAddress], + queryFn: () => getUserSocialsStatus({ channelAddress }), + ...config, + }); + return query; +}; diff --git a/src/queries/hooks/user/useSendEmailVerificationCode.ts b/src/queries/hooks/user/useSendEmailVerificationCode.ts new file mode 100644 index 0000000000..f2c5164bbb --- /dev/null +++ b/src/queries/hooks/user/useSendEmailVerificationCode.ts @@ -0,0 +1,9 @@ +import { useMutation } from '@tanstack/react-query'; +import { sendVerificationCode } from 'queries/queryKeys'; +import { sendEmailVerificationCode } from 'queries/services'; + +export const useSendEmailVerificationCode = () => + useMutation({ + mutationKey: [sendVerificationCode], + mutationFn: sendEmailVerificationCode, + }); diff --git a/src/queries/hooks/user/useVerifyEmailVerificationCode.ts b/src/queries/hooks/user/useVerifyEmailVerificationCode.ts new file mode 100644 index 0000000000..b3f0b97e15 --- /dev/null +++ b/src/queries/hooks/user/useVerifyEmailVerificationCode.ts @@ -0,0 +1,9 @@ +import { useMutation } from '@tanstack/react-query'; +import { verifyVerificationCode } from 'queries/queryKeys'; +import { verifyEmailVerificationCode } from 'queries/services'; + +export const useVerifyEmailVerificationCode = () => + useMutation({ + mutationKey: [verifyVerificationCode], + mutationFn: verifyEmailVerificationCode, + }); diff --git a/src/queries/models/user/getSocialsStatusModelCreator.ts b/src/queries/models/user/getSocialsStatusModelCreator.ts new file mode 100644 index 0000000000..9c4806ce53 --- /dev/null +++ b/src/queries/models/user/getSocialsStatusModelCreator.ts @@ -0,0 +1,3 @@ +import { UserSocialStatusResponse } from 'queries/types'; + +export const getSocialsStatusModelCreator = (response: UserSocialStatusResponse): UserSocialStatusResponse => response; diff --git a/src/queries/models/user/index.ts b/src/queries/models/user/index.ts index 6c4d9b4ada..6f535462c6 100644 --- a/src/queries/models/user/index.ts +++ b/src/queries/models/user/index.ts @@ -1,2 +1,5 @@ export * from './getUserSubscriptionsModelCreator'; export * from './getUserProfileInfoModelCreator'; +export * from './sendEmailVerificationCodeModelCreator'; +export * from './verifyEmailVerificationCodeModelCreator'; +export * from './getSocialsStatusModelCreator'; diff --git a/src/queries/models/user/sendEmailVerificationCodeModelCreator.ts b/src/queries/models/user/sendEmailVerificationCodeModelCreator.ts new file mode 100644 index 0000000000..c83b2c8a85 --- /dev/null +++ b/src/queries/models/user/sendEmailVerificationCodeModelCreator.ts @@ -0,0 +1,5 @@ +import { SendEmailVerificationResponse } from 'queries/types'; + +export const sendEmailVerificationCodeModelCreator = ( + response: SendEmailVerificationResponse +): SendEmailVerificationResponse => response; diff --git a/src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts b/src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts new file mode 100644 index 0000000000..41afc4c476 --- /dev/null +++ b/src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts @@ -0,0 +1,5 @@ +import { VerifyEmailVerificationResponse } from 'queries/types'; + +export const verifyEmailVerificationCodeModelCreator = ( + response: VerifyEmailVerificationResponse +): VerifyEmailVerificationResponse => response; diff --git a/src/queries/queryKeys.ts b/src/queries/queryKeys.ts index f94ff0e50e..0c975f2fb4 100644 --- a/src/queries/queryKeys.ts +++ b/src/queries/queryKeys.ts @@ -34,6 +34,8 @@ export const rewardsLeaderboard = 'rewardsLeaderboard'; export const sendNotification = 'sendNotification'; export const sentMessageCount = 'sentMessageCount'; export const sentNotificationCount = 'sentNotificationCount'; +export const sendVerificationCode = 'sendVerificationCode'; +export const verifyVerificationCode = 'verifyVerificationCode'; export const subscribe = 'subscribe'; export const subscriberCount = 'subscriberCount'; export const trendingChannels = 'trendingChannels'; @@ -45,6 +47,7 @@ export const userProfileInfo = 'userProfileInfo'; export const updateUserProfileDetails = 'updateUserProfileDetails'; export const userRewardsDetails = 'userRewardsDetails'; export const UserRewardsDetails = 'userRewardsDetails'; +export const userSocialStatus = 'userSocialStatus'; export const userSubscription = 'userSubscription'; export const userTwitterDetails = 'userTwitterDetails'; export const verifyAliasChain = 'verifyAliasChain'; diff --git a/src/queries/services/user/getUserSocialsStatus.ts b/src/queries/services/user/getUserSocialsStatus.ts new file mode 100644 index 0000000000..e0bb24c48b --- /dev/null +++ b/src/queries/services/user/getUserSocialsStatus.ts @@ -0,0 +1,13 @@ +import axios from 'axios'; +import { getSocialsStatusModelCreator } from 'queries/models'; + +type SocialStatusType = { + channelAddress: string; +}; + +export const getUserSocialsStatus = (payload: SocialStatusType) => { + return axios({ + method: 'GET', + url: `http://localhost:7575/apis/v1/users/${payload?.channelAddress}`, + }).then((response) => getSocialsStatusModelCreator(response.data)); +}; diff --git a/src/queries/services/user/index.ts b/src/queries/services/user/index.ts index 2ddc84a565..6531f2e733 100644 --- a/src/queries/services/user/index.ts +++ b/src/queries/services/user/index.ts @@ -4,3 +4,6 @@ export * from './unsubscribeChannel'; export * from './updateNotificationSettings'; export * from './getUserProfileInfo'; export * from './updateUserProfileInfo'; +export * from './sendEmailVerificationCode'; +export * from './verifyEmailVerificationCode'; +export * from './getUserSocialsStatus'; diff --git a/src/queries/services/user/sendEmailVerificationCode.ts b/src/queries/services/user/sendEmailVerificationCode.ts new file mode 100644 index 0000000000..41a013c397 --- /dev/null +++ b/src/queries/services/user/sendEmailVerificationCode.ts @@ -0,0 +1,24 @@ +import axios from 'axios'; + +import { sendEmailVerificationCodeModelCreator } from 'queries/models'; + +type sendEmailVerificationCodeType = { + caipAddress: string; + value: string; + verificationProof: string; +}; + +export const sendEmailVerificationCode = async (payload: sendEmailVerificationCodeType) => { + const response = await axios({ + method: 'POST', + url: `http://localhost:7575/apis/v1/users/verify/init/${payload?.caipAddress}/email`, + data: { + value: payload?.value, + verificationProof: payload?.verificationProof, + }, + headers: { + 'Content-Type': 'application/json', + }, + }); + return sendEmailVerificationCodeModelCreator(response.data); +}; diff --git a/src/queries/services/user/verifyEmailVerificationCode.ts b/src/queries/services/user/verifyEmailVerificationCode.ts new file mode 100644 index 0000000000..a5bbcad7d2 --- /dev/null +++ b/src/queries/services/user/verifyEmailVerificationCode.ts @@ -0,0 +1,24 @@ +import axios from 'axios'; + +import { verifyEmailVerificationCodeModelCreator } from 'queries/models'; + +type verifyEmailVerificationCodeType = { + caipAddress: string; + value: string; + verificationCode: string; +}; + +export const verifyEmailVerificationCode = async (payload: verifyEmailVerificationCodeType) => { + const response = await axios({ + method: 'POST', + url: `http://localhost:7575/apis/v1/users/verify/${payload?.caipAddress}/email`, + data: { + value: payload?.value, + verificationCode: payload?.verificationCode, + }, + headers: { + 'Content-Type': 'application/json', + }, + }); + return verifyEmailVerificationCodeModelCreator(response.data); +}; diff --git a/src/queries/types/user.ts b/src/queries/types/user.ts index 4dedd53062..ba02740202 100644 --- a/src/queries/types/user.ts +++ b/src/queries/types/user.ts @@ -47,3 +47,20 @@ export type UpdateProfileInfoResponse = { profileVerificationProof?: string | null; blockedUserList?: []; }; + +export type SendEmailVerificationResponse = { + email: string | null; + success: boolean; + VerificationCode?: string | null; +}; + +export type VerifyEmailVerificationResponse = { + message: string; + success: boolean; +}; + +export type UserSocialStatusResponse = { + email: string | null; + telegram_username: string | null; + discord_username: string | null; +}; From 6a68e0974051fb00e38a60b451b5e4c7709434fc Mon Sep 17 00:00:00 2001 From: corlard3y Date: Wed, 13 Nov 2024 23:43:43 +0100 Subject: [PATCH 10/37] add telegram and discord modals --- .../illustrations/components/Telegram.tsx | 36 + src/blocks/illustrations/index.ts | 2 + src/common/components/CopyButton.tsx | 5 +- .../UserProfileSettings/AddDiscord.tsx | 196 ++ .../UserProfileSettings/AddEmail.tsx | 70 +- .../UserProfileSettings/AddTelegram.tsx | 190 ++ .../UserProfileSocialSettings.tsx | 24 + yarn.lock | 2348 ++++++++--------- 8 files changed, 1582 insertions(+), 1289 deletions(-) create mode 100644 src/blocks/illustrations/components/Telegram.tsx create mode 100644 src/components/UserProfileSettings/AddDiscord.tsx create mode 100644 src/components/UserProfileSettings/AddTelegram.tsx diff --git a/src/blocks/illustrations/components/Telegram.tsx b/src/blocks/illustrations/components/Telegram.tsx new file mode 100644 index 0000000000..c7493a9c89 --- /dev/null +++ b/src/blocks/illustrations/components/Telegram.tsx @@ -0,0 +1,36 @@ +import { FC } from 'react'; +import { IllustrationWrapper } from '../IllustrationWrapper'; +import { IllustrationProps } from '../Illustrations.types'; + +const Telegram: FC = (allProps) => { + const { svgProps: props, ...restProps } = allProps; + return ( + + + + + } + {...restProps} + /> + ); +}; + +export default Telegram; diff --git a/src/blocks/illustrations/index.ts b/src/blocks/illustrations/index.ts index 1ff4806b18..5c22e31c65 100644 --- a/src/blocks/illustrations/index.ts +++ b/src/blocks/illustrations/index.ts @@ -105,6 +105,8 @@ export { default as StakePushYellowMultiplier } from './components/StakePushYell export { default as SubscribePoints } from './components/SubscribePoints'; +export { default as Telegram } from './components/Telegram'; + export { default as TelegramProfile } from './components/TelegramProfile'; export { default as TripleRewardsCoin } from './components/TripleRewardsCoin'; diff --git a/src/common/components/CopyButton.tsx b/src/common/components/CopyButton.tsx index 54b06d57f5..89b8321533 100644 --- a/src/common/components/CopyButton.tsx +++ b/src/common/components/CopyButton.tsx @@ -5,9 +5,10 @@ import { FC, useState } from 'react'; type CopyButtonProps = { tooltipTitle: string; content: string; + size?: number; }; -const CopyButton: FC = ({ tooltipTitle, content }) => { +const CopyButton: FC = ({ tooltipTitle, content, size }) => { const [hover, setHover] = useState(false); return ( @@ -20,7 +21,7 @@ const CopyButton: FC = ({ tooltipTitle, content }) => { > diff --git a/src/components/UserProfileSettings/AddDiscord.tsx b/src/components/UserProfileSettings/AddDiscord.tsx new file mode 100644 index 0000000000..9a91c42bdd --- /dev/null +++ b/src/components/UserProfileSettings/AddDiscord.tsx @@ -0,0 +1,196 @@ +import { FC, useState } from 'react'; + +import { Box, Button, Discord, Link, Modal, Text, TextInput } from 'blocks'; +import { CopyButton, ModalResponse } from 'common'; + +type AddDiscordProps = { + modalControl: ModalResponse; + refetchSocialHandleStatus: () => void; + setErrorMessage: (errorMessage: string) => void; + setSuccessMessage: (successMessage: string) => void; +}; + +enum Steps { + EnterDiscord = 1, + VerifyId = 2, +} + +const AddDiscord: FC = ({ + modalControl, + // refetchSocialHandleStatus, + // setErrorMessage, + // setSuccessMessage, +}) => { + const { isOpen, onClose } = modalControl; + const [step, setStep] = useState(2); + + return ( + setStep(step - 1), + })} + acceptButtonProps={null} + cancelButtonProps={null} + > + {step === Steps.EnterDiscord && ( + + + + + + + Enter your Discord ID + + + + Follow the steps to link your Discord to Push and receive notifications + + + + console.log('')} + // error={emailFormik.touched.email && Boolean(emailFormik.errors.email)} + // errorMessage={emailFormik.touched.email ? emailFormik.errors.email : ''} + /> + + + + + + + )} + + {step === Steps.VerifyId && ( + + + + + + + Connect your Discord + + + + Follow the steps to link your Discord to Push and receive notifications + + + + + Step 1: Copy the verification code + + + + + /verify 0x123...45678 665889 + + + + + + + + + Step 2: Visit the link and paste the code + + + + + discordapp.com/users/pushlinkbot + + + + + + Please ensure you’re logged into your Discord account. Click on Complete Verification below once complete. + + + )} + + ); +}; + +export default AddDiscord; diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index eb5bb30516..17266f4f88 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -1,4 +1,4 @@ -import { FC, useEffect, useState } from 'react'; +import { FC, useCallback, useEffect, useState } from 'react'; import { css } from 'styled-components'; import { useFormik } from 'formik'; import * as Yup from 'yup'; @@ -20,6 +20,11 @@ type AddEmailProps = { setSuccessMessage: (successMessage: string) => void; }; +enum Steps { + EnterEmail = 1, + VerifyCode = 2, +} + const AddEmail: FC = ({ modalControl, refetchSocialHandleStatus, @@ -27,26 +32,26 @@ const AddEmail: FC = ({ setSuccessMessage, }) => { const { isOpen, onClose } = modalControl; - const { account, isWalletConnected, wallet } = useAccount(); + const { account, wallet } = useAccount(); const { handleConnectWalletAndEnableProfile } = useAppContext(); + const caip10WalletAddress = walletToCAIP10({ account }); + const [step, setStep] = useState(1); const { userPushSDKInstance } = useSelector((state: any) => { return state.user; }); - // Getting user Id by wallet address - const caip10WalletAddress = walletToCAIP10({ account }); - const [step, setStep] = useState(1); // Step 1 for email input, Step 2 for verification - const { mutate: sendVerification } = useSendEmailVerificationCode(); const { mutate: verifyVerification } = useVerifyEmailVerificationCode(); - // Email validation schema for Step 1 const emailValidationSchema = Yup.object({ email: Yup.string().email('Invalid email address').required('Required'), }); - // Formik setup for the email form in Step 1 + const codeValidationSchema = Yup.object({ + code: Yup.string().length(6, 'Code should be 6 digits').required('Required'), + }); + const emailFormik = useFormik({ initialValues: { email: '' }, validationSchema: emailValidationSchema, @@ -55,12 +60,6 @@ const AddEmail: FC = ({ }, }); - // Verification code validation schema for Step 2 - const codeValidationSchema = Yup.object({ - code: Yup.string().length(6, 'Code should be 6 digits').required('Required'), - }); - - // Formik setup for the verification code form in Step 2 const codeFormik = useFormik({ initialValues: { code: '' }, validationSchema: codeValidationSchema, @@ -69,6 +68,10 @@ const AddEmail: FC = ({ }, }); + const getSDKInstance = useCallback(async () => { + return userPushSDKInstance?.signer ? userPushSDKInstance : await handleConnectWalletAndEnableProfile({ wallet }); + }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); + // Watch for code length and submit automatically if it reaches 6 digits useEffect(() => { if (codeFormik.values.code.length === 6 && !codeFormik.errors.code) { @@ -77,26 +80,16 @@ const AddEmail: FC = ({ }, [codeFormik.values.code, codeFormik.errors.code]); const handleSendVerificationCode = async () => { - const sdkInstance = !userPushSDKInstance?.signer - ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined - : userPushSDKInstance; - + const sdkInstance = await getSDKInstance(); const data = { wallet: caip10WalletAddress, value: emailFormik.values.email, valueType: 'email', }; - // generate verification proof const verificationProof = await generateVerificationProof(data, sdkInstance); - //if verification proof is null, unlock push profile update to update userPUSHSDKInstance - if (verificationProof === null || verificationProof === undefined) { - if (isWalletConnected && userPushSDKInstance && userPushSDKInstance.readmode()) { - console.log('open modal'); - // setIsAuthModalVisible(true); - } - } + if (!verificationProof) return; sendVerification( { @@ -108,7 +101,7 @@ const AddEmail: FC = ({ onSuccess: (response: any) => { if (response?.success) { console.log(response); - setStep(2); + setStep(Steps.VerifyCode); } }, onError: (error: Error) => { @@ -119,10 +112,7 @@ const AddEmail: FC = ({ }; const handleVerificationCode = async () => { - const sdkInstance = !userPushSDKInstance?.signer - ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined - : userPushSDKInstance; - + const sdkInstance = await getSDKInstance(); const data = { wallet: caip10WalletAddress, value: emailFormik.values.email, @@ -130,16 +120,9 @@ const AddEmail: FC = ({ verificationCode: codeFormik.values.code, }; - // generate verification proof const verificationProof = await generateVerificationProof(data, sdkInstance); - //if verification proof is null, unlock push profile update to update userPUSHSDKInstance - if (verificationProof === null || verificationProof === undefined) { - if (isWalletConnected && userPushSDKInstance && userPushSDKInstance.readmode()) { - console.log('open modal'); - // setIsAuthModalVisible(true); - } - } + if (!verificationProof) return; verifyVerification( { @@ -163,6 +146,10 @@ const AddEmail: FC = ({ ); }; + const resendVerificationCode = () => { + handleSendVerificationCode(); + }; + return ( = ({ acceptButtonProps={null} cancelButtonProps={null} > - {step == 1 && ( + {step === Steps.EnterEmail && ( = ({ )} - {step == 2 && ( + {step === Steps.VerifyCode && ( = ({ Didn't receive a code? void; + setErrorMessage: (errorMessage: string) => void; + setSuccessMessage: (successMessage: string) => void; +}; + +enum Steps { + EnterTelegram = 1, + VerifyId = 2, +} + +const AddTelegram: FC = ({ + modalControl, + // refetchSocialHandleStatus, + // setErrorMessage, + // setSuccessMessage, +}) => { + const { isOpen, onClose } = modalControl; + const [step, setStep] = useState(2); + + return ( + setStep(step - 1), + })} + acceptButtonProps={null} + cancelButtonProps={null} + > + {step === Steps.EnterTelegram && ( + + + + + + + Enter your Telegram ID + + + + Proceed to the next step after entering your Telegram chat ID + + + + console.log('')} + // error={emailFormik.touched.email && Boolean(emailFormik.errors.email)} + // errorMessage={emailFormik.touched.email ? emailFormik.errors.email : ''} + /> + + + + + + + )} + + {step === Steps.VerifyId && ( + + + + + + + Connect your Telegram + + + + Follow the steps to link your Telegram to Push and receive notifications + + + + + Step 1: Copy the verification code + + + + + /verify 0x123...45678 665889 + + + + + + + + + Step 2: Visit the link and paste the code + + + + + telegram.me/pushlinkbot + + + + + + Please ensure you’re logged into your Telegram account. Click on Complete Verification below once complete. + + + )} + + ); +}; + +export default AddTelegram; diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index 22ad999460..f1c3d3bd42 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -22,6 +22,8 @@ import { Text, } from 'blocks'; import { AddEmail } from './AddEmail'; +import AddTelegram from './AddTelegram'; +import AddDiscord from './AddDiscord'; type UserProfileSocialSettingsType = { errorMessage?: string; @@ -32,6 +34,8 @@ type UserProfileSocialSettingsType = { const UserProfileSocialSettings: FC = ({ setErrorMessage, setSuccessMessage }) => { const modalControl = useDisclosure(); + const telegramModalControl = useDisclosure(); + const discordModalControl = useDisclosure(); const { account } = useAccount(); // Getting user Id by wallet address @@ -51,12 +55,14 @@ const UserProfileSocialSettings: FC = ({ setError icon: () => , itemTitle: 'Telegram', itemDescription: 'Receive notifications as Telegram messages', + onClick: () => telegramModalControl.open(), userStatus: socialHandleStatus?.discord_username || null, }, { icon: () => , itemTitle: 'Discord', itemDescription: 'Receive notifications as Discord messages', + onClick: () => discordModalControl.open(), userStatus: socialHandleStatus?.telegram_username || null, }, ]; @@ -156,6 +162,24 @@ const UserProfileSocialSettings: FC = ({ setError setSuccessMessage={setSuccessMessage} /> )} + + {telegramModalControl.isOpen && ( + + )} + + {discordModalControl.isOpen && ( + + )} ); }; diff --git a/yarn.lock b/yarn.lock index 85ec33ec3c..96543abe1c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -98,284 +98,194 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/code-frame@npm:7.25.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: - "@babel/highlight": "npm:^7.25.7" - picocolors: "npm:^1.0.0" - checksum: 10/000fb8299fb35b6217d4f6c6580dcc1fa2f6c0f82d0a54b8a029966f633a8b19b490a7a906b56a94e9d8bee91c3bc44c74c44c33fb0abaa588202f6280186291 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" - dependencies: - "@babel/highlight": "npm:^7.24.7" + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" picocolors: "npm:^1.0.0" - checksum: 10/4812e94885ba7e3213d49583a155fdffb05292330f0a9b2c41b49288da70cf3c746a3fda0bf1074041a6d741c33f8d7be24be5e96f41ef77395eeddc5c9ff624 + checksum: 10/db2c2122af79d31ca916755331bb4bac96feb2b334cdaca5097a6b467fdd41963b89b14b6836a14f083de7ff887fc78fa1b3c10b14e743d33e12dbfe5ee3d223 languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: 10/d37a8936cc355a9ca3050102e03d179bdae26bd2e5c99a977637376c192b23637a039795f153c849437a086727628c9860e2c6af92d7151396e2362c09176337 +"@babel/compat-data@npm:^7.25.9": + version: 7.26.2 + resolution: "@babel/compat-data@npm:7.26.2" + checksum: 10/ed9eed6b62ce803ef4a320b1dac76b0302abbb29c49dddf96f3e3207d9717eb34e299a8651bb1582e9c3346ead74b6d595ffced5b3dae718afa08b18741f8402 languageName: node linkType: hard "@babel/core@npm:^7.21.3, @babel/core@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" + "@babel/code-frame": "npm:^7.26.0" + "@babel/generator": "npm:^7.26.0" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.0" + "@babel/parser": "npm:^7.26.0" + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/0d6ec10ff430df66f654c089d6f7ef1d9bed0c318ac257ad5f0dfa0caa45666011828ae75f998bcdb279763e892b091b2925d0bc483299e61649d2c7a2245e33 + checksum: 10/65767bfdb1f02e80d3af4f138066670ef8fdd12293de85ef151758a901c191c797e86d2e99b11c4cdfca33c72385ecaf38bbd7fa692791ec44c77763496b9b93 languageName: node linkType: hard -"@babel/generator@npm:^7.24.5, @babel/generator@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/generator@npm:7.25.7" +"@babel/generator@npm:^7.24.5, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/generator@npm:7.26.2" dependencies: - "@babel/types": "npm:^7.25.7" + "@babel/parser": "npm:^7.26.2" + "@babel/types": "npm:^7.26.0" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10/01542829621388077fa8a7464970c1db0f748f1482968dddf5332926afe4003f953cbe08e3bbbb0a335b11eba0126c9a81779bd1c5baed681a9ccec4ae63b217 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/generator@npm:7.25.6" - dependencies: - "@babel/types": "npm:^7.25.6" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10/541e4fbb6ea7806f44232d70f25bf09dee9a57fe43d559e375536870ca5261ebb4647fec3af40dcbb3325ea2a49aff040e12a4e6f88609eaa88f10c4e27e31f8 + checksum: 10/71ace82b5b07a554846a003624bfab93275ccf73cdb9f1a37a4c1094bf9dc94bb677c67e8b8c939dbd6c5f0eda2e8f268aa2b0d9c3b9511072565660e717e045 languageName: node linkType: hard "@babel/helper-annotate-as-pure@npm:^7.0.0, @babel/helper-annotate-as-pure@npm:^7.22.5": - version: 7.24.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/a9017bfc1c4e9f2225b967fbf818004703de7cf29686468b54002ffe8d6b56e0808afa20d636819fcf3a34b89ba72f52c11bdf1d69f303928ee10d92752cad95 + "@babel/types": "npm:^7.25.9" + checksum: 10/41edda10df1ae106a9b4fe617bf7c6df77db992992afd46192534f5cff29f9e49a303231733782dd65c5f9409714a529f215325569f14282046e9d3b7a1ffb6c languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" + "@babel/compat-data": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10/eccb2d75923d2d4d596f9ff64716e8664047c4192f1b44c7d5c07701d4a3498ac2587a72ddae1046e65a501bc630eb7df4557958b08ec2dcf5b4a264a052f111 + checksum: 10/8053fbfc21e8297ab55c8e7f9f119e4809fa7e505268691e1bedc2cf5e7a5a7de8c60ad13da2515378621b7601c42e101d2d679904da395fa3806a1edef6b92e languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5": - version: 7.25.7 - resolution: "@babel/helper-module-imports@npm:7.25.7" +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/94556712c27058ea35a1a39e21a3a9f067cd699405b64333d7d92b2b3d2f24d6f0ffa51aedba0b908e320acb1854e70d296259622e636fb021eeae9a6d996f01 + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e090be5dee94dda6cd769972231b21ddfae988acd76b703a480ac0c96f3334557d70a965bf41245d6ee43891e7571a8b400ccf2b2be5803351375d0f4e5bcf08 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/df8bfb2bb18413aa151ecd63b7d5deb0eec102f924f9de6bc08022ced7ed8ca7fed914562d2f6fa5b59b74a5d6e255dc35612b2bc3b8abf361e13f61b3704770 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" - dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/a3bcf7815f3e9d8b205e0af4a8d92603d685868e45d119b621357e274996bf916216bb95ab5c6a60fde3775b91941555bf129d608e3d025b04f8aac84589f300 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.24.7": - version: 7.24.8 - resolution: "@babel/helper-plugin-utils@npm:7.24.8" - checksum: 10/adbc9fc1142800a35a5eb0793296924ee8057fe35c61657774208670468a9fbfbb216f2d0bc46c680c5fefa785e5ff917cc1674b10bd75cdf9a6aa3444780630 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/5083e190186028e48fc358a192e4b93ab320bd016103caffcfda81302a13300ccce46c9cd255ae520c25d2a6a9b47671f93e5fe5678954a2329dc0a685465c49 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10/6d1bf8f27dd725ce02bdc6dffca3c95fb9ab8a06adc2edbd9c1c9d68500274230d1a609025833ed81981eff560045b6b38f7b4c6fb1ab19fc90e5004e3932535 + checksum: 10/9841d2a62f61ad52b66a72d08264f23052d533afc4ce07aec2a6202adac0bfe43014c312f94feacb3291f4c5aafe681955610041ece2c276271adce3f570f2f5 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-string-parser@npm:7.25.7" - checksum: 10/2b8de9fa86c3f3090a349f1ce6e8ee2618a95355cbdafc6f228d82fa4808c84bf3d1d25290c6616d0a18b26b6cfeb6ec2aeebf01404bc8c60051d0094209f0e6 +"@babel/helper-plugin-utils@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-plugin-utils@npm:7.25.9" + checksum: 10/e347d87728b1ab10b6976d46403941c8f9008c045ea6d99997a7ffca7b852dc34b6171380f7b17edf94410e0857ff26f3a53d8618f11d73744db86e8ca9b8c64 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10/c28656c52bd48e8c1d9f3e8e68ecafd09d949c57755b0d353739eb4eae7ba4f7e67e92e4036f1cd43378cc1397a2c943ed7bcaf5949b04ab48607def0258b775 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-identifier@npm:7.25.7" - checksum: 10/ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10/3f9b649be0c2fd457fa1957b694b4e69532a668866b8a0d81eabfa34ba16dbf3107b39e0e7144c55c3c652bf773ec816af8df4a61273a2bb4eb3145ca9cf478e languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10/a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10/9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.6 - resolution: "@babel/helpers@npm:7.25.6" +"@babel/helpers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helpers@npm:7.26.0" dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" - checksum: 10/43abc8d017b754619aa189d05e2bdb54aaf44f03ec0439e89b3e7c180d538adb01ce9014a1689f632a7e8b17655c72bfac0a92268476eec708b41d3ba0a65296 + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + checksum: 10/fd4757f65d10b64cfdbf4b3adb7ea6ffff9497c53e0786452f495d1f7794da7e0898261b4db65e1c62bbb9a360d7d78a1085635c23dfc3af2ab6dcba06585f86 languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.5, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/parser@npm:7.26.2" dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/69b73f38cdd4f881b09b939a711e76646da34f4834f4ce141d7a49a6bb1926eab1c594148970a8aa9360398dff800f63aade4e81fafdd7c8d8a8489ea93bfec1 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/highlight@npm:7.25.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/823be2523d246dbf80aab3cc81c2a36c6111b16ac2949ef06789da54387824c2bfaa88c6627cdeb4ba7151d047a5d6765e49ebd0b478aba09759250111e65e08 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.5, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/parser@npm:7.25.7" - dependencies: - "@babel/types": "npm:^7.25.7" - bin: - parser: ./bin/babel-parser.js - checksum: 10/98eaa81bd378734a5f2790f02c7c076ecaba0839217445b4b84f45a7b391d640c34034253231a5bb2b2daf8204796f03584c3f94c10d46b004369bbb426a418f - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/parser@npm:7.25.6" - dependencies: - "@babel/types": "npm:^7.25.6" + "@babel/types": "npm:^7.26.0" bin: parser: ./bin/babel-parser.js - checksum: 10/830aab72116aa14eb8d61bfa8f9d69fc8f3a43d909ce993cb4350ae14d3af1a2f740a54410a22d821c48a253263643dfecbc094f9608e6a70ce9ff3c0bbfe91a + checksum: 10/8baee43752a3678ad9f9e360ec845065eeee806f1fdc8e0f348a8a0e13eef0959dabed4a197c978896c493ea205c804d0a1187cc52e4a1ba017c7935bab4983d languageName: node linkType: hard "@babel/plugin-syntax-jsx@npm:^7.22.5": - version: 7.24.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/a93516ae5b34868ab892a95315027d4e5e38e8bd1cfca6158f2974b0901cbb32bbe64ea10ad5b25f919ddc40c6d8113c4823372909c9c9922170c12b0b1acecb + checksum: 10/bb609d1ffb50b58f0c1bac8810d0e46a4f6c922aa171c458f3a19d66ee545d36e782d3bffbbc1fed0dc65a558bdce1caf5279316583c0fff5a2c1658982a8563 languageName: node linkType: hard "@babel/plugin-transform-react-jsx-self@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.7" + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/56115b4a6c006ce82846f1ab21e5ba713ee8f57a166c96c94fc632cdfbc8b9cebbf20b7cd9b8076439dabecdbf0f8ca4c2cb1bed1bf0b15cb44505a429f6a92f + checksum: 10/41c833cd7f91b1432710f91b1325706e57979b2e8da44e83d86312c78bbe96cd9ef778b4e79e4e17ab25fa32c72b909f2be7f28e876779ede28e27506c41f4ae languageName: node linkType: hard "@babel/plugin-transform-react-jsx-source@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.24.7" + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": "npm:^7.24.7" + "@babel/helper-plugin-utils": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/682e2ae15d788453d8ab34cf0dcc29c093faf7c7cf1d60110c43f33e6477f916cf301456b314fc496fadc07123f7978225f41ac286ed0bfbad9c8e76392fdb6d + checksum: 10/a3e0e5672e344e9d01fb20b504fe29a84918eaa70cec512c4d4b1b035f72803261257343d8e93673365b72c371f35cf34bb0d129720bf178a4c87812c8b9c662 languageName: node linkType: hard "@babel/runtime-corejs3@npm:^7.10.2": - version: 7.25.6 - resolution: "@babel/runtime-corejs3@npm:7.25.6" + version: 7.26.0 + resolution: "@babel/runtime-corejs3@npm:7.26.0" dependencies: core-js-pure: "npm:^3.30.2" regenerator-runtime: "npm:^0.14.0" - checksum: 10/67e0a012c015cdb24b373a135d93c4d73c043b266d100bdcad8aa061794121d79b4a9ce3722f881ef44bc209c3665aa8b40f7e16e4bad6d344793d2517dd9ead + checksum: 10/fd813d8b5bfc412c083033638c937e13f621b3223161c4a20bb8532d77ae622b620915476bd265670f6a8fc1a76a017ffd738ad25ad24431953e3725247c6520 languageName: node linkType: hard @@ -389,85 +299,47 @@ __metadata: linkType: hard "@babel/runtime@npm:>=7.17.0, @babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.10.4, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.25.6 - resolution: "@babel/runtime@npm:7.25.6" + version: 7.26.0 + resolution: "@babel/runtime@npm:7.26.0" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 10/0c4134734deb20e1005ffb9165bf342e1074576621b246d8e5e41cc7cb315a885b7d98950fbf5c63619a2990a56ae82f444d35fe8c4691a0b70c2fe5673667dc - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10/07ebecf6db8b28244b7397628e09c99e7a317b959b926d90455c7253c88df3677a5a32d1501d9749fe292a263ff51a4b6b5385bcabd5dadd3a48036f4d4949e0 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/template@npm:7.25.7" - dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/49e1e88d2eac17d31ae28d6cf13d6d29c1f49384c4f056a6751c065d6565c351e62c01ce6b11fef5edb5f3a77c87e114ea7326ca384fa618b4834e10cf9b20f3 + checksum: 10/9f4ea1c1d566c497c052d505587554e782e021e6ccd302c2ad7ae8291c8e16e3f19d4a7726fb64469e057779ea2081c28b7dbefec6d813a22f08a35712c0f699 languageName: node linkType: hard -"@babel/traverse@npm:^7.24.5, @babel/traverse@npm:^7.25.7, @babel/traverse@npm:^7.4.5": - version: 7.25.7 - resolution: "@babel/traverse@npm:7.25.7" +"@babel/template@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/5b2d332fcd6bc78e6500c997e79f7e2a54dfb357e06f0908cb7f0cdd9bb54e7fd3c5673f45993849d433d01ea6076a6d04b825958f0cfa01288ad55ffa5c286f + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10/e861180881507210150c1335ad94aff80fd9e9be6202e1efa752059c93224e2d5310186ddcdd4c0f0b0fc658ce48cb47823f15142b5c00c8456dde54f5de80b2 languageName: node linkType: hard -"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": - version: 7.25.6 - resolution: "@babel/traverse@npm:7.25.6" +"@babel/traverse@npm:^7.24.5, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.4.5": + version: 7.25.9 + resolution: "@babel/traverse@npm:7.25.9" dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.6" - "@babel/parser": "npm:^7.25.6" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.6" + "@babel/code-frame": "npm:^7.25.9" + "@babel/generator": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10/de75a918299bc27a44ec973e3f2fa8c7902bbd67bd5d39a0be656f3c1127f33ebc79c12696fbc8170a0b0e1072a966d4a2126578d7ea2e241b0aeb5d16edc738 + checksum: 10/7431614d76d4a053e429208db82f2846a415833f3d9eb2e11ef72eeb3c64dfd71f4a4d983de1a4a047b36165a1f5a64de8ca2a417534cc472005c740ffcb9c6a languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.5, @babel/types@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/types@npm:7.25.7" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.5, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" dependencies: - "@babel/helper-string-parser": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/4504e16a95b6a67d50cfaa389bcbc0621019084cff73784ad4797f82d1bb76c870cb0abb6d9881d5776eb06b4607419a2b1205a08c3e87b152d74bd0884b822a - languageName: node - linkType: hard - -"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.6": - version: 7.25.6 - resolution: "@babel/types@npm:7.25.6" - dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/7b54665e1b51f525fe0f451efdd9fe7a4a6dfba3fd4956c3530bc77336b66ffe3d78c093796ed044119b5d213176af7cf326f317a2057c538d575c6cefcb3562 + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10/40780741ecec886ed9edae234b5eb4976968cc70d72b4e5a40d55f83ff2cc457de20f9b0f4fe9d858350e43dab0ea496e7ef62e2b2f08df699481a76df02cd6e languageName: node linkType: hard @@ -1409,20 +1281,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" dependencies: - eslint-visitor-keys: "npm:^3.3.0" + eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/8d70bcdcd8cd279049183aca747d6c2ed7092a5cf0cf5916faac1ef37ffa74f0c245c2a3a3d3b9979d9dfdd4ca59257b4c5621db699d637b847a2c5e02f491c2 + checksum: 10/ae92a11412674329b4bd38422518601ec9ceae28e251104d1cad83715da9d38e321f68c817c39b64e66d0af7d98df6f9a10ad2dc638911254b47fb8932df00ef languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": - version: 4.11.1 - resolution: "@eslint-community/regexpp@npm:4.11.1" - checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10/c08f1dd7dd18fbb60bdd0d85820656d1374dd898af9be7f82cb00451313402a22d5e30569c150315b4385907cdbca78c22389b2a72ab78883b3173be317620cc languageName: node linkType: hard @@ -2055,16 +1927,16 @@ __metadata: languageName: node linkType: hard -"@firebase/app-compat@npm:0.2.41": - version: 0.2.41 - resolution: "@firebase/app-compat@npm:0.2.41" +"@firebase/app-compat@npm:0.2.43": + version: 0.2.43 + resolution: "@firebase/app-compat@npm:0.2.43" dependencies: - "@firebase/app": "npm:0.10.11" + "@firebase/app": "npm:0.10.13" "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" - checksum: 10/67e4b0572a3c24c4acc13e2c3b55a4fc778d286bae10f1df684a142c9790b4f131519fe84087341884bd67b04b822c3f7092b9748dfa3b52086b6f82ca8a1001 + checksum: 10/e27340dbc9804ffd0d469cc1fa919cd61b6e04fe96599d14414aa06c3dcbe75b23c324f0bedfff4dbd5d9b829b8dde5a2e8b5464f1f686d66f9c00971d9d4c56 languageName: node linkType: hard @@ -2075,16 +1947,16 @@ __metadata: languageName: node linkType: hard -"@firebase/app@npm:0.10.11": - version: 0.10.11 - resolution: "@firebase/app@npm:0.10.11" +"@firebase/app@npm:0.10.13": + version: 0.10.13 + resolution: "@firebase/app@npm:0.10.13" dependencies: "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" "@firebase/util": "npm:1.10.0" idb: "npm:7.1.1" tslib: "npm:^2.1.0" - checksum: 10/529d9e59b39e96cd97a8402e1cee508dbbb962aa1805345dc902ecbfe61709bb46ab3b821cd3b50b3d2e3e9f898515eb91cded030492e376550a97518cbcdb70 + checksum: 10/54ec64b3a992c2f30c800fb5638bf586e7e7f351899887c701d5f946ad8ca445d8c1d3024007b7939a7e6ae29a51d90567552a863323594dc6fca22f1e811e0b languageName: node linkType: hard @@ -2150,6 +2022,21 @@ __metadata: languageName: node linkType: hard +"@firebase/data-connect@npm:0.1.0": + version: 0.1.0 + resolution: "@firebase/data-connect@npm:0.1.0" + dependencies: + "@firebase/auth-interop-types": "npm:0.2.3" + "@firebase/component": "npm:0.6.9" + "@firebase/logger": "npm:0.4.2" + "@firebase/util": "npm:1.10.0" + tslib: "npm:^2.1.0" + peerDependencies: + "@firebase/app": 0.x + checksum: 10/20dac7c4755a0dde17abea0c99b41e96c9f7eea6ea39c36fd85f3f5554991b718a25b4bc1f92850208ec1f0e3b1ee584b1cf1913c4ad6c41643655682c06a2b0 + languageName: node + linkType: hard + "@firebase/database-compat@npm:1.0.8": version: 1.0.8 resolution: "@firebase/database-compat@npm:1.0.8" @@ -2189,18 +2076,18 @@ __metadata: languageName: node linkType: hard -"@firebase/firestore-compat@npm:0.3.37": - version: 0.3.37 - resolution: "@firebase/firestore-compat@npm:0.3.37" +"@firebase/firestore-compat@npm:0.3.38": + version: 0.3.38 + resolution: "@firebase/firestore-compat@npm:0.3.38" dependencies: "@firebase/component": "npm:0.6.9" - "@firebase/firestore": "npm:4.7.2" + "@firebase/firestore": "npm:4.7.3" "@firebase/firestore-types": "npm:3.0.2" "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/c152ba401f0d786699b25e1101d77351b7a6503f1a1f774efa7fecacc66aec58aca58a7b54e3f8587fcb45ffa3772d5e123ae79ddd90d0a87f2042ac34880d8a + checksum: 10/de9e92b5ac612ea73322407b65b1d90067f7138d2159bcfd2400535d09968ea8c8b44956282172129eca78bf951f74a6991394b2634913458927570bb4fa8cd8 languageName: node linkType: hard @@ -2214,9 +2101,9 @@ __metadata: languageName: node linkType: hard -"@firebase/firestore@npm:4.7.2": - version: 4.7.2 - resolution: "@firebase/firestore@npm:4.7.2" +"@firebase/firestore@npm:4.7.3": + version: 4.7.3 + resolution: "@firebase/firestore@npm:4.7.3" dependencies: "@firebase/component": "npm:0.6.9" "@firebase/logger": "npm:0.4.2" @@ -2228,7 +2115,7 @@ __metadata: undici: "npm:6.19.7" peerDependencies: "@firebase/app": 0.x - checksum: 10/066a125760bc2163bbc9c6fcde8b3f67da97791f8ce6f5ffa8ff3c40567aff97b2fe02020c3403857f104f051e4d6452aee60fe75ed5e408e467c611c397b4bb + checksum: 10/f46a6e3c03eadfa970d8ecc17627d0d696931a19092fcf5be4b2056a209da3691be0bd040a11d333d26c15fd14329ce0fb5dfc32bf2cfa530a4d035b45ef4edf languageName: node linkType: hard @@ -2318,17 +2205,17 @@ __metadata: languageName: node linkType: hard -"@firebase/messaging-compat@npm:0.2.11": - version: 0.2.11 - resolution: "@firebase/messaging-compat@npm:0.2.11" +"@firebase/messaging-compat@npm:0.2.12": + version: 0.2.12 + resolution: "@firebase/messaging-compat@npm:0.2.12" dependencies: "@firebase/component": "npm:0.6.9" - "@firebase/messaging": "npm:0.12.11" + "@firebase/messaging": "npm:0.12.12" "@firebase/util": "npm:1.10.0" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 10/8ace6d65adcf891b272875b7b3f43978a15644b23f7ee796346f02eb50007c20c99719f4991772911005697613bf122167ca150d8245d0fccb2b959472b4a625 + checksum: 10/0437ba6b24327d9eb02dc87ba61146fbb9720491ad671dc554438ac87e162d5fb154c704400d55c87ce01dd5aeedada9d0367fd114d840ead0d07802475eaa60 languageName: node linkType: hard @@ -2339,9 +2226,9 @@ __metadata: languageName: node linkType: hard -"@firebase/messaging@npm:0.12.11": - version: 0.12.11 - resolution: "@firebase/messaging@npm:0.12.11" +"@firebase/messaging@npm:0.12.12": + version: 0.12.12 + resolution: "@firebase/messaging@npm:0.12.12" dependencies: "@firebase/component": "npm:0.6.9" "@firebase/installations": "npm:0.6.9" @@ -2351,7 +2238,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 10/1de21d56c74996e99151a902e0f1ff0825d47ebff044104483a838ff5cb4883433b2f541616b033255e4fd2780b29f71982d8832edf4987c101df97ed508828a + checksum: 10/a00125489085782faf189ad42f75bed108c6632b9d198d114e0a8ce28d89f9455b4f78ff8f7d24d4a86ad13e1e14e0f17fa2ff3605c6dd0c8ff1b65fef23ce3d languageName: node linkType: hard @@ -2522,12 +2409,12 @@ __metadata: linkType: hard "@floating-ui/dom@npm:^1.0.0": - version: 1.6.11 - resolution: "@floating-ui/dom@npm:1.6.11" + version: 1.6.12 + resolution: "@floating-ui/dom@npm:1.6.12" dependencies: "@floating-ui/core": "npm:^1.6.0" "@floating-ui/utils": "npm:^0.2.8" - checksum: 10/8579392ad10151474869e7640af169b0d7fc2df48d4da27b6dcb1a57202329147ed986b2972787d4b8cd550c87897271b2d9c4633c2ec7d0b3ad37ce1da636f1 + checksum: 10/5c8e5fdcd3843140a606ab6dc6c12ad740f44e66b898966ef877393faaede0bbe14586e1049e2c2f08856437da8847e884a2762e78275fefa65a5a9cd71e580d languageName: node linkType: hard @@ -2740,12 +2627,12 @@ __metadata: linkType: hard "@ipld/dag-cbor@npm:^9.0.1": - version: 9.2.1 - resolution: "@ipld/dag-cbor@npm:9.2.1" + version: 9.2.2 + resolution: "@ipld/dag-cbor@npm:9.2.2" dependencies: cborg: "npm:^4.0.0" multiformats: "npm:^13.1.0" - checksum: 10/83cf36909be31c67e5721eed3837f9a707831ee542a22297aa7a976b80921e74a0c850b8199c20e9a9b0e7e38fae1f0a501ce42da2132062b14a8d1d565cd178 + checksum: 10/71b464313f745e4c0b62fbfd2f257f526b87dba8e007246239b44d121ca82c453adf4f659d9036140dc0a485307727ce0a8749fbda0f648d950c9ccdf496bd97 languageName: node linkType: hard @@ -3093,9 +2980,9 @@ __metadata: linkType: hard "@livekit/components-styles@npm:^1.0.6": - version: 1.1.3 - resolution: "@livekit/components-styles@npm:1.1.3" - checksum: 10/dd1abddc470c26e41d13a49e0ca0a6c7557d622697a7d7954aea716c251209a5d0620d959eb93776ff41c1bc43b9afe4e473fc59179e42224a24129fdddbd548 + version: 1.1.4 + resolution: "@livekit/components-styles@npm:1.1.4" + checksum: 10/e5599a3a9b664879f5a85ba6e4f5955b01695ac12f2fa3f37eac9f0b9aeea4c539091814d8b513f94c7c79164dcdb398cd5a4e5a05d62af5b8075b0373fca6f4 languageName: node linkType: hard @@ -3537,14 +3424,14 @@ __metadata: linkType: hard "@mui/types@npm:^7.2.15": - version: 7.2.17 - resolution: "@mui/types@npm:7.2.17" + version: 7.2.19 + resolution: "@mui/types@npm:7.2.19" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: 10/de21ecd69e4fe22738f1437d7084747c07a1e88f6fbdea5a2927594c587aaf8cac7bd67118b8749a8c7a6f45875b937d4a20b43f531773cdfd870445a4237893 + checksum: 10/a23bc280c0722527ce5e264b0dcb44271441e4016eb2285acc1f0d236cf78c73ecc3ec7abba81876c2eadf45b905b55eb26e0e824ea6afc233efce2ef5a34f7d languageName: node linkType: hard @@ -3750,117 +3637,125 @@ __metadata: languageName: node linkType: hard -"@parcel/watcher-android-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-android-arm64@npm:2.4.1" +"@parcel/watcher-android-arm64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-android-arm64@npm:2.5.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@parcel/watcher-darwin-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" +"@parcel/watcher-darwin-arm64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-darwin-arm64@npm:2.5.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@parcel/watcher-darwin-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" +"@parcel/watcher-darwin-x64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-darwin-x64@npm:2.5.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@parcel/watcher-freebsd-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" +"@parcel/watcher-freebsd-x64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-freebsd-x64@npm:2.5.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@parcel/watcher-linux-arm-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" +"@parcel/watcher-linux-arm-glibc@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.5.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" +"@parcel/watcher-linux-arm-musl@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm-musl@npm:2.5.0" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.5.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@parcel/watcher-linux-arm64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" +"@parcel/watcher-linux-arm64-musl@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.5.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@parcel/watcher-linux-x64-glibc@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" +"@parcel/watcher-linux-x64-glibc@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.5.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@parcel/watcher-linux-x64-musl@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" +"@parcel/watcher-linux-x64-musl@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.5.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard "@parcel/watcher-wasm@npm:^2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-wasm@npm:2.4.1" + version: 2.5.0 + resolution: "@parcel/watcher-wasm@npm:2.5.0" dependencies: is-glob: "npm:^4.0.3" micromatch: "npm:^4.0.5" napi-wasm: "npm:^1.1.0" - checksum: 10/df32eec32ce1ac895c3ee2ae4574dd5f73f4c886820992e2e7c11e8bf4913d271484cb6c4863914129bd8a104e6924c767efa75bb19e17dde9a5c14408660cd2 + checksum: 10/2e17915320267b6d6305406a4b59cb0b0e88eb93ba6acc61c5382c517421a9132992fb8d1468a0030ee9945a1d6216ee6112452e78b30089590cd206c49d98a0 languageName: node linkType: hard -"@parcel/watcher-win32-arm64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" +"@parcel/watcher-win32-arm64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-win32-arm64@npm:2.5.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@parcel/watcher-win32-ia32@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" +"@parcel/watcher-win32-ia32@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-win32-ia32@npm:2.5.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@parcel/watcher-win32-x64@npm:2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher-win32-x64@npm:2.4.1" +"@parcel/watcher-win32-x64@npm:2.5.0": + version: 2.5.0 + resolution: "@parcel/watcher-win32-x64@npm:2.5.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@parcel/watcher@npm:^2.4.1": - version: 2.4.1 - resolution: "@parcel/watcher@npm:2.4.1" - dependencies: - "@parcel/watcher-android-arm64": "npm:2.4.1" - "@parcel/watcher-darwin-arm64": "npm:2.4.1" - "@parcel/watcher-darwin-x64": "npm:2.4.1" - "@parcel/watcher-freebsd-x64": "npm:2.4.1" - "@parcel/watcher-linux-arm-glibc": "npm:2.4.1" - "@parcel/watcher-linux-arm64-glibc": "npm:2.4.1" - "@parcel/watcher-linux-arm64-musl": "npm:2.4.1" - "@parcel/watcher-linux-x64-glibc": "npm:2.4.1" - "@parcel/watcher-linux-x64-musl": "npm:2.4.1" - "@parcel/watcher-win32-arm64": "npm:2.4.1" - "@parcel/watcher-win32-ia32": "npm:2.4.1" - "@parcel/watcher-win32-x64": "npm:2.4.1" + version: 2.5.0 + resolution: "@parcel/watcher@npm:2.5.0" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.5.0" + "@parcel/watcher-darwin-arm64": "npm:2.5.0" + "@parcel/watcher-darwin-x64": "npm:2.5.0" + "@parcel/watcher-freebsd-x64": "npm:2.5.0" + "@parcel/watcher-linux-arm-glibc": "npm:2.5.0" + "@parcel/watcher-linux-arm-musl": "npm:2.5.0" + "@parcel/watcher-linux-arm64-glibc": "npm:2.5.0" + "@parcel/watcher-linux-arm64-musl": "npm:2.5.0" + "@parcel/watcher-linux-x64-glibc": "npm:2.5.0" + "@parcel/watcher-linux-x64-musl": "npm:2.5.0" + "@parcel/watcher-win32-arm64": "npm:2.5.0" + "@parcel/watcher-win32-ia32": "npm:2.5.0" + "@parcel/watcher-win32-x64": "npm:2.5.0" detect-libc: "npm:^1.0.3" is-glob: "npm:^4.0.3" micromatch: "npm:^4.0.5" @@ -3877,6 +3772,8 @@ __metadata: optional: true "@parcel/watcher-linux-arm-glibc": optional: true + "@parcel/watcher-linux-arm-musl": + optional: true "@parcel/watcher-linux-arm64-glibc": optional: true "@parcel/watcher-linux-arm64-musl": @@ -3891,7 +3788,7 @@ __metadata: optional: true "@parcel/watcher-win32-x64": optional: true - checksum: 10/c163dff1828fa249c00f24931332dea5a8f2fcd1bfdd0e304ccdf7619c58bff044526fa39241fd2121d2a2141f71775ce3117450d78c4df3070d152282017644 + checksum: 10/1e28b1aa9a63456ebfa7af3e41297d088bd31d9e32548604f4f26ed96c5808f4330cd515062e879c24a9eaab7894066c8a3951ee30b59e7cbe6786ab2c790dae languageName: node linkType: hard @@ -4309,24 +4206,37 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-dialog@npm:^1.0.4, @radix-ui/react-dialog@npm:^1.1.1": +"@radix-ui/react-context@npm:1.1.1": version: 1.1.1 - resolution: "@radix-ui/react-dialog@npm:1.1.1" + resolution: "@radix-ui/react-context@npm:1.1.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/f6469583bf11cc7bff3ea5c95c56b0774a959512adead00dc64b0527cca01b90b476ca39a64edfd7e18e428e17940aa0339116b1ce5b6e8eab513cfd1065d391 + languageName: node + linkType: hard + +"@radix-ui/react-dialog@npm:^1.0.4, @radix-ui/react-dialog@npm:^1.1.1": + version: 1.1.2 + resolution: "@radix-ui/react-dialog@npm:1.1.2" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" - "@radix-ui/react-context": "npm:1.1.0" - "@radix-ui/react-dismissable-layer": "npm:1.1.0" - "@radix-ui/react-focus-guards": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dismissable-layer": "npm:1.1.1" + "@radix-ui/react-focus-guards": "npm:1.1.1" "@radix-ui/react-focus-scope": "npm:1.1.0" "@radix-ui/react-id": "npm:1.1.0" - "@radix-ui/react-portal": "npm:1.1.1" - "@radix-ui/react-presence": "npm:1.1.0" + "@radix-ui/react-portal": "npm:1.1.2" + "@radix-ui/react-presence": "npm:1.1.1" "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-slot": "npm:1.1.0" "@radix-ui/react-use-controllable-state": "npm:1.1.0" aria-hidden: "npm:^1.1.1" - react-remove-scroll: "npm:2.5.7" + react-remove-scroll: "npm:2.6.0" peerDependencies: "@types/react": "*" "@types/react-dom": "*" @@ -4337,7 +4247,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/8c4b4af680e306db4fe113e9e19eb173f633b40b267030906167f6f62adfaa02aa2cb8ee97775ad0c701242a5ef6d0ce3528e1b13e640cbc6ea356eb27836189 + checksum: 10/9ed653e8e29443331d8dda8174f3c47194104e8b6e7bdd8f56998860fd8bf5e5a8867863bc93b089f8f7e37964375341eec2965e2f35ec26ee2cf2dd175bb503 languageName: node linkType: hard @@ -4393,9 +4303,9 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-dismissable-layer@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-dismissable-layer@npm:1.1.0" +"@radix-ui/react-dismissable-layer@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-dismissable-layer@npm:1.1.1" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" @@ -4412,19 +4322,19 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/08baf3441f811ce88649fa90cf8031f496f81a404cda75fa2a7b42020e3368f8f2a96911a4a1f7065cfa3fb2c091156c009d9255f81feeaf2f7ffadcfd12caf1 + checksum: 10/4f2346846f15f3482b8b6cd850448838d01520366deef840d8e80f5a3443aa7f21f86bd5b9a26f2709dcf94f1ec3f2bdfe80d5c37cba504c41e487c7ff8af3de languageName: node linkType: hard "@radix-ui/react-dropdown-menu@npm:^2.1.1": - version: 2.1.1 - resolution: "@radix-ui/react-dropdown-menu@npm:2.1.1" + version: 2.1.2 + resolution: "@radix-ui/react-dropdown-menu@npm:2.1.2" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" - "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.1" "@radix-ui/react-id": "npm:1.1.0" - "@radix-ui/react-menu": "npm:2.1.1" + "@radix-ui/react-menu": "npm:2.1.2" "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-use-controllable-state": "npm:1.1.0" peerDependencies: @@ -4437,7 +4347,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/61f671711cb49f102fc1fc4999968273009f8373b3d11ab0ae1bcf72554c06a297910b044df868b5ec90d55de4e3181a2c8c9e67bbc630add8a7dcd7f6d2b543 + checksum: 10/09c7a1807475432a7adeb57b245e1e512098ce96392111d75e38fa4be71fe8f9b35818f1d2fc3f4246651247818f95e9a435e68e6fd2cd522620a292e2e74d55 languageName: node linkType: hard @@ -4456,16 +4366,16 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-focus-guards@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-focus-guards@npm:1.1.0" +"@radix-ui/react-focus-guards@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-focus-guards@npm:1.1.1" peerDependencies: "@types/react": "*" react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: "@types/react": optional: true - checksum: 10/199717e7da1ba9b3fa74b04f6a245aaebf6bdb8ae7d6f4b5f21f95f4086414a3587beebc77399a99be7d3a4b2499eaa52bf72bef660f8e69856b0fd0593b074f + checksum: 10/ac8dd31f48fa0500bafd9368f2f06c5a06918dccefa89fa5dc77ca218dc931a094a81ca57f6b181138029822f7acdd5280dceccf5ba4d9263c754fb8f7961879 languageName: node linkType: hard @@ -4543,28 +4453,28 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-menu@npm:2.1.1": - version: 2.1.1 - resolution: "@radix-ui/react-menu@npm:2.1.1" +"@radix-ui/react-menu@npm:2.1.2": + version: 2.1.2 + resolution: "@radix-ui/react-menu@npm:2.1.2" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-collection": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" - "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.1" "@radix-ui/react-direction": "npm:1.1.0" - "@radix-ui/react-dismissable-layer": "npm:1.1.0" - "@radix-ui/react-focus-guards": "npm:1.1.0" + "@radix-ui/react-dismissable-layer": "npm:1.1.1" + "@radix-ui/react-focus-guards": "npm:1.1.1" "@radix-ui/react-focus-scope": "npm:1.1.0" "@radix-ui/react-id": "npm:1.1.0" "@radix-ui/react-popper": "npm:1.2.0" - "@radix-ui/react-portal": "npm:1.1.1" - "@radix-ui/react-presence": "npm:1.1.0" + "@radix-ui/react-portal": "npm:1.1.2" + "@radix-ui/react-presence": "npm:1.1.1" "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-roving-focus": "npm:1.1.0" "@radix-ui/react-slot": "npm:1.1.0" "@radix-ui/react-use-callback-ref": "npm:1.1.0" aria-hidden: "npm:^1.1.1" - react-remove-scroll: "npm:2.5.7" + react-remove-scroll: "npm:2.6.0" peerDependencies: "@types/react": "*" "@types/react-dom": "*" @@ -4575,29 +4485,29 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/4d523b89a91c0355337cbaafbb0eb4645daa67f6fcef00dbe499a448079ab51e01011a87474f048a54aefbe28829d61f387e67ce30e2ce0aba26734a23c62f1c + checksum: 10/62d17d75fac27f86a1eb450ee6cb627f4f21854b7568f0bc4210b2b127d15d33444939be9af893fdc5db1d82fdfbde45e29f9e783155efa4c9af30def68777a2 languageName: node linkType: hard "@radix-ui/react-popover@npm:^1.0.6": - version: 1.1.1 - resolution: "@radix-ui/react-popover@npm:1.1.1" + version: 1.1.2 + resolution: "@radix-ui/react-popover@npm:1.1.2" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" - "@radix-ui/react-context": "npm:1.1.0" - "@radix-ui/react-dismissable-layer": "npm:1.1.0" - "@radix-ui/react-focus-guards": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dismissable-layer": "npm:1.1.1" + "@radix-ui/react-focus-guards": "npm:1.1.1" "@radix-ui/react-focus-scope": "npm:1.1.0" "@radix-ui/react-id": "npm:1.1.0" "@radix-ui/react-popper": "npm:1.2.0" - "@radix-ui/react-portal": "npm:1.1.1" - "@radix-ui/react-presence": "npm:1.1.0" + "@radix-ui/react-portal": "npm:1.1.2" + "@radix-ui/react-presence": "npm:1.1.1" "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-slot": "npm:1.1.0" "@radix-ui/react-use-controllable-state": "npm:1.1.0" aria-hidden: "npm:^1.1.1" - react-remove-scroll: "npm:2.5.7" + react-remove-scroll: "npm:2.6.0" peerDependencies: "@types/react": "*" "@types/react-dom": "*" @@ -4608,7 +4518,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/977173c0c6cb0d806c1a94197c7f92447004ade8c0aba5f238acb53ccaf0d330af54f8dbd3b334b497847df28c1ef0215b1103ae6bfccba10bbaf21f4ac59fac + checksum: 10/e8390e144516a016ade2a2a8fdf6b3c2f281d67cdbbcc46478d63366498c4af6946bafef8ecc496d37350d287e05adacc22da5e286298843ac49c285ce69bfdd languageName: node linkType: hard @@ -4689,9 +4599,9 @@ __metadata: languageName: node linkType: hard -"@radix-ui/react-portal@npm:1.1.1": - version: 1.1.1 - resolution: "@radix-ui/react-portal@npm:1.1.1" +"@radix-ui/react-portal@npm:1.1.2": + version: 1.1.2 + resolution: "@radix-ui/react-portal@npm:1.1.2" dependencies: "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-use-layout-effect": "npm:1.1.0" @@ -4705,13 +4615,13 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/84dab64ce9c9f4ed7d75df6d1d82877dc7976a98cc192287d39ba2ea512415ed7bf34caf02d579a18fe21766403fa9ae41d2482a14dee5514179ee1b09cc333c + checksum: 10/2f737dc0445f02f512f814ba140227e1a049b3d215d79e22ead412c9befe830292c48a559a8ad1514a474ae8f0c4c43954dfbe294b93a0279d8747d08f7b7924 languageName: node linkType: hard -"@radix-ui/react-presence@npm:1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-presence@npm:1.1.0" +"@radix-ui/react-presence@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-presence@npm:1.1.1" dependencies: "@radix-ui/react-compose-refs": "npm:1.1.0" "@radix-ui/react-use-layout-effect": "npm:1.1.0" @@ -4725,7 +4635,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/e3ce746560e1551c9c480f0ef1f085763faf7094ac9600ca15d8bacb1bf5c70e59effe889bd2116b56c798f69f8d2bfa32d14defd30b9381fb2dcc555367f11c + checksum: 10/1ae074efae47ab52a63239a5936fddb334b2f66ed91e74bfe8b1ae591e5db01fa7e9ddb1412002cc043066d40478ba05187a27eb2684dcd68dea545993f9ee20 languageName: node linkType: hard @@ -4867,12 +4777,12 @@ __metadata: linkType: hard "@radix-ui/react-switch@npm:^1.1.0": - version: 1.1.0 - resolution: "@radix-ui/react-switch@npm:1.1.0" + version: 1.1.1 + resolution: "@radix-ui/react-switch@npm:1.1.1" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" - "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.1" "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-use-controllable-state": "npm:1.1.0" "@radix-ui/react-use-previous": "npm:1.1.0" @@ -4887,22 +4797,22 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/847930e2a25699015e83f07ffb5065c2e925ffcf84b2ef2222e63e7862a9753e09ea8cd64504d20cbb689060ece1ad2e3b8a4c04702bc8040c5fda7d13ef71ae + checksum: 10/7dd7369b3563818088bd28f0c683e8b44c6834119ed42084fd55b685708f222f7b063082924600c11aa48f8187240e169c84a6e173874bb81b6fa4d112df0416 languageName: node linkType: hard "@radix-ui/react-tooltip@npm:^1.1.1": - version: 1.1.2 - resolution: "@radix-ui/react-tooltip@npm:1.1.2" + version: 1.1.4 + resolution: "@radix-ui/react-tooltip@npm:1.1.4" dependencies: "@radix-ui/primitive": "npm:1.1.0" "@radix-ui/react-compose-refs": "npm:1.1.0" - "@radix-ui/react-context": "npm:1.1.0" - "@radix-ui/react-dismissable-layer": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.1" + "@radix-ui/react-dismissable-layer": "npm:1.1.1" "@radix-ui/react-id": "npm:1.1.0" "@radix-ui/react-popper": "npm:1.2.0" - "@radix-ui/react-portal": "npm:1.1.1" - "@radix-ui/react-presence": "npm:1.1.0" + "@radix-ui/react-portal": "npm:1.1.2" + "@radix-ui/react-presence": "npm:1.1.1" "@radix-ui/react-primitive": "npm:2.0.0" "@radix-ui/react-slot": "npm:1.1.0" "@radix-ui/react-use-controllable-state": "npm:1.1.0" @@ -4917,7 +4827,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 10/d8386260d2710720b3d87fdacc04597935e5f6eb1d0375516dd362c2f00bf07ea1fceb4c4bda76ec332ebbcf6a4b88f04050add1a9a4db0f13a5ac12b1190355 + checksum: 10/de595811329ce789e770fd3c361c6b6e7dde3f0faa4b31d8cf72adb59036734d8389c3116756cd127dd1e7674ae1df5fa2365cf201f76413f26b24662299bde4 languageName: node linkType: hard @@ -5316,18 +5226,6 @@ __metadata: languageName: node linkType: hard -"@react-spring/animated@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/animated@npm:9.7.4" - dependencies: - "@react-spring/shared": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/b7f5f598686bd16765c78c1fc3d2b421d1a79cf6fa65b04b8bb0913630634c135e0d617915dcc8834a0874b63d24f3bc640d1a14741e9b1ed2825456978afd2f - languageName: node - linkType: hard - "@react-spring/animated@npm:~9.7.5": version: 9.7.5 resolution: "@react-spring/animated@npm:9.7.5" @@ -5340,7 +5238,7 @@ __metadata: languageName: node linkType: hard -"@react-spring/core@npm:~9.7.4": +"@react-spring/core@npm:~9.7.4, @react-spring/core@npm:~9.7.5": version: 9.7.5 resolution: "@react-spring/core@npm:9.7.5" dependencies: @@ -5354,40 +5252,33 @@ __metadata: linkType: hard "@react-spring/konva@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/konva@npm:9.7.4" + version: 9.7.5 + resolution: "@react-spring/konva@npm:9.7.5" dependencies: - "@react-spring/animated": "npm:~9.7.4" - "@react-spring/core": "npm:~9.7.4" - "@react-spring/shared": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/core": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" peerDependencies: konva: ">=2.6" react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-konva: ^16.8.0 || ^16.8.7-0 || ^16.9.0-0 || ^16.10.1-0 || ^16.12.0-0 || ^16.13.0-0 || ^17.0.0-0 || ^17.0.1-0 || ^17.0.2-0 || ^18.0.0-0 - checksum: 10/92c01dd7287aab01228cc01756ef89024052a35d4c8b310211451f4d1bc8f6d0308b0ea6b9aa5fe89603c98b81f26d60c0e60adf097e355a235fe707e391813f + checksum: 10/0460f107b08d0f71e71dee27ff11ad0fac8ce8b3faad00b63c0711ab1e07d8b693aca59f1c965d541f3c55dc3115c9896ad429097818f26613eeb1f801b9fe70 languageName: node linkType: hard "@react-spring/native@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/native@npm:9.7.4" + version: 9.7.5 + resolution: "@react-spring/native@npm:9.7.5" dependencies: - "@react-spring/animated": "npm:~9.7.4" - "@react-spring/core": "npm:~9.7.4" - "@react-spring/shared": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/core": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" peerDependencies: react: 16.8.0 || >=17.0.0 || >=18.0.0 react-native: ">=0.58" - checksum: 10/a1bc63a127dc07ace266e03fb6a5acac806c4744a88e8f7a325e5b6f7cbb21bc0a92e5d2e5a11d8fce9a1a28c39c9a1421cdae603b10c2ce6cae6691e7c9d4ee - languageName: node - linkType: hard - -"@react-spring/rafz@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/rafz@npm:9.7.4" - checksum: 10/57a36e6d6bb4743214de70c8a36924e0753bd48a4c320a9cd47d4fb5f7591e88e3ac4ad635e38c9733a449fe97e51aa88fb1acbe39b5b931a06c8c448fa30930 + checksum: 10/894c25fb332c14c3e70520b0679b372853c4e7d307c3e96fdc24ecf9869a47e60c1fb7a508b29dfc53e6002e6ba690a24370caecbc0aab503e65f32cb07df8d0 languageName: node linkType: hard @@ -5398,18 +5289,6 @@ __metadata: languageName: node linkType: hard -"@react-spring/shared@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/shared@npm:9.7.4" - dependencies: - "@react-spring/rafz": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/c011371e8437905234e27c0811f06064021ed8f59424018835c507dec07ff22c770ab2674302743e30542ad4d8788fa1b81b9b40e094fc3ccd434323e6140907 - languageName: node - linkType: hard - "@react-spring/shared@npm:~9.7.5": version: 9.7.5 resolution: "@react-spring/shared@npm:9.7.5" @@ -5423,25 +5302,18 @@ __metadata: linkType: hard "@react-spring/three@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/three@npm:9.7.4" + version: 9.7.5 + resolution: "@react-spring/three@npm:9.7.5" dependencies: - "@react-spring/animated": "npm:~9.7.4" - "@react-spring/core": "npm:~9.7.4" - "@react-spring/shared": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/core": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" peerDependencies: "@react-three/fiber": ">=6.0" react: ^16.8.0 || ^17.0.0 || ^18.0.0 three: ">=0.126" - checksum: 10/56b7ecf70ea799b8e069df2bea86b809b2f8e613f4f4aa35c2f02f0da8aba5f62332573d71cac5e63a4ca57a643237aa12dabd2af54df2c27cbd0a82bfea538f - languageName: node - linkType: hard - -"@react-spring/types@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/types@npm:9.7.4" - checksum: 10/25a9a6816a3e0ab4e06f2ac66b68bfd9e2bf844c6ea30133711be85c11693a4e2b74f0ce3c60356848d9096530a748cbe84e556fa342b92ce320f4d8a21e208c + checksum: 10/0ae7bfcc438fa308b83cf6213fb34ef5eb8fbec3868190dd5eb27dde67810d4060dd944559f936e36b1efbdd84f03ffa0235dab8e0979a03e3e5f1bef7f70921 languageName: node linkType: hard @@ -5453,34 +5325,34 @@ __metadata: linkType: hard "@react-spring/web@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/web@npm:9.7.4" + version: 9.7.5 + resolution: "@react-spring/web@npm:9.7.5" dependencies: - "@react-spring/animated": "npm:~9.7.4" - "@react-spring/core": "npm:~9.7.4" - "@react-spring/shared": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/core": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/1813c87d92b8d8500cf5e302d2b051aaaa79f25438f79ba4cd8d2ddb17c1667566c88fbff05a5d589f16d0ba74660de1b684de4c6402fdd2f679edace6c7050c + checksum: 10/ecd6c410d0277649c6a6dc19156a06cc7beb92ac79eb798ee18d30ca9bdf92ccf63ad7794b384471059f03d3dc8c612b26ca6aec42769d01e2a43d07919fd02b languageName: node linkType: hard "@react-spring/zdog@npm:~9.7.4": - version: 9.7.4 - resolution: "@react-spring/zdog@npm:9.7.4" + version: 9.7.5 + resolution: "@react-spring/zdog@npm:9.7.5" dependencies: - "@react-spring/animated": "npm:~9.7.4" - "@react-spring/core": "npm:~9.7.4" - "@react-spring/shared": "npm:~9.7.4" - "@react-spring/types": "npm:~9.7.4" + "@react-spring/animated": "npm:~9.7.5" + "@react-spring/core": "npm:~9.7.5" + "@react-spring/shared": "npm:~9.7.5" + "@react-spring/types": "npm:~9.7.5" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 react-zdog: ">=1.0" zdog: ">=1.0" - checksum: 10/99397263f1b5cf7fba0a5da25e344c2b115f2fe17afb4874af42ee22b8c1a6d6d64ae8c4fa5152378916c01c16df40252c317c71b157ac8aa84f6b9694644e53 + checksum: 10/ce43ad30013cad30dcccf390328d309a7b467b8fdddfd5f86a70b87b9e2ea198471a0803160fb239d33d78876e81e0421fe0cd772817fc1697927314f68cfcda languageName: node linkType: hard @@ -5504,10 +5376,10 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.19.2": - version: 1.19.2 - resolution: "@remix-run/router@npm:1.19.2" - checksum: 10/31b62b66ea68bd62018189047de7b262700113438f62407df019f81a9856a08a705b2b77454be9293518e2f5f3bbf3f8b858ac19f48cb7d89f8ab56b7b630c19 +"@remix-run/router@npm:1.21.0": + version: 1.21.0 + resolution: "@remix-run/router@npm:1.21.0" + checksum: 10/cf0fb69d19c1b79095ff67c59cea89086f3982a9a54c8a993818a60fc76e0ebab5a8db647c1a96a662729fad8e806ddd0a96622adf473f5a9f0b99998b2dbad4 languageName: node linkType: hard @@ -5539,130 +5411,144 @@ __metadata: languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.5": - version: 5.1.2 - resolution: "@rollup/pluginutils@npm:5.1.2" +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.1.3": + version: 5.1.3 + resolution: "@rollup/pluginutils@npm:5.1.3" dependencies: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^2.0.2" - picomatch: "npm:^2.3.1" + picomatch: "npm:^4.0.2" peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: 10/cc1fe3285ab48915a6535ab2f0c90dc511bd3e63143f8e9994bb036c6c5071fd14d641cff6c89a7fde6a4faa85227d4e2cf46ee36b7d962099e0b9e4c9b8a4b0 + checksum: 10/da24956c4f7ec0aed63a2dd6c6dd64d8ad90155918056e69adda6fbb7b96c607300079805bc63f2e64e33ba256802367301a578d020a22262f408bde98ca3643 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.22.5" +"@rollup/rollup-android-arm-eabi@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.26.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-android-arm64@npm:4.22.5" +"@rollup/rollup-android-arm64@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-android-arm64@npm:4.26.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-darwin-arm64@npm:4.22.5" +"@rollup/rollup-darwin-arm64@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.26.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-darwin-x64@npm:4.22.5" +"@rollup/rollup-darwin-x64@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.26.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.22.5" +"@rollup/rollup-freebsd-arm64@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.26.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.26.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.26.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.22.5" +"@rollup/rollup-linux-arm-musleabihf@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.26.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.22.5" +"@rollup/rollup-linux-arm64-gnu@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.26.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.22.5" +"@rollup/rollup-linux-arm64-musl@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.26.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.22.5" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.26.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.22.5" +"@rollup/rollup-linux-riscv64-gnu@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.26.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.22.5" +"@rollup/rollup-linux-s390x-gnu@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.26.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.22.5" +"@rollup/rollup-linux-x64-gnu@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.26.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.22.5" +"@rollup/rollup-linux-x64-musl@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.26.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.22.5" +"@rollup/rollup-win32-arm64-msvc@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.26.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.22.5" +"@rollup/rollup-win32-ia32-msvc@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.26.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.22.5": - version: 4.22.5 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.22.5" +"@rollup/rollup-win32-x64-msvc@npm:4.26.0": + version: 4.26.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.26.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -6234,92 +6120,92 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-darwin-arm64@npm:1.7.28" +"@swc/core-darwin-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-darwin-arm64@npm:1.9.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-darwin-x64@npm:1.7.28" +"@swc/core-darwin-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-darwin-x64@npm:1.9.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.28" +"@swc/core-linux-arm-gnueabihf@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.28" +"@swc/core-linux-arm64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.28" +"@swc/core-linux-arm64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-arm64-musl@npm:1.9.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.28" +"@swc/core-linux-x64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-x64-gnu@npm:1.9.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-x64-musl@npm:1.7.28" +"@swc/core-linux-x64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-x64-musl@npm:1.9.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.28" +"@swc/core-win32-arm64-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.28" +"@swc/core-win32-ia32-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.28" +"@swc/core-win32-x64-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-win32-x64-msvc@npm:1.9.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.7.0": - version: 1.7.28 - resolution: "@swc/core@npm:1.7.28" - dependencies: - "@swc/core-darwin-arm64": "npm:1.7.28" - "@swc/core-darwin-x64": "npm:1.7.28" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.28" - "@swc/core-linux-arm64-gnu": "npm:1.7.28" - "@swc/core-linux-arm64-musl": "npm:1.7.28" - "@swc/core-linux-x64-gnu": "npm:1.7.28" - "@swc/core-linux-x64-musl": "npm:1.7.28" - "@swc/core-win32-arm64-msvc": "npm:1.7.28" - "@swc/core-win32-ia32-msvc": "npm:1.7.28" - "@swc/core-win32-x64-msvc": "npm:1.7.28" + version: 1.9.2 + resolution: "@swc/core@npm:1.9.2" + dependencies: + "@swc/core-darwin-arm64": "npm:1.9.2" + "@swc/core-darwin-x64": "npm:1.9.2" + "@swc/core-linux-arm-gnueabihf": "npm:1.9.2" + "@swc/core-linux-arm64-gnu": "npm:1.9.2" + "@swc/core-linux-arm64-musl": "npm:1.9.2" + "@swc/core-linux-x64-gnu": "npm:1.9.2" + "@swc/core-linux-x64-musl": "npm:1.9.2" + "@swc/core-win32-arm64-msvc": "npm:1.9.2" + "@swc/core-win32-ia32-msvc": "npm:1.9.2" + "@swc/core-win32-x64-msvc": "npm:1.9.2" "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.12" + "@swc/types": "npm:^0.1.15" peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -6346,7 +6232,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/a477e79387ecc8b68c2bdbbdc88cc61f27a02c5d00f0d77134f9e2de166786a4ee9f7388d6ffd44fc01bfef5311a15cc3132052bab72fb43246dc42705fedb60 + checksum: 10/6793f2014a016f90b1c41a695f6d3a14d574e129e78f651fe3d6dbacbc6d0836ab7a7eb445d873a302b060b25ae34c4e09d0f94574a71da47c6424c5fa58aa10 languageName: node linkType: hard @@ -6357,12 +6243,12 @@ __metadata: languageName: node linkType: hard -"@swc/types@npm:^0.1.12": - version: 0.1.12 - resolution: "@swc/types@npm:0.1.12" +"@swc/types@npm:^0.1.15": + version: 0.1.15 + resolution: "@swc/types@npm:0.1.15" dependencies: "@swc/counter": "npm:^0.1.3" - checksum: 10/92dbbc70cd068ea30fb6fbdc1ae8599d6c058a5d09b2923d6e4e24fab5ad7c86a19dd01f349a8e03e300a9321e06911a24df18303b40e307fbd4109372cef2ef + checksum: 10/d8bf063aeebac51290d1edf0cec52e2e5b5afced0dc6933510a86947e10f0f77976bc14c3efb5e8f265a9cbdeb0929e00e44b2f82c6d0f273997c5029417b769 languageName: node linkType: hard @@ -6415,17 +6301,17 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:5.56.2": - version: 5.56.2 - resolution: "@tanstack/query-core@npm:5.56.2" - checksum: 10/b7600ee71c46c756edbfb0b7733c3df10c16d57b639bf6bd43b81cbdfd7678e01b425b02bd7a08764a2610af10a27f48a4380e3504a29356781bed1d50a38341 +"@tanstack/query-core@npm:5.59.20": + version: 5.59.20 + resolution: "@tanstack/query-core@npm:5.59.20" + checksum: 10/efe34f0a05f4cdef833c3885f466bab8ecee22677a9056d161087658539c1dd14063cc19c08b8f2e56cafc4692fcde7fb4fc4962df59159b1da12c49e69892df languageName: node linkType: hard -"@tanstack/query-devtools@npm:5.58.0": - version: 5.58.0 - resolution: "@tanstack/query-devtools@npm:5.58.0" - checksum: 10/ca16c47c943ea392dfddc301f7e09ecdb0c8b905fb684b8f26b908a244e2e897679efb0ead5fa8e728711017341fdd91d8c51ebb19f746819e26ade5549f539e +"@tanstack/query-devtools@npm:5.59.20": + version: 5.59.20 + resolution: "@tanstack/query-devtools@npm:5.59.20" + checksum: 10/0bb2995337d78910c7677f780af42cd4285b39d618cd7876e24ec16243783d4cfe9e4d067d210d5337aefaad0a21928c5e4cb30fb4c08a09521625fcfe9c14d4 languageName: node linkType: hard @@ -6439,14 +6325,14 @@ __metadata: linkType: hard "@tanstack/react-query-devtools@npm:^5.44.0": - version: 5.58.0 - resolution: "@tanstack/react-query-devtools@npm:5.58.0" + version: 5.59.20 + resolution: "@tanstack/react-query-devtools@npm:5.59.20" dependencies: - "@tanstack/query-devtools": "npm:5.58.0" + "@tanstack/query-devtools": "npm:5.59.20" peerDependencies: - "@tanstack/react-query": ^5.56.2 + "@tanstack/react-query": ^5.59.20 react: ^18 || ^19 - checksum: 10/8337ee516c7ec1c9ef4f25fad98e2a689074ad1151988e8ffa0daff543ecc032577707168624b16a6fe8af4f3bde187c154783b7a3dbb3c8bc4764523a5aa1af + checksum: 10/71cf2fa81ce1d7a7e35acd9f45a4c398272f69e8ab962c5fcf686b8bf5144ca8e8702049bad452186963b4b820703c19ba9372149fd56ec95fef5390c5d7346c languageName: node linkType: hard @@ -6481,13 +6367,13 @@ __metadata: linkType: hard "@tanstack/react-query@npm:^5.44.0": - version: 5.56.2 - resolution: "@tanstack/react-query@npm:5.56.2" + version: 5.59.20 + resolution: "@tanstack/react-query@npm:5.59.20" dependencies: - "@tanstack/query-core": "npm:5.56.2" + "@tanstack/query-core": "npm:5.59.20" peerDependencies: react: ^18 || ^19 - checksum: 10/fddf62e987b4f11a31fa136c5ddc203fdec642e7c35c94e5bd1132eb94c51e7d0d8eeb26f2fec9aa330929e596a4b1e340f539be26435b8858868d12d6b1578a + checksum: 10/4bfface953fedb124c5b30d46d22e46b18dc9c53a30ad20493c2ce70dc03058d78815c2a8a8a4f0bd279dae29469b923ccb346c69485f00c1808fa7ac908d6b4 languageName: node linkType: hard @@ -6693,7 +6579,27 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10/719fcd255760168a43d0e306ef87548e1e15bffe361d5f4022b0f266575637acc0ecb85604ac97879ee8ae83c6a6d0613b0ed31d0209ddf22a0fe6d608fc56fe + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d @@ -6766,7 +6672,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.8": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 @@ -6792,9 +6698,9 @@ __metadata: linkType: hard "@types/lodash@npm:*, @types/lodash@npm:^4.14.182": - version: 4.17.9 - resolution: "@types/lodash@npm:4.17.9" - checksum: 10/49e35caaf668686be0bad9e9bef88456903a21999d3fd8bf91c302e0d5328398fb59fee793d0afbaf6edeca1b46c3e8109899d85ff3a433075178f1ab693e597 + version: 4.17.13 + resolution: "@types/lodash@npm:4.17.13" + checksum: 10/ddb34e20810c71be2d9445bcc4b64ec25b83976738454de709854b79c7f655b03704b76235445699956d65012987720e0e429a35489de65495cdb5420202d905 languageName: node linkType: hard @@ -6813,11 +6719,11 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 22.7.4 - resolution: "@types/node@npm:22.7.4" + version: 22.9.0 + resolution: "@types/node@npm:22.9.0" dependencies: - undici-types: "npm:~6.19.2" - checksum: 10/19ddab80c4eba2253c855ed67c9bbc47417183049d01e59010a738bd80d47338bab79fd1f44ae51516bd63a1db4bf21ddb38b16bf6401a2e93252068ec52e88b + undici-types: "npm:~6.19.8" + checksum: 10/a7df3426891868b0f5fb03e46aeddd8446178233521c624a44531c92a040cf08a82d8235f7e1e02af731fd16984665d4d71f3418caf9c2788313b10f040d615d languageName: node linkType: hard @@ -6884,11 +6790,11 @@ __metadata: linkType: hard "@types/react-dom@npm:*, @types/react-dom@npm:^18.2.22": - version: 18.3.0 - resolution: "@types/react-dom@npm:18.3.0" + version: 18.3.1 + resolution: "@types/react-dom@npm:18.3.1" dependencies: "@types/react": "npm:*" - checksum: 10/6ff53f5a7b7fba952a68e114d3b542ebdc1e87a794234785ebab0bcd9bde7fb4885f21ebaf93d26dc0a1b5b93287f42cad68b78ae04dddf6b20da7aceff0beaf + checksum: 10/33f9ba79b26641ddf00a8699c30066b7e3573ab254e97475bf08f82fab83a6d3ce8d4ebad86afeb49bb8df3374390a9ba93125cece33badc4b3e8f7eac3c84d8 languageName: node linkType: hard @@ -6932,12 +6838,12 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^18.2.66": - version: 18.3.10 - resolution: "@types/react@npm:18.3.10" + version: 18.3.12 + resolution: "@types/react@npm:18.3.12" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/cdc946f15fcad62387e6485a2bbef3e45609708fd81e3ce30b03580077bb8a8a1bd0d19858d8602b33c3921bbb8907ddbc9411fd25294a2c2e944907dad8dd67 + checksum: 10/c9bbdfeacd5347d2240e0d2cb5336bc57dbc1b9ff557b6c4024b49df83419e4955553518169d3736039f1b62608e15b35762a6c03d49bd86e33add4b43b19033 languageName: node linkType: hard @@ -7225,31 +7131,17 @@ __metadata: languageName: node linkType: hard -"@uniswap/router-sdk@npm:^1.11.0": - version: 1.12.1 - resolution: "@uniswap/router-sdk@npm:1.12.1" - dependencies: - "@ethersproject/abi": "npm:^5.5.0" - "@uniswap/sdk-core": "npm:^5.3.1" - "@uniswap/swap-router-contracts": "npm:^1.3.0" - "@uniswap/v2-sdk": "npm:^4.3.2" - "@uniswap/v3-sdk": "npm:^3.11.2" - "@uniswap/v4-sdk": "npm:^1.6.0" - checksum: 10/d407d462a10de5f4ded6d57856e3e11c5c7a84cb1318f20b746f7347602f2fd71ecfbbf02b95c400c7599d987c4a361071e5266fc23f9f5078883621d2cdedcf - languageName: node - linkType: hard - -"@uniswap/router-sdk@npm:^1.12.0, @uniswap/router-sdk@npm:^1.6.0, @uniswap/router-sdk@npm:^1.9.0": - version: 1.14.2 - resolution: "@uniswap/router-sdk@npm:1.14.2" +"@uniswap/router-sdk@npm:^1.12.0, @uniswap/router-sdk@npm:^1.14.0, @uniswap/router-sdk@npm:^1.6.0, @uniswap/router-sdk@npm:^1.9.0": + version: 1.14.3 + resolution: "@uniswap/router-sdk@npm:1.14.3" dependencies: "@ethersproject/abi": "npm:^5.5.0" "@uniswap/sdk-core": "npm:^5.8.0" "@uniswap/swap-router-contracts": "npm:^1.3.0" "@uniswap/v2-sdk": "npm:^4.6.0" "@uniswap/v3-sdk": "npm:^3.17.0" - "@uniswap/v4-sdk": "npm:^1.9.0" - checksum: 10/3852923549f070f753a95d7597a0bf67234ceb81bbd0d72eb881d999b07435ebe349974ff700655192d05a810eac275ba8227780a535b9e6aa54bec149e4ce25 + "@uniswap/v4-sdk": "npm:^1.10.3" + checksum: 10/0f2f8661ee25e81d57494059fb7192ee00aa5ce51ba79e27597af616f4601cf7e33b887b7d8d51072e4e10b112bcbf5e876da48354bd47caed7a58f5f7456029 languageName: node linkType: hard @@ -7267,9 +7159,9 @@ __metadata: languageName: node linkType: hard -"@uniswap/sdk-core@npm:^5.0.0, @uniswap/sdk-core@npm:^5.3.1, @uniswap/sdk-core@npm:^5.4.0, @uniswap/sdk-core@npm:^5.8.0, @uniswap/sdk-core@npm:^5.8.1": - version: 5.8.1 - resolution: "@uniswap/sdk-core@npm:5.8.1" +"@uniswap/sdk-core@npm:^5.0.0, @uniswap/sdk-core@npm:^5.3.1, @uniswap/sdk-core@npm:^5.4.0, @uniswap/sdk-core@npm:^5.8.0, @uniswap/sdk-core@npm:^5.8.1, @uniswap/sdk-core@npm:^5.9.0": + version: 5.9.0 + resolution: "@uniswap/sdk-core@npm:5.9.0" dependencies: "@ethersproject/address": "npm:^5.0.2" "@ethersproject/bytes": "npm:^5.7.0" @@ -7280,7 +7172,7 @@ __metadata: jsbi: "npm:^3.1.4" tiny-invariant: "npm:^1.1.0" toformat: "npm:^2.0.0" - checksum: 10/ff4876ca60a0098de113403f02415a1791a1e339d8349c985ff094ffd3e2c17441ae093129e2eebb656b580dc4e899138c22db6e10234093d9eeac2f317770e5 + checksum: 10/221774e4acd5ca365557998184018a19c009a00c65b359957025ca208a00feb5ec0a83fbc813e515848582bff6e0083e4b60a989c7bf5e28255ff9e7bdc0cf5c languageName: node linkType: hard @@ -7358,22 +7250,22 @@ __metadata: linkType: hard "@uniswap/universal-router-sdk@npm:^3.0.2": - version: 3.1.0 - resolution: "@uniswap/universal-router-sdk@npm:3.1.0" + version: 3.4.0 + resolution: "@uniswap/universal-router-sdk@npm:3.4.0" dependencies: "@openzeppelin/contracts": "npm:4.7.0" "@uniswap/permit2-sdk": "npm:^1.3.0" - "@uniswap/router-sdk": "npm:^1.11.0" - "@uniswap/sdk-core": "npm:^5.3.1" + "@uniswap/router-sdk": "npm:^1.14.0" + "@uniswap/sdk-core": "npm:^5.8.0" "@uniswap/universal-router": "npm:2.0.0-beta.1" "@uniswap/v2-core": "npm:^1.0.1" - "@uniswap/v2-sdk": "npm:^4.4.1" + "@uniswap/v2-sdk": "npm:^4.6.0" "@uniswap/v3-core": "npm:1.0.0" - "@uniswap/v3-sdk": "npm:^3.13.1" - "@uniswap/v4-sdk": "npm:^1.0.0" + "@uniswap/v3-sdk": "npm:^3.17.0" + "@uniswap/v4-sdk": "npm:^1.6.3" bignumber.js: "npm:^9.0.2" ethers: "npm:^5.7.0" - checksum: 10/2e379c44e125de67f9fbb957ae03f3a5b01bf45527a42f6262a994fa1a3f9d666be3e37d1ef4943475b7a1256f2a5c6febebc3471ef1bb5425d01023e25c71a3 + checksum: 10/8da17591a3b9a43a5e9774f61bc7fd26e84096dcec7d8cf257fbe4e5df7acc513839b4c4f787bebcec7618e691b6f6250973f2f00cfc11dee6bc894808c242b9 languageName: node linkType: hard @@ -7420,28 +7312,15 @@ __metadata: linkType: hard "@uniswap/v2-sdk@npm:^4.3.0, @uniswap/v2-sdk@npm:^4.3.2, @uniswap/v2-sdk@npm:^4.6.0": - version: 4.6.1 - resolution: "@uniswap/v2-sdk@npm:4.6.1" - dependencies: - "@ethersproject/address": "npm:^5.0.2" - "@ethersproject/solidity": "npm:^5.0.9" - "@uniswap/sdk-core": "npm:^5.8.1" - tiny-invariant: "npm:^1.1.0" - tiny-warning: "npm:^1.0.3" - checksum: 10/fbc5019379c9da246ba1e15564d235d2cd11967ed87d5993f32954af3f642bc302ecde59ec5d27972676c92a5617e73cc8afebf17904a98e563efdfab6dfacaa - languageName: node - linkType: hard - -"@uniswap/v2-sdk@npm:^4.4.1": - version: 4.4.1 - resolution: "@uniswap/v2-sdk@npm:4.4.1" + version: 4.6.2 + resolution: "@uniswap/v2-sdk@npm:4.6.2" dependencies: "@ethersproject/address": "npm:^5.0.2" "@ethersproject/solidity": "npm:^5.0.9" - "@uniswap/sdk-core": "npm:^5.3.1" + "@uniswap/sdk-core": "npm:^5.9.0" tiny-invariant: "npm:^1.1.0" tiny-warning: "npm:^1.0.3" - checksum: 10/2922e1ba0a3eadcb944072d7c7fc8276004a822571afae9d219684808775e726264f61b8142f09bf80c31b3868f450bff8bc59cfd13b195f65551c129493a037 + checksum: 10/db9943f3a88c1f4a11976c0fbb84de1d8dc258cd4a0f36d2ee0c0f5e4f6e3dde5ac27119898ca803acb3a02dab62cd91d99976a1108da35362251a4d4a68ccfc languageName: node linkType: hard @@ -7489,8 +7368,8 @@ __metadata: linkType: hard "@uniswap/v3-sdk@npm:^3.10.0, @uniswap/v3-sdk@npm:^3.11.0, @uniswap/v3-sdk@npm:^3.13.0, @uniswap/v3-sdk@npm:^3.17.0": - version: 3.17.1 - resolution: "@uniswap/v3-sdk@npm:3.17.1" + version: 3.18.1 + resolution: "@uniswap/v3-sdk@npm:3.18.1" dependencies: "@ethersproject/abi": "npm:^5.5.0" "@ethersproject/solidity": "npm:^5.0.9" @@ -7500,23 +7379,7 @@ __metadata: "@uniswap/v3-staker": "npm:1.0.0" tiny-invariant: "npm:^1.1.0" tiny-warning: "npm:^1.0.3" - checksum: 10/1d74ef81fb2d9280a096f6fa94ef3907e4daf04cd6bcee942aacfb21036ec92d86033fa1c7146b5f49fd2634dc8cd4bcf86ad3daab85a5287b47d00763cb2275 - languageName: node - linkType: hard - -"@uniswap/v3-sdk@npm:^3.11.2, @uniswap/v3-sdk@npm:^3.13.1": - version: 3.14.0 - resolution: "@uniswap/v3-sdk@npm:3.14.0" - dependencies: - "@ethersproject/abi": "npm:^5.5.0" - "@ethersproject/solidity": "npm:^5.0.9" - "@uniswap/sdk-core": "npm:^5.3.1" - "@uniswap/swap-router-contracts": "npm:^1.3.0" - "@uniswap/v3-periphery": "npm:^1.1.1" - "@uniswap/v3-staker": "npm:1.0.0" - tiny-invariant: "npm:^1.1.0" - tiny-warning: "npm:^1.0.3" - checksum: 10/d642cf4a27097ce7f90a85a32c7aee09d943a027c844b35910077659b3ef2f3dc7213350b77c606c8b1be69e85c40d0329f04533b564c7dc02381c3850ff1a9a + checksum: 10/8508bfc64525afa152e46772f4da3204277235955458db7dc9ca569246e3ff51f7ab85874f676ea7067f83dc2a464f44093e8f6eab611c8f80b1a720b7f4aa56 languageName: node linkType: hard @@ -7531,29 +7394,16 @@ __metadata: languageName: node linkType: hard -"@uniswap/v4-sdk@npm:^1.0.0, @uniswap/v4-sdk@npm:^1.6.0": - version: 1.6.3 - resolution: "@uniswap/v4-sdk@npm:1.6.3" - dependencies: - "@ethersproject/solidity": "npm:^5.0.9" - "@uniswap/sdk-core": "npm:^5.3.1" - "@uniswap/v3-sdk": "npm:3.12.0" - tiny-invariant: "npm:^1.1.0" - tiny-warning: "npm:^1.0.3" - checksum: 10/fcba4fb677e91e387542db15fc067dbdf6c9cd847cacd3a72e4a0456378b93d820d51a937ed7c69edd7e0cc793420e85044bdb2be2623d162d1ee04cc347382b - languageName: node - linkType: hard - -"@uniswap/v4-sdk@npm:^1.2.0, @uniswap/v4-sdk@npm:^1.9.0": - version: 1.10.0 - resolution: "@uniswap/v4-sdk@npm:1.10.0" +"@uniswap/v4-sdk@npm:^1.10.3, @uniswap/v4-sdk@npm:^1.2.0, @uniswap/v4-sdk@npm:^1.6.3": + version: 1.11.1 + resolution: "@uniswap/v4-sdk@npm:1.11.1" dependencies: "@ethersproject/solidity": "npm:^5.0.9" "@uniswap/sdk-core": "npm:^5.3.1" "@uniswap/v3-sdk": "npm:3.12.0" tiny-invariant: "npm:^1.1.0" tiny-warning: "npm:^1.0.3" - checksum: 10/2dc2b85543cc5ce74cc6d31f094994cceab88868ec2127e33b500b98261103b1c958dccb5909581096d7b4f3357de75026055432a9b9adc1da2cf0c49e8e9c90 + checksum: 10/879c3c22caffd70bcbbebf9b5d08d5be8d4fb060d634ec5c7aa06e3b2372bed6379f3501d51e5a7baf64bba4c82796ef514dd61bf10f3351a554cea648e07120 languageName: node linkType: hard @@ -7760,8 +7610,8 @@ __metadata: linkType: hard "@vitejs/plugin-react@npm:^4.2.1": - version: 4.3.2 - resolution: "@vitejs/plugin-react@npm:4.3.2" + version: 4.3.3 + resolution: "@vitejs/plugin-react@npm:4.3.3" dependencies: "@babel/core": "npm:^7.25.2" "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" @@ -7770,70 +7620,70 @@ __metadata: react-refresh: "npm:^0.14.2" peerDependencies: vite: ^4.2.0 || ^5.0.0 - checksum: 10/9ff278942d76e21f4680f0f9e4d8d3bfe12fe19701e0f07014dfbff83d772f10237114581a3ec2637c32856d0a99400a14e6cd80969f99b88b1a64227c531ddb + checksum: 10/816b47c54aefce198ce2fb2b3e63b5f158ab33b04713dbec0e780a89c5126d4ea6b08544972464c43096b16e90e7f467fcf19692fad30d4f8ca5bf9a386f38b3 languageName: node linkType: hard -"@vue/compiler-core@npm:3.5.10": - version: 3.5.10 - resolution: "@vue/compiler-core@npm:3.5.10" +"@vue/compiler-core@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-core@npm:3.5.12" dependencies: "@babel/parser": "npm:^7.25.3" - "@vue/shared": "npm:3.5.10" + "@vue/shared": "npm:3.5.12" entities: "npm:^4.5.0" estree-walker: "npm:^2.0.2" source-map-js: "npm:^1.2.0" - checksum: 10/3207883dd018305d3a014c80e17057d1223ae5093c77300b9ad703f8282abf863a2264d8b366cb9fc64a9319e213bf59d8d3419d80f07e2d70a424c0ad1e386b + checksum: 10/287ca30a8e018f438775cdb93fca191e841e359c646a89a0788237e2af2840b04e6fcea8aea00f09b81ca96c16bcab00a53124916d07fb5c1c598dba4a6c560b languageName: node linkType: hard -"@vue/compiler-dom@npm:3.5.10": - version: 3.5.10 - resolution: "@vue/compiler-dom@npm:3.5.10" +"@vue/compiler-dom@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-dom@npm:3.5.12" dependencies: - "@vue/compiler-core": "npm:3.5.10" - "@vue/shared": "npm:3.5.10" - checksum: 10/36f0eb99428bff3d42b490015d9172db0f3ed03f5ad9e6e8fb76b9b7fdb1306bf25002959442c8771a77755ead8aeabc7c6fd8918eb7d34e2c8cf125bd50bcad + "@vue/compiler-core": "npm:3.5.12" + "@vue/shared": "npm:3.5.12" + checksum: 10/7578e7e729f44fd0903cd468255d1d50fe9774073a7f5cb0a5bf4352495712454e3b698abe5b29829cf1b56267162f7e73397979e4dcc472e855192cb2c96008 languageName: node linkType: hard "@vue/compiler-sfc@npm:^3.4.27": - version: 3.5.10 - resolution: "@vue/compiler-sfc@npm:3.5.10" + version: 3.5.12 + resolution: "@vue/compiler-sfc@npm:3.5.12" dependencies: "@babel/parser": "npm:^7.25.3" - "@vue/compiler-core": "npm:3.5.10" - "@vue/compiler-dom": "npm:3.5.10" - "@vue/compiler-ssr": "npm:3.5.10" - "@vue/shared": "npm:3.5.10" + "@vue/compiler-core": "npm:3.5.12" + "@vue/compiler-dom": "npm:3.5.12" + "@vue/compiler-ssr": "npm:3.5.12" + "@vue/shared": "npm:3.5.12" estree-walker: "npm:^2.0.2" magic-string: "npm:^0.30.11" postcss: "npm:^8.4.47" source-map-js: "npm:^1.2.0" - checksum: 10/0047f519a6035c5263f82ab51dfc37e80ba869e1d8a05c15c4aa799b86a44ac8967084f39e2654d0afaa435e9f51625fcd76ff3c93e3352d73128f4603855d0d + checksum: 10/5b2fdbbf381dc684054bcfb7b0945154de658b56b618b2e1637abecd47e070976848a0bfcb2fa0698bab077f0d79ba638f2ec1d180652ca160352c72cf7e6fb3 languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.5.10": - version: 3.5.10 - resolution: "@vue/compiler-ssr@npm:3.5.10" +"@vue/compiler-ssr@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/compiler-ssr@npm:3.5.12" dependencies: - "@vue/compiler-dom": "npm:3.5.10" - "@vue/shared": "npm:3.5.10" - checksum: 10/6c274c6b88151519565827132a80266f1d8aa8d88f901ed465d8034fe8d3bdcdf772036cc45afbe53ca58acd3fc6bcfdc31b9b36453bb2934eff43e631e71d5b + "@vue/compiler-dom": "npm:3.5.12" + "@vue/shared": "npm:3.5.12" + checksum: 10/25b11070503f5380341d37889aa8729987f3884cdda3a01c95323ee41a00f233c6dd7439618b2389dcaa339341776e7bd21780e3416c1ec1fddee45f13f254a7 languageName: node linkType: hard -"@vue/shared@npm:3.5.10": - version: 3.5.10 - resolution: "@vue/shared@npm:3.5.10" - checksum: 10/1f8534a58ed5320c7c5a137ed18fcb21addd3ef1cb155f926d9c815ef90198d9492d3f2aa3ffd3e1d6d7bbfdebde9a9aa5a847a3ff98b442d15eb194afb46ec8 +"@vue/shared@npm:3.5.12": + version: 3.5.12 + resolution: "@vue/shared@npm:3.5.12" + checksum: 10/abe229a09a9513f484a03a8c0e63b90949d9fccf64203c1ad510628305e1fdc0e9d064174df88299409a9fbf0c142e4fbcc0a5449f10728fb12d7e10d825abc5 languageName: node linkType: hard -"@walletconnect/core@npm:2.16.2": - version: 2.16.2 - resolution: "@walletconnect/core@npm:2.16.2" +"@walletconnect/core@npm:2.17.2": + version: 2.17.2 + resolution: "@walletconnect/core@npm:2.17.2" dependencies: "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-provider": "npm:1.0.14" @@ -7846,12 +7696,13 @@ __metadata: "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.16.2" - "@walletconnect/utils": "npm:2.16.2" + "@walletconnect/types": "npm:2.17.2" + "@walletconnect/utils": "npm:2.17.2" + "@walletconnect/window-getters": "npm:1.0.1" events: "npm:3.3.0" lodash.isequal: "npm:4.5.0" uint8arrays: "npm:3.1.0" - checksum: 10/b867127db13594276fcf107c09b94407858fcf7214771c7682ebf1f552b386d1a116332084ce06579466a5db3a19c2750882eb44606743c54ed902ef27c849a1 + checksum: 10/331417457e17e0b0dc4bd805ecd450407ecd50b8c79609b43c7f664a7f9024d490e9d75ed52fb717a44ebc1a12721cc6cfa11d6cfe698af1439755224e225b11 languageName: node linkType: hard @@ -7865,20 +7716,21 @@ __metadata: linkType: hard "@walletconnect/ethereum-provider@npm:^2.10.1, @walletconnect/ethereum-provider@npm:^2.13.0": - version: 2.16.2 - resolution: "@walletconnect/ethereum-provider@npm:2.16.2" + version: 2.17.2 + resolution: "@walletconnect/ethereum-provider@npm:2.17.2" dependencies: "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" - "@walletconnect/modal": "npm:2.6.2" - "@walletconnect/sign-client": "npm:2.16.2" - "@walletconnect/types": "npm:2.16.2" - "@walletconnect/universal-provider": "npm:2.16.2" - "@walletconnect/utils": "npm:2.16.2" + "@walletconnect/keyvaluestorage": "npm:1.1.1" + "@walletconnect/modal": "npm:2.7.0" + "@walletconnect/sign-client": "npm:2.17.2" + "@walletconnect/types": "npm:2.17.2" + "@walletconnect/universal-provider": "npm:2.17.2" + "@walletconnect/utils": "npm:2.17.2" events: "npm:3.3.0" - checksum: 10/b438d11e32d12f58afa6d782defc22f59ef07ecc3eef1d2bf24a500e4e2348168a1cc4185e3fcb4db90fa87c97d5722aca6c49aed5391ba66dc57f317fef8c6a + checksum: 10/23ab84dca911957aa41c4382bf97c1ff0794b3f5b262d3f14546c20b5fdfa6513e77bce69b6c52df0d12af23d5fb9753f0afcaf67fcdf17de4385b64c9c9a34d languageName: node linkType: hard @@ -7985,15 +7837,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/modal-core@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal-core@npm:2.6.2" - dependencies: - valtio: "npm:1.11.2" - checksum: 10/671184da341eebb6b7a3ad7c334851113683d71e6118f7203a377e493b61eb94bc0571484e497e577b9f4d7221a8a7034ad4b52af722c89fa4105627bed638ba - languageName: node - linkType: hard - "@walletconnect/modal-core@npm:2.7.0": version: 2.7.0 resolution: "@walletconnect/modal-core@npm:2.7.0" @@ -8003,18 +7846,6 @@ __metadata: languageName: node linkType: hard -"@walletconnect/modal-ui@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal-ui@npm:2.6.2" - dependencies: - "@walletconnect/modal-core": "npm:2.6.2" - lit: "npm:2.8.0" - motion: "npm:10.16.2" - qrcode: "npm:1.5.3" - checksum: 10/5460ad7f4591c016b723b3f707ac0020e185b60744cf7132b4b4f48d71c87c1c55826f6e11005860f96bd11e0ed3f88da7cda4c0a1c35a0e5b7d6e53bc14cf15 - languageName: node - linkType: hard - "@walletconnect/modal-ui@npm:2.7.0": version: 2.7.0 resolution: "@walletconnect/modal-ui@npm:2.7.0" @@ -8027,17 +7858,7 @@ __metadata: languageName: node linkType: hard -"@walletconnect/modal@npm:2.6.2": - version: 2.6.2 - resolution: "@walletconnect/modal@npm:2.6.2" - dependencies: - "@walletconnect/modal-core": "npm:2.6.2" - "@walletconnect/modal-ui": "npm:2.6.2" - checksum: 10/f8f132c89d1d7f44f2fa564c8d5122163610be4afb0cadc9576c77083471297c37ff62aae3a25492c0ddb480240a2a6ffefe3eba1fd48f1664160c6bac01466d - languageName: node - linkType: hard - -"@walletconnect/modal@npm:^2.6.2": +"@walletconnect/modal@npm:2.7.0, @walletconnect/modal@npm:^2.6.2": version: 2.7.0 resolution: "@walletconnect/modal@npm:2.7.0" dependencies: @@ -8079,20 +7900,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:2.16.2": - version: 2.16.2 - resolution: "@walletconnect/sign-client@npm:2.16.2" +"@walletconnect/sign-client@npm:2.17.2": + version: 2.17.2 + resolution: "@walletconnect/sign-client@npm:2.17.2" dependencies: - "@walletconnect/core": "npm:2.16.2" + "@walletconnect/core": "npm:2.17.2" "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" "@walletconnect/jsonrpc-utils": "npm:1.0.8" "@walletconnect/logger": "npm:2.1.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.16.2" - "@walletconnect/utils": "npm:2.16.2" + "@walletconnect/types": "npm:2.17.2" + "@walletconnect/utils": "npm:2.17.2" events: "npm:3.3.0" - checksum: 10/4b07c859c2d66b53bcef825b5d9374471e711b1f057c523c546d093ee66112e2884ad26dda3c3e2696b1f5abb05a88bab8bf767030e6122e5d2cb460e51a4e7a + checksum: 10/8612aaf1f527d652649babf55e7b735b61cbfc2160f56093f81f7903b5443a22f4ee7a063d2545835a9e869c1bc82034236e221124e3a816858a102275c2fb2d languageName: node linkType: hard @@ -8105,9 +7926,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.16.2": - version: 2.16.2 - resolution: "@walletconnect/types@npm:2.16.2" +"@walletconnect/types@npm:2.17.2": + version: 2.17.2 + resolution: "@walletconnect/types@npm:2.17.2" dependencies: "@walletconnect/events": "npm:1.0.1" "@walletconnect/heartbeat": "npm:1.2.2" @@ -8115,48 +7936,55 @@ __metadata: "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" events: "npm:3.3.0" - checksum: 10/bad714e4681aee92d9aeb112dc1e3df6336a17bb082d67e573c84c935dcee8976c3276d7b38f63d688281fe6d5ab6239528025749324cf9c36bd6e0d6d810a11 + checksum: 10/a668ab7a88b9f5904833f9e0b1bc5ac7501a5bdfdd1c84774464e399f337e31e61da90982bb9bf022ef91398b5e15d74ef368625cce38902c6a7cffb255d46fd languageName: node linkType: hard -"@walletconnect/universal-provider@npm:2.16.2": - version: 2.16.2 - resolution: "@walletconnect/universal-provider@npm:2.16.2" +"@walletconnect/universal-provider@npm:2.17.2": + version: 2.17.2 + resolution: "@walletconnect/universal-provider@npm:2.17.2" dependencies: + "@walletconnect/events": "npm:1.0.1" "@walletconnect/jsonrpc-http-connection": "npm:1.0.8" "@walletconnect/jsonrpc-provider": "npm:1.0.14" "@walletconnect/jsonrpc-types": "npm:1.0.4" "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/logger": "npm:2.1.2" - "@walletconnect/sign-client": "npm:2.16.2" - "@walletconnect/types": "npm:2.16.2" - "@walletconnect/utils": "npm:2.16.2" + "@walletconnect/sign-client": "npm:2.17.2" + "@walletconnect/types": "npm:2.17.2" + "@walletconnect/utils": "npm:2.17.2" events: "npm:3.3.0" - checksum: 10/729af58013c0831d998fd72a64e89512d6311c1bcb6d5167fd5b21ea08a89a078e2c7f5592e1ff346b4ab1245a4a8a5354507b54b625210fc4795f34f1f8e0d3 + lodash: "npm:4.17.21" + checksum: 10/7081d7927df86bea80e056c497db468668369dc2020735da8ff5e687f95504e2b26e667d46bc39617db5141d42279b85a27deee699b046ab634e0f4cfd89e821 languageName: node linkType: hard -"@walletconnect/utils@npm:2.16.2": - version: 2.16.2 - resolution: "@walletconnect/utils@npm:2.16.2" +"@walletconnect/utils@npm:2.17.2": + version: 2.17.2 + resolution: "@walletconnect/utils@npm:2.17.2" dependencies: + "@ethersproject/hash": "npm:5.7.0" + "@ethersproject/transactions": "npm:5.7.0" "@stablelib/chacha20poly1305": "npm:1.0.1" "@stablelib/hkdf": "npm:1.0.1" "@stablelib/random": "npm:1.0.2" "@stablelib/sha256": "npm:1.0.1" "@stablelib/x25519": "npm:1.0.3" + "@walletconnect/jsonrpc-utils": "npm:1.0.8" + "@walletconnect/keyvaluestorage": "npm:1.1.1" "@walletconnect/relay-api": "npm:1.0.11" "@walletconnect/relay-auth": "npm:1.0.4" "@walletconnect/safe-json": "npm:1.0.2" "@walletconnect/time": "npm:1.0.2" - "@walletconnect/types": "npm:2.16.2" + "@walletconnect/types": "npm:2.17.2" "@walletconnect/window-getters": "npm:1.0.1" "@walletconnect/window-metadata": "npm:1.0.1" detect-browser: "npm:5.3.0" - elliptic: "npm:^6.5.7" + elliptic: "npm:6.6.0" query-string: "npm:7.1.3" uint8arrays: "npm:3.1.0" - checksum: 10/21bbfcdb170a661399f6a63be9338bf31492d6f2e62a58589930ad6aca639b7ea691c73ec89e97d8cb95555eaf13b0a4f5746bd20549560244d4348d34f552f1 + checksum: 10/4d43adf7c5d21cc3916a797ff704fa348c7ef9d54184e16f6a9ee8b7d3aa3e58861b1c3a8c6c7bdc5137de67da822689f0035838a4d57d50a03834920cada4b4 languageName: node linkType: hard @@ -8216,9 +8044,9 @@ __metadata: languageName: node linkType: hard -"@web3-onboard/core@npm:2.22.3, @web3-onboard/core@npm:^2.21.1, @web3-onboard/core@npm:^2.22.3": - version: 2.22.3 - resolution: "@web3-onboard/core@npm:2.22.3" +"@web3-onboard/core@npm:2.23.0, @web3-onboard/core@npm:^2.21.1, @web3-onboard/core@npm:^2.22.3": + version: 2.23.0 + resolution: "@web3-onboard/core@npm:2.23.0" dependencies: "@web3-onboard/common": "npm:^2.4.1" bnc-sdk: "npm:^4.6.7" @@ -8232,7 +8060,7 @@ __metadata: svelte: "npm:^3.49.0" svelte-i18n: "npm:^3.3.13" viem: "npm:2.12.0" - checksum: 10/2525bb3b1cf4d893f45fb4f0becd5a889a59b1ba13f02b9f567d988eac57bae28ffd8a37e153bf87595ee15dee316d78938a9e008c241cc82a2b7b215760914c + checksum: 10/4b3c1fdb186c8523d6aa59895be204886ea38ae995f946132b17c6f0509e075e508437548b61b374f09746dba95e0d9fda85c4c9bb4f309263a2e5e29c5b6397 languageName: node linkType: hard @@ -8248,15 +8076,15 @@ __metadata: linkType: hard "@web3-onboard/react@npm:^2.8.9, @web3-onboard/react@npm:^2.9.2": - version: 2.9.3 - resolution: "@web3-onboard/react@npm:2.9.3" + version: 2.10.0 + resolution: "@web3-onboard/react@npm:2.10.0" dependencies: "@web3-onboard/common": "npm:^2.4.1" - "@web3-onboard/core": "npm:2.22.3" + "@web3-onboard/core": "npm:2.23.0" use-sync-external-store: "npm:1.0.0" peerDependencies: react: ">=16.8" - checksum: 10/cd59788e532d7e1085ff0bc24a4bc592a90ef050126d784faf4065cc2ceaf21fd4399030ae22f3f047277bc11506e573a31ce385fd68876873e576e9edee7b19 + checksum: 10/a0018e29222b61274f9bf4c69ac777d4a638bb1d8482c4b8538d45782de2b77737e0ebc01668f6844ff8fb52f5a0cd73ac1b0533a66388ae388376aad61c19eb languageName: node linkType: hard @@ -8397,154 +8225,154 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/ast@npm:1.12.1" +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: - "@webassemblyjs/helper-numbers": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: 10/a775b0559437ae122d14fec0cfe59fdcaf5ca2d8ff48254014fd05d6797e20401e0f1518e628f9b06819aa085834a2534234977f9608b3f2e51f94b6e8b0bc43 + "@webassemblyjs/helper-numbers": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + checksum: 10/f83e6abe38057f5d87c1fb356513a371a8b43c9b87657f2790741a66b1ef8ecf958d1391bc42f27c5fb33f58ab8286a38ea849fdd21f433cd4df1307424bab45 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 10/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: 10/e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: 10/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 10/48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" - checksum: 10/1d8705daa41f4d22ef7c6d422af4c530b84d69d0c253c6db5adec44d511d7caa66837803db5b1addcea611a1498fd5a67d2cf318b057a916283ae41ffb85ba8a +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: 10/9690afeafa5e765a34620aa6216e9d40f9126d4e37e9726a2594bf60cab6b211ef20ab6670fd3c4449dd4a3497e69e49b2b725c8da0fb213208c7f45f15f5d5b languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" - "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" + "@webassemblyjs/helper-api-error": "npm:1.13.2" "@xtuc/long": "npm:4.2.2" - checksum: 10/9ffd258ad809402688a490fdef1fd02222f20cdfe191c895ac215a331343292164e5033dbc0347f0f76f2447865c0b5c2d2e3304ee948d44f7aa27857028fd08 + checksum: 10/e4c7d0b09811e1cda8eec644a022b560b28f4e974f50195375ccd007df5ee48a922a6dcff5ac40b6a8ec850d56d0ea6419318eee49fec7819ede14e90417a6a4 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 10/4ebf03e9c1941288c10e94e0f813f413f972bfaa1f09be2cc2e5577f300430906b61aa24d52f5ef2f894e8e24e61c6f7c39871d7e3d98bc69460e1b8e00bb20b +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 10/3edd191fff7296df1ef3b023bdbe6cb5ea668f6386fd197ccfce46015c6f2a8cc9763cfb86503a0b94973ad27996645afff2252ee39a236513833259a47af6ed languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - checksum: 10/e91e6b28114e35321934070a2db8973a08a5cd9c30500b817214c683bbf5269ed4324366dd93ad83bf2fba0d671ac8f39df1c142bf58f70c57a827eeba4a3d2f + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + checksum: 10/6b73874f906532512371181d7088460f767966f26309e836060c5a8e4e4bfe6d523fb5f4c034b34aa22ebb1192815f95f0e264298769485c1f0980fdd63ae0ce languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/ieee754@npm:1.11.6" +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + checksum: 10/d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/leb128@npm:1.11.6" +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: 10/ec3b72db0e7ce7908fe08ec24395bfc97db486063824c0edc580f0973a4cfbadf30529569d9c7db663a56513e45b94299cca03be9e1992ea3308bb0744164f3d + checksum: 10/3a10542c86807061ec3230bac8ee732289c852b6bceb4b88ebd521a12fbcecec7c432848284b298154f28619e2746efbed19d6904aef06c49ef20a0b85f650cf languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 10/361a537bd604101b320a5604c3c96d1038d83166f1b9fb86cedadc7e81bae54c3785ae5d90bf5b1842f7da08194ccaf0f44a64fcca0cbbd6afe1a166196986d6 +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 10/27885e5d19f339501feb210867d69613f281eda695ac508f04d69fa3398133d05b6870969c0242b054dc05420ed1cc49a64dea4fe0588c18d211cddb0117cc54 languageName: node linkType: hard "@webassemblyjs/wasm-edit@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/helper-wasm-section": "npm:1.12.1" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - "@webassemblyjs/wasm-opt": "npm:1.12.1" - "@webassemblyjs/wasm-parser": "npm:1.12.1" - "@webassemblyjs/wast-printer": "npm:1.12.1" - checksum: 10/5678ae02dbebba2f3a344e25928ea5a26a0df777166c9be77a467bfde7aca7f4b57ef95587e4bd768a402cdf2fddc4c56f0a599d164cdd9fe313520e39e18137 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/helper-wasm-section": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-opt": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + "@webassemblyjs/wast-printer": "npm:1.14.1" + checksum: 10/c62c50eadcf80876713f8c9f24106b18cf208160ab842fcb92060fd78c37bf37e7fcf0b7cbf1afc05d230277c2ce0f3f728432082c472dd1293e184a95f9dbdd languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/ec45bd50e86bc9856f80fe9af4bc1ae5c98fb85f57023d11dff2b670da240c47a7b1b9b6c89755890314212bd167cf3adae7f1157216ddffb739a4ce589fc338 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/6085166b0987d3031355fe17a4f9ef0f412e08098d95454059aced2bd72a4c3df2bc099fa4d32d640551fc3eca1ac1a997b44432e46dc9d84642688e42c17ed4 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - "@webassemblyjs/wasm-parser": "npm:1.12.1" - checksum: 10/21f25ae109012c49bb084e09f3b67679510429adc3e2408ad3621b2b505379d9cce337799a7919ef44db64e0d136833216914aea16b0d4856f353b9778e0cdb7 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + checksum: 10/fa5d1ef8d2156e7390927f938f513b7fb4440dd6804b3d6c8622b7b1cf25a3abf1a5809f615896d4918e04b27b52bc3cbcf18faf2d563cb563ae0a9204a492db languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-api-error": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/f7311685b76c3e1def2abea3488be1e77f06ecd8633143a6c5c943ca289660952b73785231bb76a010055ca64645227a4bc79705c26ab7536216891b6bb36320 + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/07d9805fda88a893c984ed93d5a772d20d671e9731358ab61c6c1af8e0e58d1c42fc230c18974dfddebc9d2dd7775d514ba4d445e70080b16478b4b16c39c7d9 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wast-printer@npm:1.12.1" +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" dependencies: - "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/ast": "npm:1.14.1" "@xtuc/long": "npm:4.2.2" - checksum: 10/1a6a4b6bc4234f2b5adbab0cb11a24911b03380eb1cab6fb27a2250174a279fdc6aa2f5a9cf62dd1f6d4eb39f778f488e8ff15b9deb0670dee5c5077d46cf572 + checksum: 10/cef09aad2fcd291bfcf9efdae2ea1e961a1ba0f925d1d9dcdd8c746d32fbaf431b6d26a0241699c0e39f82139018aa720b4ceb84ac6f4c78f13072747480db69 languageName: node linkType: hard @@ -8641,9 +8469,9 @@ __metadata: linkType: hard "abortcontroller-polyfill@npm:^1.7.5": - version: 1.7.5 - resolution: "abortcontroller-polyfill@npm:1.7.5" - checksum: 10/aac398f7fc076235fe731adaffd2c319fe6c1527af8ca561890242d5396351350e0705726478778dc90326a69a4c044890c156fe867cba7f3ffeb670f8665a51 + version: 1.7.6 + resolution: "abortcontroller-polyfill@npm:1.7.6" + checksum: 10/71d9a380270be5ade5d5aca6cddd08ebd94e3ad2b10a3bcfe179b8c8b6234c426c8a9ab316c5238b52d21edd086417d9c8679b6f1b981f976960ff1d09175c4c languageName: node linkType: hard @@ -8693,15 +8521,6 @@ __metadata: languageName: node linkType: hard -"acorn-import-attributes@npm:^1.9.5": - version: 1.9.5 - resolution: "acorn-import-attributes@npm:1.9.5" - peerDependencies: - acorn: ^8 - checksum: 10/8bfbfbb6e2467b9b47abb4d095df717ab64fce2525da65eabee073e85e7975fb3a176b6c8bba17c99a7d8ede283a10a590272304eb54a93c4aa1af9790d47a8b - languageName: node - linkType: hard - "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -8729,12 +8548,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.12.1, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" +"acorn@npm:^8.14.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" bin: acorn: bin/acorn - checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 + checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2 languageName: node linkType: hard @@ -9408,9 +9227,9 @@ __metadata: linkType: hard "bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.0, bn.js@npm:^4.11.6, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9, bn.js@npm:^4.12.0, bn.js@npm:^4.4.0": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 10/10f8db196d3da5adfc3207d35d0a42aa29033eb33685f20ba2c36cadfe2de63dad05df0a20ab5aae01b418d1c4b3d4d205273085262fa020d17e93ff32b67527 + version: 4.12.1 + resolution: "bn.js@npm:4.12.1" + checksum: 10/07f22df8880b423c4890648e95791319898b96712b6ebc5d6b1082b34074f09dedb8601e717d67f905ce29bb1a5313f9a2b1a2015a679e42c9eed94392c0d379 languageName: node linkType: hard @@ -9580,7 +9399,7 @@ __metadata: languageName: node linkType: hard -"browserify-cipher@npm:^1.0.0": +"browserify-cipher@npm:^1.0.1": version: 1.0.1 resolution: "browserify-cipher@npm:1.0.1" dependencies: @@ -9614,7 +9433,7 @@ __metadata: languageName: node linkType: hard -"browserify-sign@npm:^4.0.0": +"browserify-sign@npm:^4.2.3": version: 4.2.3 resolution: "browserify-sign@npm:4.2.3" dependencies: @@ -9655,17 +9474,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.10, browserslist@npm:^4.23.1": - version: 4.24.0 - resolution: "browserslist@npm:4.24.0" +"browserslist@npm:^4.24.0": + version: 4.24.2 + resolution: "browserslist@npm:4.24.2" dependencies: - caniuse-lite: "npm:^1.0.30001663" - electron-to-chromium: "npm:^1.5.28" + caniuse-lite: "npm:^1.0.30001669" + electron-to-chromium: "npm:^1.5.41" node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.0" + update-browserslist-db: "npm:^1.1.1" bin: browserslist: cli.js - checksum: 10/26c1b8ba257a0b51b102080ba9d42945af2abaa8c4cf6da21cd47b3f123fc1e81640203b293214356c2c17d9d265bb3a5ed428b6d302f383576dd6ce8fd5036c + checksum: 10/f8a9d78bbabe466c57ffd5c50a9e5582a5df9aa68f43078ca62a9f6d0d6c70ba72eca72d0a574dbf177cf55cdca85a46f7eb474917a47ae5398c66f8b76f7d1c languageName: node linkType: hard @@ -9755,9 +9574,9 @@ __metadata: linkType: hard "bufio@npm:^1.0.7": - version: 1.2.1 - resolution: "bufio@npm:1.2.1" - checksum: 10/c8920ee0d765eb97d218643705346c3360ae6227414df7b3f345932531b85d18fe385d0740e1bcda6225fa082a179910679f444a6de5aec7aecd176a01e40573 + version: 1.2.2 + resolution: "bufio@npm:1.2.2" + checksum: 10/dcf0ab4f753a0af1c4215b41bd12596038d3111299673dd14aeee55206a6aa53b44292dc965cef0a41b008ddaeb38ccc9165f2d1cad0da5c8ba3754ef4b45aa1 languageName: node linkType: hard @@ -9881,7 +9700,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" dependencies: @@ -9932,10 +9751,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001154, caniuse-lite@npm:^1.0.30001663": - version: 1.0.30001664 - resolution: "caniuse-lite@npm:1.0.30001664" - checksum: 10/ff237f6bbb59564d2a7219fe9a799a59692403115500f7548a77f1f6b82e33fd136375003f80c8df88a64048f699f9f917292ca4cac0dd8a789d2d35fba6269b +"caniuse-lite@npm:^1.0.30001154, caniuse-lite@npm:^1.0.30001669": + version: 1.0.30001680 + resolution: "caniuse-lite@npm:1.0.30001680" + checksum: 10/38ec7e06e18ef1040740f93dff65dc4c9a7593376a783a96370f3845c586ed1d464e26b992d97919938fb07b68a4f2fb1609f66c586c3f1e7310e6511b81793f languageName: node linkType: hard @@ -9970,11 +9789,11 @@ __metadata: linkType: hard "cborg@npm:^4.0.0": - version: 4.2.4 - resolution: "cborg@npm:4.2.4" + version: 4.2.6 + resolution: "cborg@npm:4.2.6" bin: cborg: lib/bin.js - checksum: 10/b85fa8538f5c0575c511776555a58ba60ea10a56cdf19bd15d66d71e02215901f74536834eef28353f0a6dbbd13ac7335019b15041272a5288f4105b10a736ff + checksum: 10/56657cfdd42ff004f24fcf60973356245e6551ab87f710f58fc989d4225becd00f9d79e1ef21d57e37f4c08a988c5210443230eec72675c9fd73533d461e174d languageName: node linkType: hard @@ -10009,7 +9828,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.1, chalk@npm:^2.4.1, chalk@npm:^2.4.2": +"chalk@npm:^2.0.1, chalk@npm:^2.4.1": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -10446,7 +10265,7 @@ __metadata: languageName: node linkType: hard -"cookie-es@npm:^1.1.0": +"cookie-es@npm:^1.2.2": version: 1.2.2 resolution: "cookie-es@npm:1.2.2" checksum: 10/0fd742c11caa185928e450543f84df62d4b2c1fc7b5041196b57b7db04e1c6ac6585fb40e4f579a2819efefd2d6a9cbb4d17f71240d05f4dcd8f74ae81341a20 @@ -10460,10 +10279,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.6.0": - version: 0.6.0 - resolution: "cookie@npm:0.6.0" - checksum: 10/c1f8f2ea7d443b9331680598b0ae4e6af18a618c37606d1bbdc75bec8361cce09fe93e727059a673f2ba24467131a9fb5a4eec76bb1b149c1b3e1ccb268dc583 +"cookie@npm:0.7.1": + version: 0.7.1 + resolution: "cookie@npm:0.7.1" + checksum: 10/aec6a6aa0781761bf55d60447d6be08861d381136a0fe94aa084fddd4f0300faa2b064df490c6798adfa1ebaef9e0af9b08a189c823e0811b8b313b3d9a03380 languageName: node linkType: hard @@ -10477,9 +10296,9 @@ __metadata: linkType: hard "core-js-pure@npm:^3.30.2": - version: 3.38.1 - resolution: "core-js-pure@npm:3.38.1" - checksum: 10/7dfd59bf3a09277056ac2ef87e49b49d77340952e99ee12b3e1e53bf7e1f34a8ee1fb6026f286b1ba29957f5728664430ccd1ff86983c7ae5fa411d4da74d3de + version: 3.39.0 + resolution: "core-js-pure@npm:3.39.0" + checksum: 10/43922b14f9c928ec958fc444e70cfb429a21e3f842f03f67810faf29a99780fec20dc688f65ab3780d2b8a2f1ae8287464ec5adb396826e0374a4f2907b4b383 languageName: node linkType: hard @@ -10491,9 +10310,9 @@ __metadata: linkType: hard "core-js@npm:^3.31.1": - version: 3.38.1 - resolution: "core-js@npm:3.38.1" - checksum: 10/3c25fdf0b2595ed37ceb305213a61e2cf26185f628455e99d1c736dda5f69e2de4de7126e6a1da136f54260c4fcc982c4215e37b5a618790a597930f854c0a37 + version: 3.39.0 + resolution: "core-js@npm:3.39.0" + checksum: 10/a3d34e669783dfc878e545f1983f60d9ff48a3867cd1d7ff8839b849e053002a208c7c14a5ca354b8e0b54982901e2f83dc87c3d9b95de0a94b4071d1c74e5f6 languageName: node linkType: hard @@ -10573,7 +10392,7 @@ __metadata: languageName: node linkType: hard -"create-ecdh@npm:^4.0.0": +"create-ecdh@npm:^4.0.4": version: 4.0.4 resolution: "create-ecdh@npm:4.0.4" dependencies: @@ -10622,7 +10441,7 @@ __metadata: languageName: node linkType: hard -"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": +"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": version: 1.1.7 resolution: "create-hmac@npm:1.1.7" dependencies: @@ -10662,44 +10481,42 @@ __metadata: linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" + version: 7.0.5 + resolution: "cross-spawn@npm:7.0.5" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce + checksum: 10/c95062469d4bdbc1f099454d01c0e77177a3733012d41bf907a71eb8d22d2add43b5adf6a0a14ef4e7feaf804082714d6c262ef4557a1c480b86786c120d18e2 languageName: node linkType: hard -"crossws@npm:^0.2.4": - version: 0.2.4 - resolution: "crossws@npm:0.2.4" - peerDependencies: - uWebSockets.js: "*" - peerDependenciesMeta: - uWebSockets.js: - optional: true - checksum: 10/f8ece87d1737f370f2e4802d5423b24bbe9286dd6f3b0111d00beaf2d16879dc8d332cfc5e42312425a6f1a1010fb72a6e7d4af33fc4fa0c9c6547843d87fcb6 +"crossws@npm:>=0.2.0 <0.4.0": + version: 0.3.1 + resolution: "crossws@npm:0.3.1" + dependencies: + uncrypto: "npm:^0.1.3" + checksum: 10/d358a58b364b3314a0e42ee66b1432c01d416128e53eda983eb121abdad5ff39831a1f1ea3e90e80157ceaa0fc925f5193c151b156aa62af9e0c9bcb2fb2a15a languageName: node linkType: hard "crypto-browserify@npm:^3.11.0, crypto-browserify@npm:^3.12.0": - version: 3.12.0 - resolution: "crypto-browserify@npm:3.12.0" + version: 3.12.1 + resolution: "crypto-browserify@npm:3.12.1" dependencies: - browserify-cipher: "npm:^1.0.0" - browserify-sign: "npm:^4.0.0" - create-ecdh: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - create-hmac: "npm:^1.1.0" - diffie-hellman: "npm:^5.0.0" - inherits: "npm:^2.0.1" - pbkdf2: "npm:^3.0.3" - public-encrypt: "npm:^4.0.0" - randombytes: "npm:^2.0.0" - randomfill: "npm:^1.0.3" - checksum: 10/5ab534474e24c8c3925bd1ec0de57c9022329cb267ca8437f1e3a7200278667c0bea0a51235030a9da3165c1885c73f51cfbece1eca31fd4a53cfea23f628c9b + browserify-cipher: "npm:^1.0.1" + browserify-sign: "npm:^4.2.3" + create-ecdh: "npm:^4.0.4" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + diffie-hellman: "npm:^5.0.3" + hash-base: "npm:~3.0.4" + inherits: "npm:^2.0.4" + pbkdf2: "npm:^3.1.2" + public-encrypt: "npm:^4.0.3" + randombytes: "npm:^2.1.0" + randomfill: "npm:^1.0.4" + checksum: 10/13da0b5f61b3e8e68fcbebf0394f2b2b4d35a0d0ba6ab762720c13391d3697ea42735260a26328a6a3d872be7d4cb5abe98a7a8f88bc93da7ba59b993331b409 languageName: node linkType: hard @@ -11245,7 +11062,7 @@ __metadata: languageName: node linkType: hard -"diffie-hellman@npm:^5.0.0": +"diffie-hellman@npm:^5.0.3": version: 5.0.3 resolution: "diffie-hellman@npm:5.0.3" dependencies: @@ -11388,9 +11205,9 @@ __metadata: linkType: hard "dompurify@npm:^3.0.2": - version: 3.1.7 - resolution: "dompurify@npm:3.1.7" - checksum: 10/dc637a064306f83cf911caa267ffe1f973552047602020e3b6723c90f67962813edf8a65a0b62e8c9bc13fcd173a2691212a3719bc116226967f46bcd6181277 + version: 3.2.0 + resolution: "dompurify@npm:3.2.0" + checksum: 10/d9139fdc69e95efe43d154362216a9a6768c3a238b02b988a7ac0ddd044a992422d6c5fae5b319ab47aef8465824a815d104b843800b294352657f70d5168bfa languageName: node linkType: hard @@ -11538,10 +11355,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.5.28": - version: 1.5.29 - resolution: "electron-to-chromium@npm:1.5.29" - checksum: 10/a87354db605ffdb89618c328ecc492846f8685f5ba040b9c8b511ef7a1a8e0c8999eb1ce2ea7bac30624637200f31dd1da5dc0cb3b2841ea828790f894a9ec37 +"electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.5.41": + version: 1.5.57 + resolution: "electron-to-chromium@npm:1.5.57" + checksum: 10/7a365a20ce0a36a5688958d295440fe9515465c8d43841d7e6c3f822e2e04a655b5e98d29f1613f4ca8fb3f522944bcedf5486a35bd943db08a648611df29a24 languageName: node linkType: hard @@ -11590,9 +11407,24 @@ __metadata: languageName: node linkType: hard +"elliptic@npm:6.6.0": + version: 6.6.0 + resolution: "elliptic@npm:6.6.0" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10/27575b0403e010e5d7e7a131fcadce6a7dd1ae82ccb24cc7c20b275d32ab1cb7ecb6a070225795df08407441dc8c7a32efd986596d48d1d6846f64ff8f094af7 + languageName: node + linkType: hard + "elliptic@npm:^6.4.0, elliptic@npm:^6.4.1, elliptic@npm:^6.5.2, elliptic@npm:^6.5.3, elliptic@npm:^6.5.4, elliptic@npm:^6.5.5, elliptic@npm:^6.5.7": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -11601,7 +11433,7 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10/fbad1fad0a5cc07df83f80cc1f7a784247ef59075194d3e340eaeb2f4dd594825ee24c7e9b0cf279c9f1982efe610503bb3139737926428c4821d4fca1bcf348 + checksum: 10/dc678c9febd89a219c4008ba3a9abb82237be853d9fd171cd602c8fb5ec39927e65c6b5e7a1b2a4ea82ee8e0ded72275e7932bb2da04a5790c2638b818e4e1c5 languageName: node linkType: hard @@ -11613,30 +11445,30 @@ __metadata: linkType: hard "embla-carousel-react@npm:^8.1.6": - version: 8.3.0 - resolution: "embla-carousel-react@npm:8.3.0" + version: 8.3.1 + resolution: "embla-carousel-react@npm:8.3.1" dependencies: - embla-carousel: "npm:8.3.0" - embla-carousel-reactive-utils: "npm:8.3.0" + embla-carousel: "npm:8.3.1" + embla-carousel-reactive-utils: "npm:8.3.1" peerDependencies: - react: ^16.8.0 || ^17.0.1 || ^18.0.0 - checksum: 10/48b71504208741d051f09d26ec7925c4470c0c7b9dce1275079d1ab1a32f7892456b953df2836f1be7555061aaac595509d78ab12c0e1370dd7f77df682639f6 + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + checksum: 10/24e1bed7298d458d0bb61b9f1f6f2e7645be85816861d3a3598ce6af4961fee2a61f45bb1d3fc78fca95a16518c2dd139b6de9c25bf9c13ab435af646715f595 languageName: node linkType: hard -"embla-carousel-reactive-utils@npm:8.3.0": - version: 8.3.0 - resolution: "embla-carousel-reactive-utils@npm:8.3.0" +"embla-carousel-reactive-utils@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel-reactive-utils@npm:8.3.1" peerDependencies: - embla-carousel: 8.3.0 - checksum: 10/8d1db9a65455dbbee4de7e163c470b2a7552dee13153e95c8754d37389e29dbd03b9a7b11018c84ed59b4db616846cf39de8ea828f50945ab9ea1e99fe9e7289 + embla-carousel: 8.3.1 + checksum: 10/279c6ea265fd34acc524036985e36cc869e9500f4a557fa13a3a354c78ecc55cf0e0b814ce40a035bcc78bfce0aa049bf965675cb0cafb18aad72049615363e2 languageName: node linkType: hard -"embla-carousel@npm:8.3.0": - version: 8.3.0 - resolution: "embla-carousel@npm:8.3.0" - checksum: 10/939db8fbe604f1d46a1c3150bf8be7f5a566924e426a02762c0c97dcf474973fdb128a113d96a57e953753657fb69298f31247e7dfbc4d820fbb691c54502249 +"embla-carousel@npm:8.3.1": + version: 8.3.1 + resolution: "embla-carousel@npm:8.3.1" + checksum: 10/fd5e0960563909012428fb0e562773a56c40209e94b9adf2d8823dad04154c620d400232c89a8b4fdaebed1b81976b81a1f7227233e539a9552bdba86473a7b5 languageName: node linkType: hard @@ -11728,15 +11560,15 @@ __metadata: linkType: hard "engine.io-client@npm:~6.6.1": - version: 6.6.1 - resolution: "engine.io-client@npm:6.6.1" + version: 6.6.2 + resolution: "engine.io-client@npm:6.6.2" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" debug: "npm:~4.3.1" engine.io-parser: "npm:~5.2.1" ws: "npm:~8.17.1" xmlhttprequest-ssl: "npm:~2.1.1" - checksum: 10/9346c3ee60ebb7a58966e927e479b8b3c5d6bc82788ad5efc38b976c4a3b2b27420d08cb29b84de8213004d49bdeed47ecd473b427498e54301a8853cd85e0c9 + checksum: 10/c006b3389bb8bd0381926b9633e9f547dec187ea28d2dd99cb42d516b0720bc4373f3f937c199ca616c95b2832e0f547f73326f614caedfe39c02fa93b7ac733 languageName: node linkType: hard @@ -12169,11 +12001,11 @@ __metadata: linkType: hard "eslint-plugin-react-refresh@npm:^0.4.6": - version: 0.4.12 - resolution: "eslint-plugin-react-refresh@npm:0.4.12" + version: 0.4.14 + resolution: "eslint-plugin-react-refresh@npm:0.4.14" peerDependencies: eslint: ">=7" - checksum: 10/448d0a387ca4d7913534ac7bee3e7b8708236a6cef4cccf9a50e739d6d3c8d236cdbd7e360ea643c7767092a93acf30a8e5fac91f05b175c45d20ce138947bcc + checksum: 10/295ddf50cbe03187133f855f76baf88c92ce487971cdbc0ab33e037dc5d3d187fe2f809633eaa94da2769859963664b8c5b745db4812c644a1c535fe8823a045 languageName: node linkType: hard @@ -12197,7 +12029,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b @@ -12690,15 +12522,15 @@ __metadata: linkType: hard "express@npm:^4.14.0": - version: 4.21.0 - resolution: "express@npm:4.21.0" + version: 4.21.1 + resolution: "express@npm:4.21.1" dependencies: accepts: "npm:~1.3.8" array-flatten: "npm:1.1.1" body-parser: "npm:1.20.3" content-disposition: "npm:0.5.4" content-type: "npm:~1.0.4" - cookie: "npm:0.6.0" + cookie: "npm:0.7.1" cookie-signature: "npm:1.0.6" debug: "npm:2.6.9" depd: "npm:2.0.0" @@ -12724,7 +12556,7 @@ __metadata: type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 10/3b1ee5bc5b1bd996f688702519cebc9b63a24e506965f6e1773268238cfa2c24ffdb38cc3fcb4fde66f77de1c0bebd9ee058dad06bb9c6f084b525f3c09164d3 + checksum: 10/5d4a36dd03c1d1cce93172e9b185b5cd13a978d29ee03adc51cd278be7b4a514ae2b63e2fdaec0c00fdc95c6cfb396d9dd1da147917ffd337d6cd0778e08c9bc languageName: node linkType: hard @@ -12837,9 +12669,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.2 - resolution: "fast-uri@npm:3.0.2" - checksum: 10/99224f0198e24a4072b9a8a25fc5fa553aa0153e00d29d41272096a6d97be417c9faa5978682868cbba46b09066dc9348563c7244057f3818067e7737db153b2 + version: 3.0.3 + resolution: "fast-uri@npm:3.0.3" + checksum: 10/92487c75848b03edc45517fca0148287d342c30818ce43d556391db774d8e01644fb6964315a3336eec5a90f301b218b21f71fb9b2528ba25757435a20392c95 languageName: node linkType: hard @@ -12992,28 +12824,29 @@ __metadata: linkType: hard "firebase@npm:^10.12.2": - version: 10.13.2 - resolution: "firebase@npm:10.13.2" + version: 10.14.1 + resolution: "firebase@npm:10.14.1" dependencies: "@firebase/analytics": "npm:0.10.8" "@firebase/analytics-compat": "npm:0.2.14" - "@firebase/app": "npm:0.10.11" + "@firebase/app": "npm:0.10.13" "@firebase/app-check": "npm:0.8.8" "@firebase/app-check-compat": "npm:0.3.15" - "@firebase/app-compat": "npm:0.2.41" + "@firebase/app-compat": "npm:0.2.43" "@firebase/app-types": "npm:0.9.2" "@firebase/auth": "npm:1.7.9" "@firebase/auth-compat": "npm:0.5.14" + "@firebase/data-connect": "npm:0.1.0" "@firebase/database": "npm:1.0.8" "@firebase/database-compat": "npm:1.0.8" - "@firebase/firestore": "npm:4.7.2" - "@firebase/firestore-compat": "npm:0.3.37" + "@firebase/firestore": "npm:4.7.3" + "@firebase/firestore-compat": "npm:0.3.38" "@firebase/functions": "npm:0.11.8" "@firebase/functions-compat": "npm:0.3.14" "@firebase/installations": "npm:0.6.9" "@firebase/installations-compat": "npm:0.2.9" - "@firebase/messaging": "npm:0.12.11" - "@firebase/messaging-compat": "npm:0.2.11" + "@firebase/messaging": "npm:0.12.12" + "@firebase/messaging-compat": "npm:0.2.12" "@firebase/performance": "npm:0.6.9" "@firebase/performance-compat": "npm:0.2.9" "@firebase/remote-config": "npm:0.4.9" @@ -13022,7 +12855,7 @@ __metadata: "@firebase/storage-compat": "npm:0.3.12" "@firebase/util": "npm:1.10.0" "@firebase/vertexai-preview": "npm:0.0.4" - checksum: 10/c91a047b34f3e2a0b0f563a4b9b4aca4887c0052f82819384acc482c1523c83c108d47eb8a96aa2adce94e07d0f9eeabbd7fd4d2b4fde1e2706fb90a6aea2db1 + checksum: 10/1b2fd7b653f632d2bb0cf3b87e7eda0ae69d28b702a7de00d2a166c7985b8747ef9d15f7ac151847d242f91a1cb08c689d0a07197e8b80561ff1a679398bf9f8 languageName: node linkType: hard @@ -13102,24 +12935,24 @@ __metadata: linkType: hard "form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" + version: 3.0.2 + resolution: "form-data@npm:3.0.2" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10/944b40ff63b9cb1ca7a97e70f72104c548e0b0263e3e817e49919015a0d687453086259b93005389896dbffd3777cccea2e67c51f4e827590e5979b14ff91bf7 + checksum: 10/b8d71d7149de5881c6c8ac75c03ac2e809b1b729399320cc41f59a63043fa34b95dfef5259212d6d902abb4916af48a7ca60ad5c035806ba8e3c7843dbaf3057 languageName: node linkType: hard "form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" + version: 4.0.1 + resolution: "form-data@npm:4.0.1" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 + checksum: 10/6adb1cff557328bc6eb8a68da205f9ae44ab0e88d4d9237aaf91eed591ffc64f77411efb9016af7d87f23d0a038c45a788aa1c6634e51175c4efa36c2bc53774 languageName: node linkType: hard @@ -13622,21 +13455,21 @@ __metadata: languageName: node linkType: hard -"h3@npm:^1.12.0": - version: 1.12.0 - resolution: "h3@npm:1.12.0" +"h3@npm:^1.12.0, h3@npm:^1.13.0": + version: 1.13.0 + resolution: "h3@npm:1.13.0" dependencies: - cookie-es: "npm:^1.1.0" - crossws: "npm:^0.2.4" + cookie-es: "npm:^1.2.2" + crossws: "npm:>=0.2.0 <0.4.0" defu: "npm:^6.1.4" destr: "npm:^2.0.3" - iron-webcrypto: "npm:^1.1.1" - ohash: "npm:^1.1.3" + iron-webcrypto: "npm:^1.2.1" + ohash: "npm:^1.1.4" radix3: "npm:^1.1.2" - ufo: "npm:^1.5.3" + ufo: "npm:^1.5.4" uncrypto: "npm:^0.1.3" - unenv: "npm:^1.9.0" - checksum: 10/59c7a3818e863c84a32110cf4ee26ac6deb39b99527c483e56c4334b1cadb77ffca2895472b7af227a205757a5b27da43b73a057cb113b7769547062ace89cc7 + unenv: "npm:^1.10.0" + checksum: 10/ecdbe3cdddc767ea6f9be9939b14192dd296eb434641bbecc5b665f7210de8c03910ae40931668788395b5de6cd517afaa628d7b5ce0fb60786fce1ad6e81bcb languageName: node linkType: hard @@ -13732,7 +13565,7 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:~3.0": +"hash-base@npm:~3.0, hash-base@npm:~3.0.4": version: 3.0.4 resolution: "hash-base@npm:3.0.4" dependencies: @@ -13819,10 +13652,17 @@ __metadata: languageName: node linkType: hard +"highlightjs-vue@npm:^1.0.0": + version: 1.0.0 + resolution: "highlightjs-vue@npm:1.0.0" + checksum: 10/44c9187a19fa3c7eac16bf1d327c03cb07c4b444f744624eaf873eb55e4e449a0bb6573b8ba5982006b65743707d6cad39cfc404f3fe5fb8aeb740a57ff6bc24 + languageName: node + linkType: hard + "hls.js@npm:^1.4.12": - version: 1.5.15 - resolution: "hls.js@npm:1.5.15" - checksum: 10/58dd5c70e233a3d66ebba9f55bfbe6673ac9d941d391afd896d44e7a141cba931fd25c392133c13f65fbd82e85e1575ada68a2722d1da38b6ad7b9b6a93a6a6b + version: 1.5.17 + resolution: "hls.js@npm:1.5.17" + checksum: 10/8d6fa42a2c1a6ba66a8ccefda806d7a1aedcbe718224f3c7444fc80472c95a75cde439c8c16c6a65d43062347841fa68562e496d27dd74779fe68925d7d296a5 languageName: node linkType: hard @@ -14494,7 +14334,7 @@ __metadata: languageName: node linkType: hard -"iron-webcrypto@npm:^1.1.1": +"iron-webcrypto@npm:^1.2.1": version: 1.2.1 resolution: "iron-webcrypto@npm:1.2.1" checksum: 10/c1f52ccfe2780efa5438c134538ee4b26c96a87d22f351d896781219efbce25b4fe716d1cb7f248e02da96881760541135acbcc7c0622ffedf71cb0e227bebf9 @@ -15198,12 +15038,12 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.0.0": - version: 2.0.0 - resolution: "jiti@npm:2.0.0" +"jiti@npm:^2.1.2": + version: 2.4.0 + resolution: "jiti@npm:2.4.0" bin: jiti: lib/jiti-cli.mjs - checksum: 10/2fdb08483c7beb1f75449b721bc0273d3eeb9008d2a3031ed24437c0e6b599813d6b531d5380331396df6f52db16f5a1c7657bfaeecee19d2e07e6f7753e7fa1 + checksum: 10/10aa999a4f9bccc82b1dab9ebaf4484a8770450883c1bf7fafc07f8fca1e417fd8e7731e651337d1060c9e2ff3f97362dcdfd27e86d1f385db97f4adf7b5a21d languageName: node linkType: hard @@ -15358,15 +15198,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13 - languageName: node - linkType: hard - "jsesc@npm:^3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" @@ -15791,21 +15622,21 @@ __metadata: languageName: node linkType: hard -"listhen@npm:^1.7.2": - version: 1.8.0 - resolution: "listhen@npm:1.8.0" +"listhen@npm:^1.9.0": + version: 1.9.0 + resolution: "listhen@npm:1.9.0" dependencies: "@parcel/watcher": "npm:^2.4.1" "@parcel/watcher-wasm": "npm:^2.4.1" citty: "npm:^0.1.6" clipboardy: "npm:^4.0.0" consola: "npm:^3.2.3" - crossws: "npm:^0.2.4" + crossws: "npm:>=0.2.0 <0.4.0" defu: "npm:^6.1.4" get-port-please: "npm:^3.1.2" h3: "npm:^1.12.0" http-shutdown: "npm:^1.2.2" - jiti: "npm:^2.0.0" + jiti: "npm:^2.1.2" mlly: "npm:^1.7.1" node-forge: "npm:^1.3.1" pathe: "npm:^1.1.2" @@ -15816,7 +15647,7 @@ __metadata: bin: listen: bin/listhen.mjs listhen: bin/listhen.mjs - checksum: 10/79fba7a69c971fbd67226b52f44367e9bd3a2e587dce3df620509ca101d7c5e7cb2ac386a669dedf353831a6ea61279764082f6160bf8f789a14662444baa24b + checksum: 10/72b869c8604301352c5d5825a7737705f0df2ce1795af8e779b6f956ba71302e13b12b2d35142687fb4e1e8ccc2747e2be3c9cbf20f7f96b73f897881aa3c384 languageName: node linkType: hard @@ -16072,7 +15903,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.11, lodash@npm:^4.17.21": +"lodash@npm:4.17.21, lodash@npm:^4.17.11, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -16216,11 +16047,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.11, magic-string@npm:^0.30.3": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" + version: 0.30.12 + resolution: "magic-string@npm:0.30.12" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10/b784d2240252f5b1e755d487354ada4c672cbca16f045144f7185a75b059210e5fcca7be7be03ef1bac2ca754c4428b21d36ae64a9057ba429916f06b8c54eb2 + checksum: 10/98016180a52b28efc1362152b45671067facccdaead6b70c1c14c566cba98491bc2e1336474b0996397730dca24400e85649da84d3da62b2560ed03c067573e6 languageName: node linkType: hard @@ -16681,14 +16512,14 @@ __metadata: linkType: hard "mlly@npm:^1.7.1, mlly@npm:^1.7.2": - version: 1.7.2 - resolution: "mlly@npm:1.7.2" + version: 1.7.3 + resolution: "mlly@npm:1.7.3" dependencies: - acorn: "npm:^8.12.1" + acorn: "npm:^8.14.0" pathe: "npm:^1.1.2" - pkg-types: "npm:^1.2.0" + pkg-types: "npm:^1.2.1" ufo: "npm:^1.5.4" - checksum: 10/c28e9f32cfc7b204e4d089a9af01b6af30547f39dd97244486fe208523c1453828b694430ebfa2d06297116861d464f150d3273040bf5e11ef5a357958f142d5 + checksum: 10/77921e4b37f48e939b9879dbf3d3734086a69a97ddfe9adc5ae7b026ee2f73a0bcac4511c6c645cee79ccc2852c24b83f93bfd29ada7a7a3259cb943569fc7f6 languageName: node linkType: hard @@ -16729,7 +16560,7 @@ __metadata: languageName: node linkType: hard -"mri@npm:^1.1.0, mri@npm:^1.2.0": +"mri@npm:^1.1.0": version: 1.2.0 resolution: "mri@npm:1.2.0" checksum: 10/6775a1d2228bb9d191ead4efc220bd6be64f943ad3afd4dcb3b3ac8fc7b87034443f666e38805df38e8d047b29f910c3cc7810da0109af83e42c82c73bd3f6bc @@ -16899,9 +16730,9 @@ __metadata: linkType: hard "multiformats@npm:^13.0.0, multiformats@npm:^13.1.0": - version: 13.3.0 - resolution: "multiformats@npm:13.3.0" - checksum: 10/59c75b08f54593e355b3a5b35e8693f9e3b7f04b860cf6e39aca2d2245073c8ebfdfa31ca9ee1a08fdaffdc737476484cf509f632d28048127baa962b70d23d8 + version: 13.3.1 + resolution: "multiformats@npm:13.3.1" + checksum: 10/2e529613d457590dffe212a658546f313c7c7296d240d952d2baee7ce0abb227116d784f05cf4d238ef0db7d72ad2c3d04ea3c6b9bfd20db805a092024ce8d7e languageName: node linkType: hard @@ -17011,11 +16842,11 @@ __metadata: linkType: hard "nan@npm:^2.14.0, nan@npm:^2.14.2": - version: 2.20.0 - resolution: "nan@npm:2.20.0" + version: 2.22.0 + resolution: "nan@npm:2.22.0" dependencies: node-gyp: "npm:latest" - checksum: 10/5f16e4c9953075d9920229c703c1d781c0b74118ce3d9e926b448a4eef92b7d8be5ac6adc748a13a5fafb594436cbfe63250e3471aefdd78e3a0cd14603b9ba7 + checksum: 10/ab165ba910e549fcc21fd561a33f534d86e81ae36c97b1019dcfe506b09692ff867c97794a54b49c9a83b8b485f529f0f58d24966c3a11863c97dc70814f4d50 languageName: node linkType: hard @@ -17161,13 +16992,20 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 languageName: node linkType: hard +"negotiator@npm:^0.6.3": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10/d98c04a136583afd055746168f1067d58ce4bfe6e4c73ca1d339567f81ea1f7e665b5bd1e81f4771c67b6c2ea89b21cb2adaea2b16058c7dc31317778f931dab + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -17201,6 +17039,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^5.0.0": + version: 5.1.0 + resolution: "node-addon-api@npm:5.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10/595f59ffb4630564f587c502119cbd980d302e482781021f3b479f5fc7e41cf8f2f7280fdc2795f32d148e4f3259bd15043c52d4a3442796aa6f1ae97b959636 + languageName: node + linkType: hard + "node-addon-api@npm:^7.0.0": version: 7.1.1 resolution: "node-addon-api@npm:7.1.1" @@ -17255,13 +17102,13 @@ __metadata: linkType: hard "node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": - version: 4.8.2 - resolution: "node-gyp-build@npm:4.8.2" + version: 4.8.3 + resolution: "node-gyp-build@npm:4.8.3" bin: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 10/e3a365eed7a2d950864a1daa34527588c16fe43ae189d0aeb8fd1dfec91ba42a0e1b499322bff86c2832029fec4f5901bf26e32005e1e17a781dcd5177b6a657 + checksum: 10/4cdc07c940bc1ae484d4d62b0627c80bfb5018e597f2c68c0a7a80b17e9b9cef9d566ec52150ff6f867dd42788eff97a3bcf5cb5b4679ef74954b2df2ac57c02 languageName: node linkType: hard @@ -17435,9 +17282,9 @@ __metadata: linkType: hard "object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561 + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 10/14cb973d8381c69e14d7f1c8c75044eb4caf04c6dabcf40ca5c2ce42dc2073ae0bb2a9939eeca142b0c05215afaa1cd5534adb7c8879c32cba2576e045ed8368 languageName: node linkType: hard @@ -17486,18 +17333,18 @@ __metadata: languageName: node linkType: hard -"ofetch@npm:^1.3.4": - version: 1.4.0 - resolution: "ofetch@npm:1.4.0" +"ofetch@npm:^1.4.1": + version: 1.4.1 + resolution: "ofetch@npm:1.4.1" dependencies: destr: "npm:^2.0.3" node-fetch-native: "npm:^1.6.4" ufo: "npm:^1.5.4" - checksum: 10/92af33cfb35879314c0ecdd9c15b814fd3a7dc31dbae1032492fa42767bb1afe6f2a7faa179b2c2a4482d4b30c87671ddb043bcccde7ada7499b10e5caf2eb51 + checksum: 10/329ecd5595eff6da090c728e66f4223ad7ba5c2c309446f3707245c1b213da47dfd1eb1740f26b3da9e31ed7b7a903733bdaae85187b714514da865a0c5a4a9c languageName: node linkType: hard -"ohash@npm:^1.1.3": +"ohash@npm:^1.1.4": version: 1.1.4 resolution: "ohash@npm:1.1.4" checksum: 10/b11445234e59c9c2b00f357f8f00b6ba00e14c84fc0a232cdc14eb1d80066479b09d27af0201631e84b7a15ba7c4a1939f4cc47f2030e9bf83c9e8afc3ff7dfd @@ -17697,9 +17544,9 @@ __metadata: linkType: hard "p-timeout@npm:^6.1.2": - version: 6.1.2 - resolution: "p-timeout@npm:6.1.2" - checksum: 10/ca3ede368d792bd86fcfa4e133220536382225d31e5f62e2cedb8280df267b25f6684aa0056b22e8aa538cc85014b310058d8fdddeb0a1ff363093d56e87ac3a + version: 6.1.3 + resolution: "p-timeout@npm:6.1.3" + checksum: 10/f4ecc8986323a156f80ec5d13b46f644a7fc1dc31bf840d499c24c95528448203b20040e02c2fe19d5f50b8fcf955636adccec551e83ad7c95cc35c235361dcd languageName: node linkType: hard @@ -17905,7 +17752,7 @@ __metadata: languageName: node linkType: hard -"pbkdf2@npm:^3.0.17, pbkdf2@npm:^3.0.3, pbkdf2@npm:^3.1.1, pbkdf2@npm:^3.1.2": +"pbkdf2@npm:^3.0.17, pbkdf2@npm:^3.1.1, pbkdf2@npm:^3.1.2": version: 3.1.2 resolution: "pbkdf2@npm:3.1.2" dependencies: @@ -18007,10 +17854,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard @@ -18021,6 +17868,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10/ce617b8da36797d09c0baacb96ca8a44460452c89362d7cb8f70ca46b4158ba8bc3606912de7c818eb4a939f7f9015cef3c766ec8a0c6bfc725fdc078e39c717 + languageName: node + linkType: hard + "pino-abstract-transport@npm:v0.5.0": version: 0.5.0 resolution: "pino-abstract-transport@npm:0.5.0" @@ -18079,7 +17933,7 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^1.2.0": +"pkg-types@npm:^1.2.1": version: 1.2.1 resolution: "pkg-types@npm:1.2.1" dependencies: @@ -18162,20 +18016,20 @@ __metadata: linkType: hard "postcss@npm:^8.4.43, postcss@npm:^8.4.47": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" + version: 8.4.49 + resolution: "postcss@npm:8.4.49" dependencies: nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.0" + picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10/f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81 + checksum: 10/28fe1005b1339870e0a5006375ba5ac1213fd69800f79e7db09c398e074421ba6e162898e94f64942fed554037fd292db3811d87835d25ab5ef7f3c9daacb6ca languageName: node linkType: hard "preact@npm:^10.16.0": - version: 10.24.1 - resolution: "preact@npm:10.24.1" - checksum: 10/44084b7c1e044a76299c9d78f5ff8b60dbe94058e819c5e81d3587f80a90d7e497a52c63ffa31e56e844c54dee322ef919d3fd5d20688a37314250c06ca85f8b + version: 10.24.3 + resolution: "preact@npm:10.24.3" + checksum: 10/e9c4c901a4ddd475a1072355b5c6c944b05797445e0d68f317ad0dbc976b831523573693ea75d2e12e7902042e3729af435377816d25558bf693ecf6b516c707 languageName: node linkType: hard @@ -18406,13 +18260,15 @@ __metadata: linkType: hard "psl@npm:^1.1.28": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 10/d07879d4bfd0ac74796306a8e5a36a93cfb9c4f4e8ee8e63fbb909066c192fe1008cd8f12abd8ba2f62ca28247949a20c8fb32e1d18831d9e71285a1569720f9 + version: 1.10.0 + resolution: "psl@npm:1.10.0" + dependencies: + punycode: "npm:^2.3.1" + checksum: 10/17b493648cc16e32c41681a4648db0c7235fbe83c78b0789b519aaccd1240fe739f9a5f4c4b55cb9e3094190ddf16e38f34f5ada179d518593ded42c957bdd8b languageName: node linkType: hard -"public-encrypt@npm:^4.0.0": +"public-encrypt@npm:^4.0.3": version: 4.0.3 resolution: "public-encrypt@npm:4.0.3" dependencies: @@ -18467,7 +18323,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": +"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 @@ -18771,7 +18627,7 @@ __metadata: languageName: node linkType: hard -"randomfill@npm:^1.0.3": +"randomfill@npm:^1.0.4": version: 1.0.4 resolution: "randomfill@npm:1.0.4" dependencies: @@ -19224,7 +19080,7 @@ __metadata: languageName: node linkType: hard -"react-remove-scroll-bar@npm:^2.3.3, react-remove-scroll-bar@npm:^2.3.4": +"react-remove-scroll-bar@npm:^2.3.3, react-remove-scroll-bar@npm:^2.3.6": version: 2.3.6 resolution: "react-remove-scroll-bar@npm:2.3.6" dependencies: @@ -19259,11 +19115,11 @@ __metadata: languageName: node linkType: hard -"react-remove-scroll@npm:2.5.7": - version: 2.5.7 - resolution: "react-remove-scroll@npm:2.5.7" +"react-remove-scroll@npm:2.6.0": + version: 2.6.0 + resolution: "react-remove-scroll@npm:2.6.0" dependencies: - react-remove-scroll-bar: "npm:^2.3.4" + react-remove-scroll-bar: "npm:^2.3.6" react-style-singleton: "npm:^2.2.1" tslib: "npm:^2.1.0" use-callback-ref: "npm:^1.3.0" @@ -19274,31 +19130,31 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/a1285d118e734855be6a1cf6c83a2ee39d8c5a5c3c336a1e9b80ab571326669bf39a52607f1889337c559c18b9e5fd5a0772fa82f748de3fcfe114ee6f772cc6 + checksum: 10/9fac79e1c2ed2c85729bfe82f61ef4ae5ce51f478736a13892a9a11e05cbd4e9599f9f0e012cb5fc0719e18dc1dd687ab61f516193228615df636db8b851245e languageName: node linkType: hard "react-router-dom@npm:^6.9.0": - version: 6.26.2 - resolution: "react-router-dom@npm:6.26.2" + version: 6.28.0 + resolution: "react-router-dom@npm:6.28.0" dependencies: - "@remix-run/router": "npm:1.19.2" - react-router: "npm:6.26.2" + "@remix-run/router": "npm:1.21.0" + react-router: "npm:6.28.0" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 10/4eee37839bd1a660807c090b4d272e4aa9b95d8a9a932cdcdf7c5b10735f39b6db73bad79b08a3012386a7e225ff6bf60435e2741fb7c68e137ac5a6295d4308 + checksum: 10/e637825132ea96c3514ef7b8322f9bf0b752a942d6b4ffc4c20e389b5911726adf3dba8208ed4b97bf5b9c3bd465d9d1a1db1a58a610a8d528f18d890e0b143f languageName: node linkType: hard -"react-router@npm:6.26.2": - version: 6.26.2 - resolution: "react-router@npm:6.26.2" +"react-router@npm:6.28.0": + version: 6.28.0 + resolution: "react-router@npm:6.28.0" dependencies: - "@remix-run/router": "npm:1.19.2" + "@remix-run/router": "npm:1.21.0" peerDependencies: react: ">=16.8" - checksum: 10/496e855b53e61066c1791e354f5d79eab56a128d9722fdc6486c3ecd3b3a0bf9968e927028f429893b157f3cc10fc09e890a055847723ee242663e7995fedc9d + checksum: 10/f021a644513144884a567d9c2dcc432e8e3233f931378c219c5a3b5b842340f0faca86225a708bafca1e9010965afe1a7dada28aef5b7b6138c885c0552d9a7d languageName: node linkType: hard @@ -19372,17 +19228,18 @@ __metadata: linkType: hard "react-syntax-highlighter@npm:^15.5.0": - version: 15.5.0 - resolution: "react-syntax-highlighter@npm:15.5.0" + version: 15.6.1 + resolution: "react-syntax-highlighter@npm:15.6.1" dependencies: "@babel/runtime": "npm:^7.3.1" highlight.js: "npm:^10.4.1" + highlightjs-vue: "npm:^1.0.0" lowlight: "npm:^1.17.0" prismjs: "npm:^1.27.0" refractor: "npm:^3.6.0" peerDependencies: react: ">= 0.14.0" - checksum: 10/14291a92672a79cf167e6cf2dba2547b920c24573729a95ae24035bece43f7e00e3429477be7b87455e8ce018682c8992545c405a915421eb772c5cd07c00576 + checksum: 10/9a89c81f7dcc109b038dc2a73189fa1ea916e6485d8a39856ab3d01d2c753449b5ae1c0df9c9ee0ed5c8c9808a68422b19af9a168ec091a274bddc7ad092eb86 languageName: node linkType: hard @@ -19726,14 +19583,14 @@ __metadata: linkType: hard "regexp.prototype.flags@npm:^1.5.1": - version: 1.5.2 - resolution: "regexp.prototype.flags@npm:1.5.2" + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: - call-bind: "npm:^1.0.6" + call-bind: "npm:^1.0.7" define-properties: "npm:^1.2.1" es-errors: "npm:^1.3.0" - set-function-name: "npm:^2.0.1" - checksum: 10/9fffc01da9c4e12670ff95bc5204364615fcc12d86fc30642765af908675678ebb0780883c874b2dbd184505fb52fa603d80073ecf69f461ce7f56b15d10be9c + set-function-name: "npm:^2.0.2" + checksum: 10/fe17bc4eebbc72945aaf9dd059eb7784a5ca453a67cc4b5b3e399ab08452c9a05befd92063e2c52e7b24d9238c60031656af32dd57c555d1ba6330dbf8c23b43 languageName: node linkType: hard @@ -19958,25 +19815,27 @@ __metadata: linkType: hard "rollup@npm:^4.20.0": - version: 4.22.5 - resolution: "rollup@npm:4.22.5" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.22.5" - "@rollup/rollup-android-arm64": "npm:4.22.5" - "@rollup/rollup-darwin-arm64": "npm:4.22.5" - "@rollup/rollup-darwin-x64": "npm:4.22.5" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.22.5" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.22.5" - "@rollup/rollup-linux-arm64-gnu": "npm:4.22.5" - "@rollup/rollup-linux-arm64-musl": "npm:4.22.5" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.22.5" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.22.5" - "@rollup/rollup-linux-s390x-gnu": "npm:4.22.5" - "@rollup/rollup-linux-x64-gnu": "npm:4.22.5" - "@rollup/rollup-linux-x64-musl": "npm:4.22.5" - "@rollup/rollup-win32-arm64-msvc": "npm:4.22.5" - "@rollup/rollup-win32-ia32-msvc": "npm:4.22.5" - "@rollup/rollup-win32-x64-msvc": "npm:4.22.5" + version: 4.26.0 + resolution: "rollup@npm:4.26.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.26.0" + "@rollup/rollup-android-arm64": "npm:4.26.0" + "@rollup/rollup-darwin-arm64": "npm:4.26.0" + "@rollup/rollup-darwin-x64": "npm:4.26.0" + "@rollup/rollup-freebsd-arm64": "npm:4.26.0" + "@rollup/rollup-freebsd-x64": "npm:4.26.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.26.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.26.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.26.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.26.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.26.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.26.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.26.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.26.0" + "@rollup/rollup-linux-x64-musl": "npm:4.26.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.26.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.26.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.26.0" "@types/estree": "npm:1.0.6" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -19988,6 +19847,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -20016,7 +19879,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/f34812fa982442ab71410b649630c24434b2dc02485e543607734766eb7211ce7e0a79102f27210f337af00f3617006adebb4f87fb2e9d24cac7100d0e599352 + checksum: 10/aec4d876617298400c0c03d35fed67e5193addc82a76f2b2a2f4c2b000cafbca84a33cf2e686dea1d1caa06fe4028dd94b8e6cd1f5bc3bbd19026a188bb2ec55 languageName: node linkType: hard @@ -20262,31 +20125,31 @@ __metadata: linkType: hard "secp256k1@npm:^3.0.1": - version: 3.8.0 - resolution: "secp256k1@npm:3.8.0" + version: 3.8.1 + resolution: "secp256k1@npm:3.8.1" dependencies: bindings: "npm:^1.5.0" bip66: "npm:^1.1.5" bn.js: "npm:^4.11.8" create-hash: "npm:^1.2.0" drbg.js: "npm:^1.0.1" - elliptic: "npm:^6.5.2" + elliptic: "npm:^6.5.7" nan: "npm:^2.14.0" node-gyp: "npm:latest" safe-buffer: "npm:^5.1.2" - checksum: 10/45e65c68affb228fa253297188ba64c60c39a0f0defc80578ca50e0dda188efb109e9711f9d434672d3e1507860434a9c4bf16bf41a91d67ae50d32f8f6e2059 + checksum: 10/dfe9621aea56268878ed384cbf8aac55ad7d3a887816d6e130d202ad679a25546f0079b22ab462f605c30668733e6b7676e4e77c63542d6fc45a7a5ad9ebb3f4 languageName: node linkType: hard "secp256k1@npm:^4.0.0, secp256k1@npm:^4.0.1": - version: 4.0.3 - resolution: "secp256k1@npm:4.0.3" + version: 4.0.4 + resolution: "secp256k1@npm:4.0.4" dependencies: - elliptic: "npm:^6.5.4" - node-addon-api: "npm:^2.0.0" + elliptic: "npm:^6.5.7" + node-addon-api: "npm:^5.0.0" node-gyp: "npm:latest" node-gyp-build: "npm:^4.2.0" - checksum: 10/8b45820cd90fd2f95cc8fdb9bf8a71e572de09f2311911ae461a951ffa9e30c99186a129d0f1afeb380dd67eca0c10493f8a7513c39063fda015e99995088e3b + checksum: 10/45000f348c853df7c1e2b67c48efb062ae78c0620ab1a5cfb02fa20d3aad39c641f4e7a18b3de3b54a7c0cc1e0addeb8ecd9d88bc332e92df17a92b60c36122a languageName: node linkType: hard @@ -20384,7 +20247,7 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.1": +"set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" dependencies: @@ -20552,14 +20415,14 @@ __metadata: linkType: hard "socket.io-client@npm:^4.5.2, socket.io-client@npm:^4.7.2": - version: 4.8.0 - resolution: "socket.io-client@npm:4.8.0" + version: 4.8.1 + resolution: "socket.io-client@npm:4.8.1" dependencies: "@socket.io/component-emitter": "npm:~3.1.0" debug: "npm:~4.3.2" engine.io-client: "npm:~6.6.1" socket.io-parser: "npm:~4.2.4" - checksum: 10/98e05a6e3b19e6bae39bedbb6fd07e970e90c962b6ab9b68c4968a789be84efe40129b7f8abc73bafa31a29d444c3a0bde992131f93e7c3ddb27ef5192131e08 + checksum: 10/7480cf1ab30eba371a96dd1ce2ce9018dcbeaf81035a066fb89d99df0d0a6388b05840c92d970317c739956b68b28b0f4833f3b18e460a24eef557b9bca127c1 languageName: node linkType: hard @@ -20604,12 +20467,12 @@ __metadata: linkType: hard "sonner@npm:^1.5.0": - version: 1.5.0 - resolution: "sonner@npm:1.5.0" + version: 1.7.0 + resolution: "sonner@npm:1.7.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10/f189ec3cacf294b875eeb349faefa4be90d2ff4dcde6dc73b3b77a4a8ed6ff393a1d6a1b1b90ef86de861a4c84d988aec09558cabd39fcb1befddd384c4010b0 + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + checksum: 10/121357b6fb39d2c8f81980f72249d8fc02fa5eaba8e6522ca13a89bf4a13a8313421bd1dde9125e593f1d9a9507baa5c48f595f043373733f75e0e038eaff65f languageName: node linkType: hard @@ -20797,9 +20660,9 @@ __metadata: linkType: hard "std-env@npm:^3.7.0": - version: 3.7.0 - resolution: "std-env@npm:3.7.0" - checksum: 10/6ee0cca1add3fd84656b0002cfbc5bfa20340389d9ba4720569840f1caa34bce74322aef4c93f046391583e50649d0cf81a5f8fe1d411e50b659571690a45f12 + version: 3.8.0 + resolution: "std-env@npm:3.8.0" + checksum: 10/034176196cfcaaab16dbdd96fc9e925a9544799fb6dc5a3e36fe43270f3a287c7f779d785b89edaf22cef2b5f1dcada2aae67430b8602e785ee74bdb3f671768 languageName: node linkType: hard @@ -21265,8 +21128,8 @@ __metadata: linkType: hard "terser@npm:^5.26.0": - version: 5.34.1 - resolution: "terser@npm:5.34.1" + version: 5.36.0 + resolution: "terser@npm:5.36.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -21274,7 +21137,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/4389f39b5b841e2a7795ee733b54bf8fc44f8784a78c213dae32c7e6adc66c3bb258ebdcbacb8e7f1fa08fceb20bfc4ce4f7666d42bbfc29ab71126e89614c34 + checksum: 10/52e641419f79d7ccdecd136b9a8e0b03f93cfe3b53cce556253aaabc347d3f2af1745419b9e622abc95d592084dc76e57774b8f9e68d29d543f4dd11c044daf4 languageName: node linkType: hard @@ -21407,13 +21270,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -21506,11 +21362,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.3.0": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" + version: 1.4.0 + resolution: "ts-api-utils@npm:1.4.0" peerDependencies: typescript: ">=4.2.0" - checksum: 10/3ee44faa24410cd649b5c864e068d438aa437ef64e9e4a66a41646a6d3024d3097a695eeb3fb26ee364705d3cb9653a65756d009e6a53badb6066a5f447bf7ed + checksum: 10/b2020d5da55e28dc9dd32fb94730a4f6caefbd8e103029b6b6de5f15d18873067d734f64761c424c78ad1393a2b99d82b5a9fd34d663c12243acca7d3439090b languageName: node linkType: hard @@ -21529,8 +21385,8 @@ __metadata: linkType: hard "tsconfck@npm:^3.0.3": - version: 3.1.3 - resolution: "tsconfck@npm:3.1.3" + version: 3.1.4 + resolution: "tsconfck@npm:3.1.4" peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -21538,7 +21394,7 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: 10/bf9b9b72de5b83f833f5dea8b276e77bab08e85751589f36dd23854fa3d5f7955194086fb8424df388bf232f2fc9a067d7913bfa674cb1217be0bba648ec71f2 + checksum: 10/4fb02e75ff374a82052b4800970bebe4466b5a6e7193d74e7b875cc8225acb5037fb4e7dcd4a5cd751c22129360cb13b4d5536897eae131d69c1a20fb18a99b4 languageName: node linkType: hard @@ -21564,9 +21420,9 @@ __metadata: linkType: hard "tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.6.0": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10/3e2e043d5c2316461cb54e5c7fe02c30ef6dccb3384717ca22ae5c6b5bc95232a6241df19c622d9c73b809bea33b187f6dbc73030963e29950c2141bc32a79f7 languageName: node linkType: hard @@ -21698,22 +21554,22 @@ __metadata: linkType: hard "typescript@npm:^5.2.2": - version: 5.6.2 - resolution: "typescript@npm:5.6.2" + version: 5.6.3 + resolution: "typescript@npm:5.6.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/f95365d4898f357823e93d334ecda9fcade54f009b397c7d05b7621cd9e865981033cf89ccde0f3e3a7b73b1fdbae18e92bc77db237b43e912f053fef0f9a53b + checksum: 10/c328e418e124b500908781d9f7b9b93cf08b66bf5936d94332b463822eea2f4e62973bfb3b8a745fdc038785cb66cf59d1092bac3ec2ac6a3e5854687f7833f1 languageName: node linkType: hard "typescript@patch:typescript@npm%3A^5.2.2#optional!builtin": - version: 5.6.2 - resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=b45daf" + version: 5.6.3 + resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=b45daf" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/060a7349adf698477b411be4ace470aee6c2c1bd99917fdf5d33697c17ec55c64fe724eb10399387530b50e9913b41528dd8bfcca0a5fc8f8bac63fbb4580a2e + checksum: 10/dc4bec403cd33a204b655b1152a096a08e7bad2c931cb59ef8ff26b6f2aa541bf98f09fc157958a60c921b1983a8dde9a85b692f9de60fa8f574fd131e3ae4dd languageName: node linkType: hard @@ -21735,7 +21591,7 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.5.3, ufo@npm:^1.5.4": +"ufo@npm:^1.5.4": version: 1.5.4 resolution: "ufo@npm:1.5.4" checksum: 10/a885ed421e656aea6ca64e9727b8118a9488715460b6f1a0f0427118adfe2f2830fe7c1d5bd9c5c754a332e6807516551cd663ea67ce9ed6a4e3edc739916335 @@ -21830,7 +21686,7 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2": +"undici-types@npm:~6.19.8": version: 6.19.8 resolution: "undici-types@npm:6.19.8" checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70 @@ -21853,7 +21709,7 @@ __metadata: languageName: node linkType: hard -"unenv@npm:^1.9.0": +"unenv@npm:^1.10.0": version: 1.10.0 resolution: "unenv@npm:1.10.0" dependencies: @@ -21913,30 +21769,30 @@ __metadata: linkType: hard "unstorage@npm:^1.9.0": - version: 1.12.0 - resolution: "unstorage@npm:1.12.0" + version: 1.13.1 + resolution: "unstorage@npm:1.13.1" dependencies: anymatch: "npm:^3.1.3" chokidar: "npm:^3.6.0" + citty: "npm:^0.1.6" destr: "npm:^2.0.3" - h3: "npm:^1.12.0" - listhen: "npm:^1.7.2" + h3: "npm:^1.13.0" + listhen: "npm:^1.9.0" lru-cache: "npm:^10.4.3" - mri: "npm:^1.2.0" node-fetch-native: "npm:^1.6.4" - ofetch: "npm:^1.3.4" + ofetch: "npm:^1.4.1" ufo: "npm:^1.5.4" peerDependencies: "@azure/app-configuration": ^1.7.0 "@azure/cosmos": ^4.1.1 "@azure/data-tables": ^13.2.2 - "@azure/identity": ^4.4.1 - "@azure/keyvault-secrets": ^4.8.0 - "@azure/storage-blob": ^12.24.0 + "@azure/identity": ^4.5.0 + "@azure/keyvault-secrets": ^4.9.0 + "@azure/storage-blob": ^12.25.0 "@capacitor/preferences": ^6.0.2 - "@netlify/blobs": ^6.5.0 || ^7.0.0 + "@netlify/blobs": ^6.5.0 || ^7.0.0 || ^8.1.0 "@planetscale/database": ^1.19.0 - "@upstash/redis": ^1.34.0 + "@upstash/redis": ^1.34.3 "@vercel/kv": ^1.0.1 idb-keyval: ^6.2.1 ioredis: ^5.4.1 @@ -21967,7 +21823,7 @@ __metadata: optional: true ioredis: optional: true - checksum: 10/b648d79e9913a87152228a080355d9ccf780900eb78bd32f8dab9cc55eb66ab45876e9fc1ed49f1c7a4171600e78c33430e2527740d991df9d071872409b9c37 + checksum: 10/a5fea4f83189d222dcb95ce36d0de29b1ab2fa64122f4c4435b63e6dab8bacd630f6234b0599a505de620f719965ea3a3ce068ece759a96e19fd187e1fb9561c languageName: node linkType: hard @@ -21984,7 +21840,7 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.0": +"update-browserslist-db@npm:^1.1.1": version: 1.1.1 resolution: "update-browserslist-db@npm:1.1.1" dependencies: @@ -22360,15 +22216,15 @@ __metadata: linkType: hard "vite-plugin-svgr@npm:^4.2.0": - version: 4.2.0 - resolution: "vite-plugin-svgr@npm:4.2.0" + version: 4.3.0 + resolution: "vite-plugin-svgr@npm:4.3.0" dependencies: - "@rollup/pluginutils": "npm:^5.0.5" + "@rollup/pluginutils": "npm:^5.1.3" "@svgr/core": "npm:^8.1.0" "@svgr/plugin-jsx": "npm:^8.1.0" peerDependencies: - vite: ^2.6.0 || 3 || 4 || 5 - checksum: 10/c860e65836509a144cf838eabcf420d848f35aea4c83044e75c9f9d00947f878217470536ea4098dc4e78510cb5fb683ec564f33cddde4dab0459e3a87f5ff79 + vite: ">=2.6.0" + checksum: 10/9ade316f20dae881f4ee65e4f2a35be11cf75b22a411bfcdb55bd61382c0249395cb925775e06a49e0fdffe483e64d5a25068c3ddfc5823fb72013cf4d932d17 languageName: node linkType: hard @@ -22402,8 +22258,8 @@ __metadata: linkType: hard "vite@npm:^5.2.7": - version: 5.4.8 - resolution: "vite@npm:5.4.8" + version: 5.4.11 + resolution: "vite@npm:5.4.11" dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" @@ -22440,7 +22296,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/17fdffa558abaf854f04ead7d3ddd76e4556a59871f9ac63cca3fc20a79979984837d8dddaae4b171e3d73061f781e4eec0f6d3babdbce2b4d111d29cf474c1c + checksum: 10/719c4dea896e9547958643354003c8c9ea98e5367196d98f5f46cffb3ec963fead3ea5853f5af941c79bbfb73583dec19bbb0d28d2f644b95d7f59c55e22919d languageName: node linkType: hard @@ -22804,16 +22660,16 @@ __metadata: linkType: hard "webpack@npm:^4.46.0 || ^5.0.0": - version: 5.95.0 - resolution: "webpack@npm:5.95.0" + version: 5.96.1 + resolution: "webpack@npm:5.96.1" dependencies: - "@types/estree": "npm:^1.0.5" + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" "@webassemblyjs/ast": "npm:^1.12.1" "@webassemblyjs/wasm-edit": "npm:^1.12.1" "@webassemblyjs/wasm-parser": "npm:^1.12.1" - acorn: "npm:^8.7.1" - acorn-import-attributes: "npm:^1.9.5" - browserslist: "npm:^4.21.10" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" chrome-trace-event: "npm:^1.0.2" enhanced-resolve: "npm:^5.17.1" es-module-lexer: "npm:^1.2.1" @@ -22835,7 +22691,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/0377ad3a550b041f26237c96fb55754625b0ce6bae83c1c2447e3262ad056b0b0ad770dcbb92b59f188e9a2bd56155ce910add17dcf023cfbe78bdec774380c1 + checksum: 10/d3419ffd198252e1d0301bd0c072cee93172f3e47937c745aa8202691d2f5d529d4ba4a1965d1450ad89a1bcd3c1f70ae09e57232b0d01dd38d69c1060e964d5 languageName: node linkType: hard @@ -23159,9 +23015,9 @@ __metadata: linkType: hard "xmlhttprequest-ssl@npm:~2.1.1": - version: 2.1.1 - resolution: "xmlhttprequest-ssl@npm:2.1.1" - checksum: 10/40affa3100d566709965910bb3877f5434d61a5588fef46dc896ec39f141261aafe922b5fbbaa79927f019bb8e765877563f0b2ffa69e4c8779b7666bb0c2cc1 + version: 2.1.2 + resolution: "xmlhttprequest-ssl@npm:2.1.2" + checksum: 10/708a177fe41c6c8cd4ec7c04d965b4c01801d87f44383ec639be58bdc14418142969841659e0850db44feee8bec0a3d3e7d33fed22519415f3d0daab04d3f160 languageName: node linkType: hard From 4c7c17a43847fc4b017d87735113c43f60f26d2f Mon Sep 17 00:00:00 2001 From: corlard3y Date: Thu, 14 Nov 2024 00:18:21 +0100 Subject: [PATCH 11/37] update dashboard to work with modals --- .../UserProfileSettingsItem.tsx | 73 ++++++++++ .../UserProfileSocialSettings.tsx | 85 +----------- src/modules/dashboard/Dashboard.constants.ts | 21 --- src/modules/dashboard/Dashboard.tsx | 30 +++- src/modules/dashboard/Dashboard.types.ts | 7 - .../components/ConnectSocialHandles.tsx | 129 ++++++++++++++---- .../dashboard/components/Socialhandles.tsx | 14 +- 7 files changed, 221 insertions(+), 138 deletions(-) create mode 100644 src/components/UserProfileSettings/UserProfileSettingsItem.tsx diff --git a/src/components/UserProfileSettings/UserProfileSettingsItem.tsx b/src/components/UserProfileSettings/UserProfileSettingsItem.tsx new file mode 100644 index 0000000000..c5d5c40583 --- /dev/null +++ b/src/components/UserProfileSettings/UserProfileSettingsItem.tsx @@ -0,0 +1,73 @@ +import { Box, Text, Button, Menu, Dropdown, MenuItem, OptOut, CaretDown } from 'blocks'; + +const UserProfileSettingsItem = ({ item }: any) => { + return ( + + + + {item?.icon()} + + + + + {item.itemTitle} + + + {item.itemDescription} + + + + + {item.userStatus === null ? ( + + ) : ( + + } + onClick={() => console.log('disconnect')} + /> + + } + > + + + )} + + ); +}; + +export default UserProfileSettingsItem; diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index f1c3d3bd42..cf3fb5647e 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -8,22 +8,11 @@ import { useGetSocialsStatus } from 'queries'; import { walletToCAIP10 } from 'helpers/w2w'; //Components -import { - Box, - Button, - CaretDown, - DiscordProfile, - Dropdown, - EmailProfile, - Menu, - MenuItem, - OptOut, - TelegramProfile, - Text, -} from 'blocks'; +import { Box, DiscordProfile, EmailProfile, TelegramProfile, Text } from 'blocks'; import { AddEmail } from './AddEmail'; import AddTelegram from './AddTelegram'; import AddDiscord from './AddDiscord'; +import UserProfileSettingsItem from './UserProfileSettingsItem'; type UserProfileSocialSettingsType = { errorMessage?: string; @@ -56,14 +45,14 @@ const UserProfileSocialSettings: FC = ({ setError itemTitle: 'Telegram', itemDescription: 'Receive notifications as Telegram messages', onClick: () => telegramModalControl.open(), - userStatus: socialHandleStatus?.discord_username || null, + userStatus: socialHandleStatus?.telegram_username || null, }, { icon: () => , itemTitle: 'Discord', itemDescription: 'Receive notifications as Discord messages', onClick: () => discordModalControl.open(), - userStatus: socialHandleStatus?.telegram_username || null, + userStatus: socialHandleStatus?.discord_username || null, }, ]; return ( @@ -86,71 +75,7 @@ const UserProfileSocialSettings: FC = ({ setError {itemList?.map((item) => ( - - - - {item?.icon()} - - - - - {item.itemTitle} - - - {item.itemDescription} - - - - - {item.userStatus === null ? ( - - ) : ( - - } - onClick={() => console.log('disconnect')} - /> - - } - > - - - )} - + ))} diff --git a/src/modules/dashboard/Dashboard.constants.ts b/src/modules/dashboard/Dashboard.constants.ts index 0e6e7db8d2..1e50bdacc2 100644 --- a/src/modules/dashboard/Dashboard.constants.ts +++ b/src/modules/dashboard/Dashboard.constants.ts @@ -90,24 +90,3 @@ export const trendingSource: Record = { export const firstEndDate = new Date(Date.now()).toISOString().split('T')[0]; export const secondEndDate = new Date(Date.now() - 7 * 86400000).toISOString().split('T')[0]; export const startDate = new Date(Date.now() - 14 * 86400000).toISOString().split('T')[0]; - -export const socialHandlesList: SocialHandlesItemType[] = [ - { - heading: 'Email', - description: 'Receive notifications in your email inbox', - type: 'email', - isConnected: true, - }, - { - heading: 'Telegram', - description: 'Receive notifications as Telegram messages', - type: 'telegram', - isConnected: false, - }, - { - heading: 'Discord', - description: 'Receive notifications as Discord messages', - type: 'discord', - isConnected: false, - }, -]; diff --git a/src/modules/dashboard/Dashboard.tsx b/src/modules/dashboard/Dashboard.tsx index ec2b24553b..641a267dcd 100644 --- a/src/modules/dashboard/Dashboard.tsx +++ b/src/modules/dashboard/Dashboard.tsx @@ -2,7 +2,7 @@ import { FC, useState } from 'react'; // Components -import { Box } from 'blocks'; +import { Alert, Box } from 'blocks'; import { AnalyticsOverview } from './components/AnalyticsOverview'; import { ChannelVariantsSection } from './components/ChannelVariantsSection'; import { DashboardHeader } from './components/DashboardHeader'; @@ -15,6 +15,9 @@ export type DashboardProps = {}; const Dashboard: FC = () => { const [showSubHeader, setSubHeaderVisibility] = useState(true); + // for alerts + const [errorMessage, setErrorMessage] = useState(''); + const [successMessage, setSuccessMessage] = useState(''); return ( = () => { flexDirection="column" gap="spacing-md" > - + {successMessage && ( + + + + )} + + {errorMessage && ( + + + + )} + + void; + setSuccessMessage: (successMessage: string) => void; +}; + +export type SocialHandlesItemType = { + itemTitle: string; + itemDescription: string; + type: 'email' | 'telegram' | 'discord'; + isConnected: boolean; +}; + +const ConnectSocialHandles: FC = ({ setErrorMessage, setSuccessMessage }) => { + const modalControl = useDisclosure(); + const telegramModalControl = useDisclosure(); + const discordModalControl = useDisclosure(); + const { account } = useAccount(); + + // Getting user Id by wallet address + const channelAddress = walletToCAIP10({ account }); -export type ConnectSocialHandlesProps = {}; + const { data: socialHandleStatus, refetch: refetchSocialHandleStatus } = useGetSocialsStatus(channelAddress); + + const socialHandlesList: any[] = [ + { + icon: () => , + itemTitle: 'Email', + itemDescription: 'Receive notifications in your email inbox', + userStatus: socialHandleStatus?.email || null, + onClick: () => modalControl.open(), + }, + { + icon: () => , + itemTitle: 'Telegram', + itemDescription: 'Receive notifications as Telegram messages', + onClick: () => telegramModalControl.open(), + userStatus: socialHandleStatus?.telegram_username || null, + }, + { + icon: () => , + itemTitle: 'Discord', + itemDescription: 'Receive notifications as Discord messages', + onClick: () => discordModalControl.open(), + userStatus: socialHandleStatus?.discord_username || null, + }, + ]; -const ConnectSocialHandles: FC = () => { return ( <> = () => { gap={{ tb: 'spacing-xs' }} width="100%" > - {socialHandlesList.map((item: SocialHandlesItemType) => ( + {socialHandlesList.map((item: any) => ( = () => { `} minHeight={{ initial: 'auto', tb: '180px' }} > - + - {/* Social icons will be displayed here */} - {item?.type === 'email' && } - {item?.type === 'telegram' && } - {item?.type === 'discord' && } + {item?.icon()} - {item.heading} + {item.itemTitle} @@ -73,7 +124,7 @@ const ConnectSocialHandles: FC = () => { variant="bs-regular" color="text-tertiary" > - {item.description} + {item.itemDescription} @@ -82,37 +133,65 @@ const ConnectSocialHandles: FC = () => { alignItems="center" alignSelf="flex-start" > - {item.isConnected ? ( + {item.userStatus === null ? ( + + ) : ( } + onClick={() => console.log('disconnect')} /> } > - ) : ( - )} ))} + + {modalControl.isOpen && ( + + )} + + {telegramModalControl.isOpen && ( + + )} + + {discordModalControl.isOpen && ( + + )} ); diff --git a/src/modules/dashboard/components/Socialhandles.tsx b/src/modules/dashboard/components/Socialhandles.tsx index 7a02870d0f..94d069c962 100644 --- a/src/modules/dashboard/components/Socialhandles.tsx +++ b/src/modules/dashboard/components/Socialhandles.tsx @@ -5,9 +5,14 @@ import { ClaimSocialHandles } from './ClaimSocialHandles'; import { ConnectSocialHandles } from './ConnectSocialHandles'; import { useAccount } from 'hooks'; -export type SocialHandlesProps = {}; +export type SocialHandlesProps = { + errorMessage?: string; + setErrorMessage: (errorMessage: string) => void; + successMessage?: string; + setSuccessMessage: (successMessage: string) => void; +}; -const SocialHandles: FC = () => { +const SocialHandles: FC = ({ setErrorMessage, setSuccessMessage }) => { const { isWalletConnected } = useAccount(); // Check if the wallet is connected to the DApp. @@ -28,7 +33,10 @@ const SocialHandles: FC = () => { {/* Render option to connect Social Handles */} - + ); }; From 263804800a87906dc23683044adf966abbaec7b7 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 15 Nov 2024 10:02:21 +0100 Subject: [PATCH 12/37] update modals --- .../UserProfileSettings/AddEmail.tsx | 33 ++--- .../UserProfileSettings/AddTelegram.tsx | 132 ++++++++++++++---- src/queries/hooks/user/index.ts | 4 +- ...e.ts => useSendHandlesVerificationCode.ts} | 6 +- ...ts => useVerifyHandlesVerificationCode.ts} | 6 +- src/queries/models/user/index.ts | 4 +- .../sendEmailVerificationCodeModelCreator.ts | 5 - ...sendHandlesVerificationCodeModelCreator.ts | 5 + ...verifyEmailVerificationCodeModelCreator.ts | 5 - ...rifyHandlesVerificationCodeModelCreator.ts | 5 + src/queries/services/user/index.ts | 4 +- ...Code.ts => sendHandlesVerificationCode.ts} | 11 +- ...de.ts => verifyHandlesVerificationCode.ts} | 11 +- src/queries/types/user.ts | 4 +- 14 files changed, 155 insertions(+), 80 deletions(-) rename src/queries/hooks/user/{useSendEmailVerificationCode.ts => useSendHandlesVerificationCode.ts} (52%) rename src/queries/hooks/user/{useVerifyEmailVerificationCode.ts => useVerifyHandlesVerificationCode.ts} (51%) delete mode 100644 src/queries/models/user/sendEmailVerificationCodeModelCreator.ts create mode 100644 src/queries/models/user/sendHandlesVerificationCodeModelCreator.ts delete mode 100644 src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts create mode 100644 src/queries/models/user/verifyHandlesVerificationCodeModelCreator.ts rename src/queries/services/user/{sendEmailVerificationCode.ts => sendHandlesVerificationCode.ts} (51%) rename src/queries/services/user/{verifyEmailVerificationCode.ts => verifyHandlesVerificationCode.ts} (50%) diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index 17266f4f88..ee57e49963 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -9,9 +9,9 @@ import { useAccount } from 'hooks'; import { walletToCAIP10 } from 'helpers/w2w'; import { useAppContext } from 'contexts/AppContext'; import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; -import { useSendEmailVerificationCode, useVerifyEmailVerificationCode } from 'queries'; +import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; -import { Box, Button, Modal, Text, TextInput } from 'blocks'; +import { Box, Modal, Text, TextInput } from 'blocks'; type AddEmailProps = { modalControl: ModalResponse; @@ -41,8 +41,8 @@ const AddEmail: FC = ({ return state.user; }); - const { mutate: sendVerification } = useSendEmailVerificationCode(); - const { mutate: verifyVerification } = useVerifyEmailVerificationCode(); + const { mutate: sendVerification, isPending: sendingVerification } = useSendHandlesVerificationCode(); + const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); const emailValidationSchema = Yup.object({ email: Yup.string().email('Invalid email address').required('Required'), @@ -96,6 +96,7 @@ const AddEmail: FC = ({ caipAddress: caip10WalletAddress as string, verificationProof: verificationProof as string, value: emailFormik.values.email, + social_platform: 'email', }, { onSuccess: (response: any) => { @@ -129,6 +130,7 @@ const AddEmail: FC = ({ caipAddress: caip10WalletAddress as string, verificationCode: codeFormik.values.code, value: emailFormik.values.email, + social_platform: 'email', }, { onSuccess: (response: any) => { @@ -155,7 +157,16 @@ const AddEmail: FC = ({ size="small" isOpen={isOpen} onClose={onClose} - acceptButtonProps={null} + acceptButtonProps={ + step === Steps.EnterEmail + ? { + children: 'Next', + onClick: () => { + emailFormik.handleSubmit(); + }, + } + : null + } cancelButtonProps={null} > {step === Steps.EnterEmail && ( @@ -176,7 +187,7 @@ const AddEmail: FC = ({
= ({ errorMessage={emailFormik.touched.email ? emailFormik.errors.email : ''} /> - - - -
)} diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index b3f24541b9..fd85dad8b5 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -1,7 +1,16 @@ -import { FC, useState } from 'react'; +import { FC, useCallback, useState } from 'react'; +import { useSelector } from 'react-redux'; +import { useFormik } from 'formik'; +import * as Yup from 'yup'; -import { Box, Button, Link, Modal, Telegram, Text, TextInput } from 'blocks'; import { CopyButton, ModalResponse } from 'common'; +import { useAccount } from 'hooks'; +import { useAppContext } from 'contexts/AppContext'; +import { walletToCAIP10 } from 'helpers/w2w'; +import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; +import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; + +import { Box, Button, Link, Modal, Telegram, Text, TextInput } from 'blocks'; type AddTelegramProps = { modalControl: ModalResponse; @@ -22,7 +31,68 @@ const AddTelegram: FC = ({ // setSuccessMessage, }) => { const { isOpen, onClose } = modalControl; - const [step, setStep] = useState(2); + const { account, wallet } = useAccount(); + const { handleConnectWalletAndEnableProfile } = useAppContext(); + + const caip10WalletAddress = walletToCAIP10({ account }); + const [step, setStep] = useState(1); + const [telegramCode, setTelegramCode] = useState(''); + const { userPushSDKInstance } = useSelector((state: any) => { + return state.user; + }); + + const { mutate: sendVerification } = useSendHandlesVerificationCode(); + const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); + + const telegramValidationSchema = Yup.object({ + telegram: Yup.string().required('Required'), + }); + + const telegramFormik = useFormik({ + initialValues: { telegram: '' }, + validationSchema: telegramValidationSchema, + onSubmit: () => { + handleSendVerificationCode(); + }, + }); + + const getSDKInstance = useCallback(async () => { + return userPushSDKInstance?.signer ? userPushSDKInstance : await handleConnectWalletAndEnableProfile({ wallet }); + }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); + + const handleSendVerificationCode = async () => { + const sdkInstance = await getSDKInstance(); + const data = { + wallet: caip10WalletAddress, + value: telegramFormik.values.telegram, + valueType: 'telegram', + }; + + const verificationProof = await generateVerificationProof(data, sdkInstance); + + if (!verificationProof) return; + + sendVerification( + { + caipAddress: caip10WalletAddress as string, + verificationProof: verificationProof as string, + value: telegramFormik.values.telegram, + social_platform: 'telegram', + }, + { + onSuccess: (response: any) => { + if (response?.success) { + console.log(response); + setTelegramCode(response.verificationCode); + setStep(Steps.VerifyId); + } + }, + onError: (error: Error) => { + console.log('Error sending code', error); + }, + } + ); + }; return ( = ({ isOpen={isOpen} onClose={onClose} {...(step === Steps.VerifyId && { - onBack: () => setStep(step - 1), + onBack: () => setStep(Steps.EnterTelegram), })} - acceptButtonProps={null} + acceptButtonProps={ + step === Steps.EnterTelegram + ? { + children: 'Next', + onClick: () => { + telegramFormik?.handleSubmit(); + }, + } + : null + } cancelButtonProps={null} > {step === Steps.EnterTelegram && ( @@ -60,32 +139,24 @@ const AddTelegram: FC = ({ Proceed to the next step after entering your Telegram chat ID - - console.log('')} - // error={emailFormik.touched.email && Boolean(emailFormik.errors.email)} - // errorMessage={emailFormik.touched.email ? emailFormik.errors.email : ''} - /> - - - - - +
+ + + +
)} - {step === Steps.VerifyId && ( + {step === Steps.VerifyId && telegramCode && ( = ({ variant="bl-semibold" textAlign="center" > - /verify 0x123...45678 665889 + {telegramCode} @@ -162,6 +233,7 @@ const AddTelegram: FC = ({ +export const useSendHandlesVerificationCode = () => useMutation({ mutationKey: [sendVerificationCode], - mutationFn: sendEmailVerificationCode, + mutationFn: sendHandlesVerificationCode, }); diff --git a/src/queries/hooks/user/useVerifyEmailVerificationCode.ts b/src/queries/hooks/user/useVerifyHandlesVerificationCode.ts similarity index 51% rename from src/queries/hooks/user/useVerifyEmailVerificationCode.ts rename to src/queries/hooks/user/useVerifyHandlesVerificationCode.ts index b3f0b97e15..c764283845 100644 --- a/src/queries/hooks/user/useVerifyEmailVerificationCode.ts +++ b/src/queries/hooks/user/useVerifyHandlesVerificationCode.ts @@ -1,9 +1,9 @@ import { useMutation } from '@tanstack/react-query'; import { verifyVerificationCode } from 'queries/queryKeys'; -import { verifyEmailVerificationCode } from 'queries/services'; +import { verifyHandlesVerificationCode } from 'queries/services'; -export const useVerifyEmailVerificationCode = () => +export const useVerifyHandlesVerificationCode = () => useMutation({ mutationKey: [verifyVerificationCode], - mutationFn: verifyEmailVerificationCode, + mutationFn: verifyHandlesVerificationCode, }); diff --git a/src/queries/models/user/index.ts b/src/queries/models/user/index.ts index 6f535462c6..c95226b09e 100644 --- a/src/queries/models/user/index.ts +++ b/src/queries/models/user/index.ts @@ -1,5 +1,5 @@ export * from './getUserSubscriptionsModelCreator'; export * from './getUserProfileInfoModelCreator'; -export * from './sendEmailVerificationCodeModelCreator'; -export * from './verifyEmailVerificationCodeModelCreator'; +export * from './sendHandlesVerificationCodeModelCreator'; +export * from './verifyHandlesVerificationCodeModelCreator'; export * from './getSocialsStatusModelCreator'; diff --git a/src/queries/models/user/sendEmailVerificationCodeModelCreator.ts b/src/queries/models/user/sendEmailVerificationCodeModelCreator.ts deleted file mode 100644 index c83b2c8a85..0000000000 --- a/src/queries/models/user/sendEmailVerificationCodeModelCreator.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { SendEmailVerificationResponse } from 'queries/types'; - -export const sendEmailVerificationCodeModelCreator = ( - response: SendEmailVerificationResponse -): SendEmailVerificationResponse => response; diff --git a/src/queries/models/user/sendHandlesVerificationCodeModelCreator.ts b/src/queries/models/user/sendHandlesVerificationCodeModelCreator.ts new file mode 100644 index 0000000000..2eb7adb782 --- /dev/null +++ b/src/queries/models/user/sendHandlesVerificationCodeModelCreator.ts @@ -0,0 +1,5 @@ +import { SendHandlesVerificationResponse } from 'queries/types'; + +export const sendHandlesVerificationCodeModelCreator = ( + response: SendHandlesVerificationResponse +): SendHandlesVerificationResponse => response; diff --git a/src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts b/src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts deleted file mode 100644 index 41afc4c476..0000000000 --- a/src/queries/models/user/verifyEmailVerificationCodeModelCreator.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { VerifyEmailVerificationResponse } from 'queries/types'; - -export const verifyEmailVerificationCodeModelCreator = ( - response: VerifyEmailVerificationResponse -): VerifyEmailVerificationResponse => response; diff --git a/src/queries/models/user/verifyHandlesVerificationCodeModelCreator.ts b/src/queries/models/user/verifyHandlesVerificationCodeModelCreator.ts new file mode 100644 index 0000000000..276e96e7d4 --- /dev/null +++ b/src/queries/models/user/verifyHandlesVerificationCodeModelCreator.ts @@ -0,0 +1,5 @@ +import { VerifyHandlesVerificationResponse } from 'queries/types'; + +export const verifyHandlesVerificationCodeModelCreator = ( + response: VerifyHandlesVerificationResponse +): VerifyHandlesVerificationResponse => response; diff --git a/src/queries/services/user/index.ts b/src/queries/services/user/index.ts index 6531f2e733..89072fa57d 100644 --- a/src/queries/services/user/index.ts +++ b/src/queries/services/user/index.ts @@ -4,6 +4,6 @@ export * from './unsubscribeChannel'; export * from './updateNotificationSettings'; export * from './getUserProfileInfo'; export * from './updateUserProfileInfo'; -export * from './sendEmailVerificationCode'; -export * from './verifyEmailVerificationCode'; +export * from './sendHandlesVerificationCode'; +export * from './verifyHandlesVerificationCode'; export * from './getUserSocialsStatus'; diff --git a/src/queries/services/user/sendEmailVerificationCode.ts b/src/queries/services/user/sendHandlesVerificationCode.ts similarity index 51% rename from src/queries/services/user/sendEmailVerificationCode.ts rename to src/queries/services/user/sendHandlesVerificationCode.ts index 41a013c397..f2b2e9ac57 100644 --- a/src/queries/services/user/sendEmailVerificationCode.ts +++ b/src/queries/services/user/sendHandlesVerificationCode.ts @@ -1,17 +1,18 @@ import axios from 'axios'; -import { sendEmailVerificationCodeModelCreator } from 'queries/models'; +import { sendHandlesVerificationCodeModelCreator } from 'queries/models'; -type sendEmailVerificationCodeType = { +type sendHandlesVerificationCodeType = { caipAddress: string; value: string; verificationProof: string; + social_platform: 'email' | 'discord' | 'telegram'; }; -export const sendEmailVerificationCode = async (payload: sendEmailVerificationCodeType) => { +export const sendHandlesVerificationCode = async (payload: sendHandlesVerificationCodeType) => { const response = await axios({ method: 'POST', - url: `http://localhost:7575/apis/v1/users/verify/init/${payload?.caipAddress}/email`, + url: `http://localhost:7575/apis/v1/users/verify/init/${payload?.caipAddress}/${payload.social_platform}`, data: { value: payload?.value, verificationProof: payload?.verificationProof, @@ -20,5 +21,5 @@ export const sendEmailVerificationCode = async (payload: sendEmailVerificationCo 'Content-Type': 'application/json', }, }); - return sendEmailVerificationCodeModelCreator(response.data); + return sendHandlesVerificationCodeModelCreator(response.data); }; diff --git a/src/queries/services/user/verifyEmailVerificationCode.ts b/src/queries/services/user/verifyHandlesVerificationCode.ts similarity index 50% rename from src/queries/services/user/verifyEmailVerificationCode.ts rename to src/queries/services/user/verifyHandlesVerificationCode.ts index a5bbcad7d2..8026e39054 100644 --- a/src/queries/services/user/verifyEmailVerificationCode.ts +++ b/src/queries/services/user/verifyHandlesVerificationCode.ts @@ -1,17 +1,18 @@ import axios from 'axios'; -import { verifyEmailVerificationCodeModelCreator } from 'queries/models'; +import { verifyHandlesVerificationCodeModelCreator } from 'queries/models'; -type verifyEmailVerificationCodeType = { +type verifyHandlesVerificationCodeType = { caipAddress: string; value: string; verificationCode: string; + social_platform: 'email' | 'discord' | 'telegram'; }; -export const verifyEmailVerificationCode = async (payload: verifyEmailVerificationCodeType) => { +export const verifyHandlesVerificationCode = async (payload: verifyHandlesVerificationCodeType) => { const response = await axios({ method: 'POST', - url: `http://localhost:7575/apis/v1/users/verify/${payload?.caipAddress}/email`, + url: `http://localhost:7575/apis/v1/users/verify/${payload?.caipAddress}/${payload?.social_platform}`, data: { value: payload?.value, verificationCode: payload?.verificationCode, @@ -20,5 +21,5 @@ export const verifyEmailVerificationCode = async (payload: verifyEmailVerificati 'Content-Type': 'application/json', }, }); - return verifyEmailVerificationCodeModelCreator(response.data); + return verifyHandlesVerificationCodeModelCreator(response.data); }; diff --git a/src/queries/types/user.ts b/src/queries/types/user.ts index ba02740202..3c6a3e2f87 100644 --- a/src/queries/types/user.ts +++ b/src/queries/types/user.ts @@ -48,13 +48,13 @@ export type UpdateProfileInfoResponse = { blockedUserList?: []; }; -export type SendEmailVerificationResponse = { +export type SendHandlesVerificationResponse = { email: string | null; success: boolean; VerificationCode?: string | null; }; -export type VerifyEmailVerificationResponse = { +export type VerifyHandlesVerificationResponse = { message: string; success: boolean; }; From dac8dd6d02e32968a10b39a6a6ece11cb65ec73b Mon Sep 17 00:00:00 2001 From: corlard3y Date: Thu, 21 Nov 2024 13:21:07 +0100 Subject: [PATCH 13/37] update telegram flow --- src/components/UserProfileSettings/AddTelegram.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index fd85dad8b5..30edea192e 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -11,6 +11,7 @@ import { generateVerificationProof } from 'modules/rewards/utils/generateVerific import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; import { Box, Button, Link, Modal, Telegram, Text, TextInput } from 'blocks'; +import { shortenText } from 'helpers/UtilityHelper'; type AddTelegramProps = { modalControl: ModalResponse; @@ -211,12 +212,12 @@ const AddTelegram: FC = ({ variant="bl-semibold" textAlign="center" > - {telegramCode} + {shortenText(`/verify ${caip10WalletAddress}-${telegramCode}`, 10)} @@ -241,7 +242,7 @@ const AddTelegram: FC = ({ color: 'text-brand-medium', }} > - telegram.me/pushlinkbot + https://t.me/PushStagingBot From 14a667392c9f0a7bfc519800e247e39397694492 Mon Sep 17 00:00:00 2001 From: Ashis Date: Wed, 27 Nov 2024 18:28:00 +0530 Subject: [PATCH 14/37] fix: added changes for telegram user validation --- src/components/UserProfileSettings/AddTelegram.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 30edea192e..3bb2721580 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -65,7 +65,7 @@ const AddTelegram: FC = ({ const sdkInstance = await getSDKInstance(); const data = { wallet: caip10WalletAddress, - value: telegramFormik.values.telegram, + value: {telegram_username: telegramFormik.values.telegram}, valueType: 'telegram', }; From 10b312efa684cf1ea6e97eac1d56d12fc40e1f38 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Wed, 27 Nov 2024 15:48:56 +0100 Subject: [PATCH 15/37] update url --- src/components/UserProfileSettings/AddTelegram.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 3bb2721580..65eb931c93 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -65,7 +65,7 @@ const AddTelegram: FC = ({ const sdkInstance = await getSDKInstance(); const data = { wallet: caip10WalletAddress, - value: {telegram_username: telegramFormik.values.telegram}, + value: { telegram_username: telegramFormik.values.telegram }, valueType: 'telegram', }; @@ -233,7 +233,7 @@ const AddTelegram: FC = ({ Date: Wed, 27 Nov 2024 17:11:12 +0100 Subject: [PATCH 16/37] update value and type --- src/components/UserProfileSettings/AddTelegram.tsx | 2 +- src/queries/services/user/sendHandlesVerificationCode.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 65eb931c93..21190a90e0 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -77,7 +77,7 @@ const AddTelegram: FC = ({ { caipAddress: caip10WalletAddress as string, verificationProof: verificationProof as string, - value: telegramFormik.values.telegram, + value: { telegram_username: telegramFormik.values.telegram }, social_platform: 'telegram', }, { diff --git a/src/queries/services/user/sendHandlesVerificationCode.ts b/src/queries/services/user/sendHandlesVerificationCode.ts index f2b2e9ac57..7ef56e7b50 100644 --- a/src/queries/services/user/sendHandlesVerificationCode.ts +++ b/src/queries/services/user/sendHandlesVerificationCode.ts @@ -4,7 +4,7 @@ import { sendHandlesVerificationCodeModelCreator } from 'queries/models'; type sendHandlesVerificationCodeType = { caipAddress: string; - value: string; + value: string | { telegram_username: string }; verificationProof: string; social_platform: 'email' | 'discord' | 'telegram'; }; From 00785dfa86a8e7c1ea1439c1011ada85c985649b Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 29 Nov 2024 14:33:44 +0100 Subject: [PATCH 17/37] add discord verification --- .../UserProfileSettings/AddDiscord.tsx | 131 ++++++++++++++---- .../user/sendHandlesVerificationCode.ts | 2 +- 2 files changed, 103 insertions(+), 30 deletions(-) diff --git a/src/components/UserProfileSettings/AddDiscord.tsx b/src/components/UserProfileSettings/AddDiscord.tsx index 9a91c42bdd..c6e7fb8c18 100644 --- a/src/components/UserProfileSettings/AddDiscord.tsx +++ b/src/components/UserProfileSettings/AddDiscord.tsx @@ -1,7 +1,17 @@ -import { FC, useState } from 'react'; +import { FC, useCallback, useState } from 'react'; +import { useSelector } from 'react-redux'; +import * as Yup from 'yup'; +import { useFormik } from 'formik'; + +import { useAccount } from 'hooks'; +import { useAppContext } from 'contexts/AppContext'; +import { walletToCAIP10 } from 'helpers/w2w'; +import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; +import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; import { Box, Button, Discord, Link, Modal, Text, TextInput } from 'blocks'; import { CopyButton, ModalResponse } from 'common'; +import { shortenText } from 'helpers/UtilityHelper'; type AddDiscordProps = { modalControl: ModalResponse; @@ -22,7 +32,68 @@ const AddDiscord: FC = ({ // setSuccessMessage, }) => { const { isOpen, onClose } = modalControl; - const [step, setStep] = useState(2); + const { account, wallet } = useAccount(); + const { handleConnectWalletAndEnableProfile } = useAppContext(); + + const caip10WalletAddress = walletToCAIP10({ account }); + const [step, setStep] = useState(1); + const [discordCode, setDiscordCode] = useState(''); + const { userPushSDKInstance } = useSelector((state: any) => { + return state.user; + }); + + const { mutate: sendVerification } = useSendHandlesVerificationCode(); + const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); + + const discordValidationSchema = Yup.object({ + discord: Yup.string().required('Required'), + }); + + const discordFormik = useFormik({ + initialValues: { discord: '' }, + validationSchema: discordValidationSchema, + onSubmit: () => { + handleSendVerificationCode(); + }, + }); + + const getSDKInstance = useCallback(async () => { + return userPushSDKInstance?.signer ? userPushSDKInstance : await handleConnectWalletAndEnableProfile({ wallet }); + }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); + + const handleSendVerificationCode = async () => { + const sdkInstance = await getSDKInstance(); + const data = { + wallet: caip10WalletAddress, + value: { discord_username: discordFormik.values.discord }, + valueType: 'telegram', + }; + + const verificationProof = await generateVerificationProof(data, sdkInstance); + + if (!verificationProof) return; + + sendVerification( + { + caipAddress: caip10WalletAddress as string, + verificationProof: verificationProof as string, + value: { discord_username: discordFormik.values.discord }, + social_platform: 'discord', + }, + { + onSuccess: (response: any) => { + if (response?.success) { + console.log(response); + setDiscordCode(response.verificationCode); + setStep(Steps.VerifyId); + } + }, + onError: (error: Error) => { + console.log('Error sending code', error); + }, + } + ); + }; return ( = ({ isOpen={isOpen} onClose={onClose} {...(step === Steps.VerifyId && { - onBack: () => setStep(step - 1), + onBack: () => setStep(Steps.EnterDiscord), })} - acceptButtonProps={null} + acceptButtonProps={ + step === Steps.EnterDiscord + ? { + children: 'Next', + onClick: () => { + discordFormik?.handleSubmit(); + }, + } + : null + } cancelButtonProps={null} > {step === Steps.EnterDiscord && ( @@ -63,32 +143,24 @@ const AddDiscord: FC = ({ Follow the steps to link your Discord to Push and receive notifications - - console.log('')} - // error={emailFormik.touched.email && Boolean(emailFormik.errors.email)} - // errorMessage={emailFormik.touched.email ? emailFormik.errors.email : ''} - /> - - - - - +
+ + + +
)} - {step === Steps.VerifyId && ( + {step === Steps.VerifyId && discordCode && ( = ({ variant="bl-semibold" textAlign="center" > - /verify 0x123...45678 665889 + {shortenText(`${caip10WalletAddress}-${discordCode}`, 10)} @@ -166,6 +238,7 @@ const AddDiscord: FC = ({ + {/* generate call link shortly */} Date: Fri, 29 Nov 2024 15:53:42 +0100 Subject: [PATCH 18/37] update dropdown --- .../UserProfileSettingsItem.tsx | 23 ++++--------------- .../components/ConnectSocialHandles.tsx | 23 ++++--------------- 2 files changed, 10 insertions(+), 36 deletions(-) diff --git a/src/components/UserProfileSettings/UserProfileSettingsItem.tsx b/src/components/UserProfileSettings/UserProfileSettingsItem.tsx index c5d5c40583..827a71424a 100644 --- a/src/components/UserProfileSettings/UserProfileSettingsItem.tsx +++ b/src/components/UserProfileSettings/UserProfileSettingsItem.tsx @@ -46,25 +46,12 @@ const UserProfileSettingsItem = ({ item }: any) => { Connect ) : ( - - } - onClick={() => console.log('disconnect')} - /> - - } + - + {item?.userStatus} + )} ); diff --git a/src/modules/dashboard/components/ConnectSocialHandles.tsx b/src/modules/dashboard/components/ConnectSocialHandles.tsx index e95daaaed6..6f7893bb23 100644 --- a/src/modules/dashboard/components/ConnectSocialHandles.tsx +++ b/src/modules/dashboard/components/ConnectSocialHandles.tsx @@ -142,25 +142,12 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, Connect ) : ( - - } - onClick={() => console.log('disconnect')} - /> - - } + - + {item?.userStatus} + )} From 71d7d6feac59d5a6f3b2c4bc47626a3d0848a47d Mon Sep 17 00:00:00 2001 From: corlard3y Date: Tue, 3 Dec 2024 22:41:47 +0100 Subject: [PATCH 19/37] add social handles to rewards points --- .../UserProfileSettingsItem.tsx | 18 +- .../UserProfileSocialSettings.tsx | 94 ++++++++- src/components/userSettings/UserSettings.tsx | 2 - src/modules/dashboard/Dashboard.tsx | 31 ++- .../components/ClaimSocialHandles.tsx | 18 +- .../components/ConnectSocialHandles.tsx | 92 +++++---- .../dashboard/components/Socialhandles.tsx | 19 +- .../RewardsActivitiesBottomSection.tsx | 11 +- .../components/RewardsActivitiesList.tsx | 187 +++++++++++------- .../components/RewardsActivitiesSection.tsx | 17 +- .../userSettings/UserSettingsModule.tsx | 7 +- src/queries/hooks/user/useGetSocialsStatus.ts | 19 +- .../services/user/getUserSocialsStatus.ts | 6 +- 13 files changed, 316 insertions(+), 205 deletions(-) diff --git a/src/components/UserProfileSettings/UserProfileSettingsItem.tsx b/src/components/UserProfileSettings/UserProfileSettingsItem.tsx index 827a71424a..62fb9587fc 100644 --- a/src/components/UserProfileSettings/UserProfileSettingsItem.tsx +++ b/src/components/UserProfileSettings/UserProfileSettingsItem.tsx @@ -1,6 +1,6 @@ -import { Box, Text, Button, Menu, Dropdown, MenuItem, OptOut, CaretDown } from 'blocks'; +import { Box, Text, Button, Skeleton } from 'blocks'; -const UserProfileSettingsItem = ({ item }: any) => { +const UserProfileSettingsItem = ({ item, isPending }: any) => { return ( { Connect ) : ( - + + + )} ); diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index cf3fb5647e..62df5d39e8 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -1,5 +1,6 @@ // React and other libraries -import { FC } from 'react'; +import { FC, useEffect, useState } from 'react'; +import { useSelector } from 'react-redux'; // Helpers import { useDisclosure } from 'common'; @@ -13,6 +14,11 @@ import { AddEmail } from './AddEmail'; import AddTelegram from './AddTelegram'; import AddDiscord from './AddDiscord'; import UserProfileSettingsItem from './UserProfileSettingsItem'; +import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; +import { css } from 'styled-components'; +import UnlockProfileWrapper, { UNLOCK_PROFILE_TYPE } from 'components/chat/unlockProfile/UnlockProfileWrapper'; +import APP_PATHS from 'config/AppPaths'; +import { useNavigate } from 'react-router-dom'; type UserProfileSocialSettingsType = { errorMessage?: string; @@ -21,16 +27,70 @@ type UserProfileSocialSettingsType = { setSuccessMessage: (successMessage: string) => void; }; +type SocialHandleStatusType = { + email: string | null; + discord_username: string | null; + telegram_username: string | null; +}; + const UserProfileSocialSettings: FC = ({ setErrorMessage, setSuccessMessage }) => { const modalControl = useDisclosure(); const telegramModalControl = useDisclosure(); const discordModalControl = useDisclosure(); const { account } = useAccount(); + const navigate = useNavigate(); + + const [socialHandleStatus, setSocialHandleStatus] = useState(); + const [isAuthModalVisible, setIsAuthModalVisible] = useState(true); + + const { userPushSDKInstance } = useSelector((state: any) => { + return state.user; + }); // Getting user Id by wallet address const channelAddress = walletToCAIP10({ account }); - const { data: socialHandleStatus, refetch: refetchSocialHandleStatus } = useGetSocialsStatus(channelAddress); + const { mutate: fetchSocialStatus, isPending } = useGetSocialsStatus(); + + // Fetch social status logic + const getSocialStatus = async () => { + if (!channelAddress) return; + + const data = {}; + + const verificationProof = await generateVerificationProof(data, userPushSDKInstance); + + if (!verificationProof) return; + + if (channelAddress) { + fetchSocialStatus( + { channelAddress, verificationProof: verificationProof as string }, + { + onError: (error) => { + setErrorMessage('Failed to fetch social status.'); + console.error('Error fetching social status:', error); + }, + onSuccess: (data) => { + setSocialHandleStatus(data); + }, + } + ); + } + }; + + useEffect(() => { + if (!userPushSDKInstance || !channelAddress) return; + getSocialStatus(); + }, [userPushSDKInstance, channelAddress]); + + useEffect(() => { + setIsAuthModalVisible(userPushSDKInstance && userPushSDKInstance?.readmode()); + }, [userPushSDKInstance]); + + const handleCloseAuthModal = () => { + setIsAuthModalVisible(false); + navigate(APP_PATHS.WelcomeDashboard); + }; const itemList = [ { @@ -75,14 +135,36 @@ const UserProfileSocialSettings: FC = ({ setError {itemList?.map((item) => ( - + ))} + {isAuthModalVisible && ( + + + + )} + {modalControl.isOpen && ( @@ -91,7 +173,7 @@ const UserProfileSocialSettings: FC = ({ setError {telegramModalControl.isOpen && ( @@ -100,7 +182,7 @@ const UserProfileSocialSettings: FC = ({ setError {discordModalControl.isOpen && ( diff --git a/src/components/userSettings/UserSettings.tsx b/src/components/userSettings/UserSettings.tsx index 3810217c92..f5bbd4c509 100644 --- a/src/components/userSettings/UserSettings.tsx +++ b/src/components/userSettings/UserSettings.tsx @@ -119,10 +119,8 @@ function UserSettings() { return ( - {/* */} Settings Customize your Push profile or manage your notification preferences - {/* */} diff --git a/src/modules/dashboard/Dashboard.tsx b/src/modules/dashboard/Dashboard.tsx index 641a267dcd..f9d9b37b5b 100644 --- a/src/modules/dashboard/Dashboard.tsx +++ b/src/modules/dashboard/Dashboard.tsx @@ -2,7 +2,7 @@ import { FC, useState } from 'react'; // Components -import { Alert, Box } from 'blocks'; +import { Alert, Box, Button, Link } from 'blocks'; import { AnalyticsOverview } from './components/AnalyticsOverview'; import { ChannelVariantsSection } from './components/ChannelVariantsSection'; import { DashboardHeader } from './components/DashboardHeader'; @@ -10,10 +10,13 @@ import { DashboardSubHeader } from './components/DashboardSubHeader'; import { FeaturedChannels } from './components/FeaturedChannels'; import { StakingPools } from './components/StakingPools'; import { SocialHandles } from './components/Socialhandles'; +import { useAccount } from 'hooks'; export type DashboardProps = {}; const Dashboard: FC = () => { + const { isWalletConnected } = useAccount(); + const [showSubHeader, setSubHeaderVisibility] = useState(true); // for alerts const [errorMessage, setErrorMessage] = useState(''); @@ -57,12 +60,26 @@ const Dashboard: FC = () => { )} - + {isWalletConnected && ( + + + + } + /> + )} = () => { +const ClaimSocialHandles: FC = ({ claimButton }) => { return ( = () => { 25,000 - + {claimButton} ); diff --git a/src/modules/dashboard/components/ConnectSocialHandles.tsx b/src/modules/dashboard/components/ConnectSocialHandles.tsx index 6f7893bb23..48b0a21f63 100644 --- a/src/modules/dashboard/components/ConnectSocialHandles.tsx +++ b/src/modules/dashboard/components/ConnectSocialHandles.tsx @@ -1,23 +1,10 @@ -import { FC } from 'react'; -import { css } from 'styled-components'; +import { FC, useEffect, useState } from 'react'; import { useAccount } from 'hooks'; import { walletToCAIP10 } from 'helpers/w2w'; import { useGetSocialsStatus } from 'queries'; -import { - Box, - Button, - Dropdown, - Menu, - MenuItem, - Text, - CaretDown, - OptOut, - EmailProfile, - TelegramProfile, - DiscordProfile, -} from 'blocks'; +import { Box, Button, Text, EmailProfile, TelegramProfile, DiscordProfile, Tick, Skeleton } from 'blocks'; import { useDisclosure } from 'common'; import { AddEmail } from 'components/UserProfileSettings/AddEmail'; import AddDiscord from 'components/UserProfileSettings/AddDiscord'; @@ -35,16 +22,48 @@ export type SocialHandlesItemType = { isConnected: boolean; }; +type SocialHandleStatusType = { + email: string | boolean | null; + discord_username: string | boolean | null; + telegram_username: string | boolean | null; +}; + const ConnectSocialHandles: FC = ({ setErrorMessage, setSuccessMessage }) => { const modalControl = useDisclosure(); const telegramModalControl = useDisclosure(); const discordModalControl = useDisclosure(); const { account } = useAccount(); + const [socialHandleStatus, setSocialHandleStatus] = useState(); // Getting user Id by wallet address const channelAddress = walletToCAIP10({ account }); - const { data: socialHandleStatus, refetch: refetchSocialHandleStatus } = useGetSocialsStatus(channelAddress); + const { mutate: fetchSocialStatus, isPending } = useGetSocialsStatus(); + + // Fetch social status logic + const getSocialStatus = async () => { + if (!channelAddress) return; + + if (channelAddress) { + fetchSocialStatus( + { channelAddress }, + { + onError: (error) => { + setErrorMessage('Failed to fetch social status.'); + console.error('Error fetching social status:', error); + }, + onSuccess: (data) => { + setSocialHandleStatus(data); + }, + } + ); + } + }; + + useEffect(() => { + if (!channelAddress) return; + getSocialStatus(); + }, [channelAddress]); const socialHandlesList: any[] = [ { @@ -75,8 +94,8 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, {socialHandlesList.map((item: any) => ( @@ -87,17 +106,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, padding={{ initial: 'spacing-md', ml: 'spacing-md spacing-sm', tb: 'spacing-sm', lp: 'spacing-sm' }} borderRadius="radius-md" gap="spacing-sm" - width={{ - initial: '290px', - mm: '258px', - ml: 'auto', - tb: '278px', - lp: '278px', - }} - css={css` - flex-shrink: 0; - `} - minHeight={{ initial: 'auto', tb: '180px' }} + width="-webkit-fill-available" > = ({ setErrorMessage, alignItems="center" alignSelf="flex-start" > - {item.userStatus === null ? ( + {item.userStatus ? ( + + + + ) : ( - ) : ( - )} @@ -156,7 +168,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, {modalControl.isOpen && ( @@ -165,7 +177,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, {telegramModalControl.isOpen && ( @@ -174,7 +186,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, {discordModalControl.isOpen && ( diff --git a/src/modules/dashboard/components/Socialhandles.tsx b/src/modules/dashboard/components/Socialhandles.tsx index 94d069c962..79e72a9b03 100644 --- a/src/modules/dashboard/components/Socialhandles.tsx +++ b/src/modules/dashboard/components/Socialhandles.tsx @@ -1,28 +1,23 @@ -import { FC } from 'react'; +import { FC, ReactNode } from 'react'; -import { Box } from 'blocks'; +import { BlocksSpaceType, Box, ResponsiveProp } from 'blocks'; import { ClaimSocialHandles } from './ClaimSocialHandles'; import { ConnectSocialHandles } from './ConnectSocialHandles'; -import { useAccount } from 'hooks'; export type SocialHandlesProps = { errorMessage?: string; setErrorMessage: (errorMessage: string) => void; successMessage?: string; setSuccessMessage: (successMessage: string) => void; + padding?: ResponsiveProp; + claimButton?: ReactNode; }; -const SocialHandles: FC = ({ setErrorMessage, setSuccessMessage }) => { - const { isWalletConnected } = useAccount(); - - // Check if the wallet is connected to the DApp. - // If not, return null. If connected, return SocialHandles. - if (!isWalletConnected) return null; - +const SocialHandles: FC = ({ setErrorMessage, setSuccessMessage, padding, claimButton }) => { return ( = ({ setErrorMessage, setSuccessMess alignItems="flex-start" > {/* Render Claim based on Social Handles if wallet is connected */} - + {/* Render option to connect Social Handles */} = gap="spacing-lg" margin="spacing-none spacing-none spacing-md spacing-none" > - - - + diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index eb41493cf3..5f2f049853 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import { FC, useState } from 'react'; import { css } from 'styled-components'; @@ -15,10 +15,14 @@ import { import { useRewardsContext } from 'contexts/RewardsContext'; import { RewardsActivitiesListItem } from './RewardsActivitiesListItem'; +import { SocialHandles } from 'modules/dashboard/components/Socialhandles'; export type RewardActivitiesProps = {}; const RewardsActivitiesList: FC = () => { + // for alerts + const [errorMessage, setErrorMessage] = useState(''); + const [successMessage, setSuccessMessage] = useState(''); const { account, isWalletConnected } = useAccount(); const { data: rewardActivitiesResponse, isLoading: isLoadingActivities } = useGetRewardsActivities(); @@ -70,84 +74,119 @@ const RewardsActivitiesList: FC = () => { - {/* These are the social activites Twitter and discord */} - {socialActivities.map((activity: Activity) => ( - - ))} - {(isLocked || !isWalletConnected) && ( - + - + + {/* These are the social activites Twitter and discord */} + {socialActivities.map((activity: Activity) => ( + - - Verify X and Discord to unlock more activities - - - )} - - {/* Activites related specific channel subscription */} - {channelSubscriptionActivities.map((activity: Activity) => ( - - ))} - - {/* These are other platform specifc reward activities */} - {platformRewardActivities.map((activity: Activity) => ( - + + Verify X and Discord to unlock more activities + + + )} + + - ))} + + + + {/* Activites related specific channel subscription */} + {channelSubscriptionActivities.map((activity: Activity) => ( + + ))} + + {/* These are other platform specifc reward activities */} + {platformRewardActivities.map((activity: Activity) => ( + + ))} + ); }; diff --git a/src/modules/rewards/components/RewardsActivitiesSection.tsx b/src/modules/rewards/components/RewardsActivitiesSection.tsx index 9ee6e43d7d..707b7f54b4 100644 --- a/src/modules/rewards/components/RewardsActivitiesSection.tsx +++ b/src/modules/rewards/components/RewardsActivitiesSection.tsx @@ -1,22 +1,7 @@ -import { Box, Text } from 'blocks'; import { RewardsActivitiesList } from './RewardsActivitiesList'; const RewardsActivitiesSection = () => { - return ( - - - Activities - - - - ); + return ; }; export { RewardsActivitiesSection }; diff --git a/src/modules/userSettings/UserSettingsModule.tsx b/src/modules/userSettings/UserSettingsModule.tsx index 4571d806b5..4159494578 100644 --- a/src/modules/userSettings/UserSettingsModule.tsx +++ b/src/modules/userSettings/UserSettingsModule.tsx @@ -7,7 +7,6 @@ import styled from 'styled-components'; // Internal Compoonents import UserSettings from 'components/userSettings/UserSettings'; - // Internal Configs import GLOBALS, { device, globalsMargin } from 'config/Globals'; @@ -18,7 +17,7 @@ const UserSettingsModule = () => { ); -} +}; // css styles const Container = styled.div` @@ -44,8 +43,8 @@ const Container = styled.div` @media ${device.laptop} { margin: ${GLOBALS.ADJUSTMENTS.MARGIN.MINI_MODULES.TABLET}; height: calc(100vh - ${GLOBALS.CONSTANTS.HEADER_HEIGHT}px - ${globalsMargin.MINI_MODULES.TABLET.TOP} - ${ - globalsMargin.MINI_MODULES.TABLET.BOTTOM - }); + globalsMargin.MINI_MODULES.TABLET.BOTTOM +}); } @media ${device.mobileL} { diff --git a/src/queries/hooks/user/useGetSocialsStatus.ts b/src/queries/hooks/user/useGetSocialsStatus.ts index 8783fc88a0..2090a9a18d 100644 --- a/src/queries/hooks/user/useGetSocialsStatus.ts +++ b/src/queries/hooks/user/useGetSocialsStatus.ts @@ -1,19 +1,10 @@ -import { useQuery, UseQueryOptions } from '@tanstack/react-query'; +import { useMutation } from '@tanstack/react-query'; import { userSocialStatus } from '../../queryKeys'; import { getUserSocialsStatus } from '../../services'; -//Types -import { UserSocialStatusResponse } from 'queries/types'; - -export const useGetSocialsStatus = ( - channelAddress: string, - config?: Partial> -) => { - const query = useQuery({ - queryKey: [userSocialStatus, channelAddress], - queryFn: () => getUserSocialsStatus({ channelAddress }), - ...config, +export const useGetSocialsStatus = () => + useMutation({ + mutationKey: [userSocialStatus], + mutationFn: getUserSocialsStatus, }); - return query; -}; diff --git a/src/queries/services/user/getUserSocialsStatus.ts b/src/queries/services/user/getUserSocialsStatus.ts index e0bb24c48b..bc72ea4fce 100644 --- a/src/queries/services/user/getUserSocialsStatus.ts +++ b/src/queries/services/user/getUserSocialsStatus.ts @@ -3,11 +3,15 @@ import { getSocialsStatusModelCreator } from 'queries/models'; type SocialStatusType = { channelAddress: string; + verificationProof?: string; }; export const getUserSocialsStatus = (payload: SocialStatusType) => { return axios({ - method: 'GET', + method: 'POST', url: `http://localhost:7575/apis/v1/users/${payload?.channelAddress}`, + data: { + verificationProof: payload?.verificationProof, + }, }).then((response) => getSocialsStatusModelCreator(response.data)); }; From 1092267ffa905ae2937cf69ef232604ac663a580 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Tue, 3 Dec 2024 23:45:14 +0100 Subject: [PATCH 20/37] add rewards handle list item --- .../components/RewardsActivitiesList.tsx | 15 ++----- .../rewards/components/SocialHandleItem.tsx | 44 +++++++++++++++++++ 2 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 src/modules/rewards/components/SocialHandleItem.tsx diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index 5f2f049853..aa292512c6 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -1,4 +1,4 @@ -import { FC, useState } from 'react'; +import { FC } from 'react'; import { css } from 'styled-components'; @@ -15,14 +15,11 @@ import { import { useRewardsContext } from 'contexts/RewardsContext'; import { RewardsActivitiesListItem } from './RewardsActivitiesListItem'; -import { SocialHandles } from 'modules/dashboard/components/Socialhandles'; +import SocialHandleItem from './SocialHandleItem'; export type RewardActivitiesProps = {}; const RewardsActivitiesList: FC = () => { - // for alerts - const [errorMessage, setErrorMessage] = useState(''); - const [successMessage, setSuccessMessage] = useState(''); const { account, isWalletConnected } = useAccount(); const { data: rewardActivitiesResponse, isLoading: isLoadingActivities } = useGetRewardsActivities(); @@ -141,13 +138,7 @@ const RewardsActivitiesList: FC = () => { )} - + { + // for alerts + const [errorMessage, setErrorMessage] = useState(''); + const [successMessage, setSuccessMessage] = useState(''); + return ( + + {successMessage && ( + + + + )} + + {errorMessage && ( + + + + )} + + + + ); +}; + +export default SocialHandleItem; From da2589eeb90f2c46bee3dba1d4e9f2a07de8cf70 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Thu, 5 Dec 2024 14:04:14 +0100 Subject: [PATCH 21/37] update rewards email telegram --- .../UserProfileSettings/AddEmail.tsx | 3 +- .../UserProfileSettings/AddTelegram.tsx | 8 +- .../UserProfileSocialSettings.tsx | 1 + .../components/ConnectSocialHandles.tsx | 3 +- .../components/RewardsActivitiesList.tsx | 24 ++- .../rewards/components/SocialHandleItem.tsx | 142 +++++++++++++----- .../rewards/utils/activityTypeArray.ts | 1 + src/queries/baseURL.ts | 13 ++ .../services/user/getUserSocialsStatus.ts | 10 +- .../user/sendHandlesVerificationCode.ts | 3 +- .../user/verifyHandlesVerificationCode.ts | 3 +- src/queries/types/rewards.ts | 1 + 12 files changed, 163 insertions(+), 49 deletions(-) diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index ee57e49963..e69ec37d7c 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -41,7 +41,7 @@ const AddEmail: FC = ({ return state.user; }); - const { mutate: sendVerification, isPending: sendingVerification } = useSendHandlesVerificationCode(); + const { mutate: sendVerification, isPending: isSendingVerification } = useSendHandlesVerificationCode(); const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); const emailValidationSchema = Yup.object({ @@ -161,6 +161,7 @@ const AddEmail: FC = ({ step === Steps.EnterEmail ? { children: 'Next', + loading: isSendingVerification, onClick: () => { emailFormik.handleSubmit(); }, diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 21190a90e0..444bdea02b 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -8,9 +8,9 @@ import { useAccount } from 'hooks'; import { useAppContext } from 'contexts/AppContext'; import { walletToCAIP10 } from 'helpers/w2w'; import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; -import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; +import { useSendHandlesVerificationCode } from 'queries'; -import { Box, Button, Link, Modal, Telegram, Text, TextInput } from 'blocks'; +import { Box, Link, Modal, Telegram, Text, TextInput } from 'blocks'; import { shortenText } from 'helpers/UtilityHelper'; type AddTelegramProps = { @@ -42,8 +42,7 @@ const AddTelegram: FC = ({ return state.user; }); - const { mutate: sendVerification } = useSendHandlesVerificationCode(); - const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); + const { mutate: sendVerification, isPending: isSendingVerification } = useSendHandlesVerificationCode(); const telegramValidationSchema = Yup.object({ telegram: Yup.string().required('Required'), @@ -107,6 +106,7 @@ const AddTelegram: FC = ({ step === Steps.EnterTelegram ? { children: 'Next', + loading: isSendingVerification, onClick: () => { telegramFormik?.handleSubmit(); }, diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index 62df5d39e8..bb67f1cf0f 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -107,6 +107,7 @@ const UserProfileSocialSettings: FC = ({ setError onClick: () => telegramModalControl.open(), userStatus: socialHandleStatus?.telegram_username || null, }, + // disable discord on prod { icon: () => , itemTitle: 'Discord', diff --git a/src/modules/dashboard/components/ConnectSocialHandles.tsx b/src/modules/dashboard/components/ConnectSocialHandles.tsx index 48b0a21f63..6a9ad1ecda 100644 --- a/src/modules/dashboard/components/ConnectSocialHandles.tsx +++ b/src/modules/dashboard/components/ConnectSocialHandles.tsx @@ -4,7 +4,7 @@ import { useAccount } from 'hooks'; import { walletToCAIP10 } from 'helpers/w2w'; import { useGetSocialsStatus } from 'queries'; -import { Box, Button, Text, EmailProfile, TelegramProfile, DiscordProfile, Tick, Skeleton } from 'blocks'; +import { Box, Button, Text, EmailProfile, TelegramProfile, Tick, Skeleton, DiscordProfile } from 'blocks'; import { useDisclosure } from 'common'; import { AddEmail } from 'components/UserProfileSettings/AddEmail'; import AddDiscord from 'components/UserProfileSettings/AddDiscord'; @@ -80,6 +80,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, onClick: () => telegramModalControl.open(), userStatus: socialHandleStatus?.telegram_username || null, }, + // disable discord on prod { icon: () => , itemTitle: 'Discord', diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index aa292512c6..93b743ff2f 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -40,6 +40,10 @@ const RewardsActivitiesList: FC = () => { ? Array(2).fill(0) : activityList.filter((activity) => activity.index.startsWith(`social-activity`) && activity?.status === 'ENABLED'); + const emailTelegramActivities = activityList.filter((activity) => + activity.index.startsWith(`notifications_integration_email_telegram`) + )[0]; + const platformRewardActivities = isLoading ? Array(7).fill(0) : activityList.filter((activity) => activity.index.startsWith(`reward-activity`) && activity?.status === 'ENABLED'); @@ -51,11 +55,16 @@ const RewardsActivitiesList: FC = () => { const { isLocked } = useRewardsContext(); // Combine all activities into a single array - const allActivities = [...socialActivities, ...platformRewardActivities, ...channelSubscriptionActivities]; + const allActivities = [ + ...socialActivities, + ...platformRewardActivities, + ...channelSubscriptionActivities, + emailTelegramActivities, + ]; // Extract the `activityType` from each activity and filter out any undefined values const activityTypes = allActivities - .map((activity) => activity.activityType) // Extract `activityType` + .map((activity) => activity?.activityType) // Extract `activityType` .filter(Boolean); // Remove undefined/null values const { @@ -138,7 +147,16 @@ const RewardsActivitiesList: FC = () => { )} - + { +export type SocialHandleItemFCType = { + userId: string; + activity: Activity; + isLoadingItem: boolean; + isLocked: boolean; + allUsersActivity: StakeActivityResponse; + isAllActivitiesLoading: boolean; + refetchActivity: () => void; +}; + +const SocialHandleItem: FC = ({ + userId, + activity, + isLoadingItem, + isLocked, + allUsersActivity, + isAllActivitiesLoading, + refetchActivity, +}) => { + const { isWalletConnected } = useAccount(); + const usersSingleActivity = allUsersActivity?.[activity?.activityType] as UsersActivity; + const isLoading = isAllActivitiesLoading; + // for alerts const [errorMessage, setErrorMessage] = useState(''); const [successMessage, setSuccessMessage] = useState(''); + const { refetchRecentActivities, getLockStatus, statusRecentActivities } = useLockedStatus(); + + const isRewardsLocked = useMemo(() => { + return ( + (isLocked || !isWalletConnected) && + activity?.activityType !== 'follow_push_on_discord' && + activity?.activityType !== 'follow_push_on_twitter' + ); + }, [isLocked, isWalletConnected, activity?.activityType]); + + const updateActivities = () => { + refetchActivity(); + refetchRecentActivities(); + }; + + // if activityType is twitter or discord, then re-call check lock status fn + useEffect(() => { + if (activity?.activityType == 'follow_push_on_discord' || activity?.activityType == 'follow_push_on_twitter') { + getLockStatus(); + } + }, [usersSingleActivity?.status, activity?.activityType, statusRecentActivities]); + return ( - - {successMessage && ( - - - - )} - - {errorMessage && ( - - - - )} - - - + + + {successMessage && ( + + + + )} + + {errorMessage && ( + + + + )} + + + Locked + + ) : ( + updateActivities()} + setErrorMessage={setErrorMessage} + usersSingleActivity={usersSingleActivity} + isLoadingActivity={isLoading} + label={'Claim'} + /> + ) + } + /> + + ); }; diff --git a/src/modules/rewards/utils/activityTypeArray.ts b/src/modules/rewards/utils/activityTypeArray.ts index ac0341948b..56968897bb 100644 --- a/src/modules/rewards/utils/activityTypeArray.ts +++ b/src/modules/rewards/utils/activityTypeArray.ts @@ -9,6 +9,7 @@ export const otherRewardActivities: ActvityType[] = [ 'active_push_chat_user', 'hold_push_alpha_access_nft', 'hold_push_rockstar_nft', + 'notifications_integration_email_telegram_discord', ]; export const channelSubscriptionActivities: ActvityType[] = [ diff --git a/src/queries/baseURL.ts b/src/queries/baseURL.ts index 961f354b19..865746a80f 100644 --- a/src/queries/baseURL.ts +++ b/src/queries/baseURL.ts @@ -20,4 +20,17 @@ export const getRewardsBaseURL = () => { } }; +export const getCustomDeliveryURL = () => { + switch (appConfig.appEnv) { + case 'prod': + return `https://custom-delivery-dev.push.org`; + case 'staging': + return `https://custom-delivery-dev.push.org`; + case 'dev': + return `https://custom-delivery-dev.push.org`; + default: + return `https://custom-delivery-dev.push.org`; + } +}; + export const analyticsBaseURL = 'https://backend.epns.io/apis/v1'; diff --git a/src/queries/services/user/getUserSocialsStatus.ts b/src/queries/services/user/getUserSocialsStatus.ts index bc72ea4fce..50914e7aac 100644 --- a/src/queries/services/user/getUserSocialsStatus.ts +++ b/src/queries/services/user/getUserSocialsStatus.ts @@ -1,4 +1,5 @@ import axios from 'axios'; +import { getCustomDeliveryURL } from 'queries/baseURL'; import { getSocialsStatusModelCreator } from 'queries/models'; type SocialStatusType = { @@ -6,12 +7,13 @@ type SocialStatusType = { verificationProof?: string; }; -export const getUserSocialsStatus = (payload: SocialStatusType) => { - return axios({ +export const getUserSocialsStatus = async (payload: SocialStatusType) => { + const response = await axios({ method: 'POST', - url: `http://localhost:7575/apis/v1/users/${payload?.channelAddress}`, + url: `${getCustomDeliveryURL()}/apis/v1/users/${payload?.channelAddress}`, data: { verificationProof: payload?.verificationProof, }, - }).then((response) => getSocialsStatusModelCreator(response.data)); + }); + return getSocialsStatusModelCreator(response.data); }; diff --git a/src/queries/services/user/sendHandlesVerificationCode.ts b/src/queries/services/user/sendHandlesVerificationCode.ts index f36e3209a1..925d3b356c 100644 --- a/src/queries/services/user/sendHandlesVerificationCode.ts +++ b/src/queries/services/user/sendHandlesVerificationCode.ts @@ -1,4 +1,5 @@ import axios from 'axios'; +import { getCustomDeliveryURL } from 'queries/baseURL'; import { sendHandlesVerificationCodeModelCreator } from 'queries/models'; @@ -12,7 +13,7 @@ type sendHandlesVerificationCodeType = { export const sendHandlesVerificationCode = async (payload: sendHandlesVerificationCodeType) => { const response = await axios({ method: 'POST', - url: `http://localhost:7575/apis/v1/users/verify/init/${payload?.caipAddress}/${payload.social_platform}`, + url: `${getCustomDeliveryURL()}/apis/v1/users/verify/init/${payload?.caipAddress}/${payload.social_platform}`, data: { value: payload?.value, verificationProof: payload?.verificationProof, diff --git a/src/queries/services/user/verifyHandlesVerificationCode.ts b/src/queries/services/user/verifyHandlesVerificationCode.ts index 8026e39054..c6d7d128e8 100644 --- a/src/queries/services/user/verifyHandlesVerificationCode.ts +++ b/src/queries/services/user/verifyHandlesVerificationCode.ts @@ -1,4 +1,5 @@ import axios from 'axios'; +import { getCustomDeliveryURL } from 'queries/baseURL'; import { verifyHandlesVerificationCodeModelCreator } from 'queries/models'; @@ -12,7 +13,7 @@ type verifyHandlesVerificationCodeType = { export const verifyHandlesVerificationCode = async (payload: verifyHandlesVerificationCodeType) => { const response = await axios({ method: 'POST', - url: `http://localhost:7575/apis/v1/users/verify/${payload?.caipAddress}/${payload?.social_platform}`, + url: `${getCustomDeliveryURL()}/apis/v1/users/verify/${payload?.caipAddress}/${payload?.social_platform}`, data: { value: payload?.value, verificationCode: payload?.verificationCode, diff --git a/src/queries/types/rewards.ts b/src/queries/types/rewards.ts index 338dcfb708..ca9b94d69c 100644 --- a/src/queries/types/rewards.ts +++ b/src/queries/types/rewards.ts @@ -9,6 +9,7 @@ export type RewardsAcitivitesResponse = { export type ActvityType = | 'follow_push_on_discord' | 'follow_push_on_twitter' + | 'notifications_integration_email_telegram_discord' | 'create_gated_group_push_chat' | 'subscribe_5_channels_push' | 'subscribe_20_channels_push' From ccc1aec6bb4bb6348e236612affd1eb90aff3c02 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Thu, 5 Dec 2024 14:20:48 +0100 Subject: [PATCH 22/37] update index --- src/modules/rewards/components/RewardsActivitiesList.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index 93b743ff2f..bebfc897f1 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -40,9 +40,7 @@ const RewardsActivitiesList: FC = () => { ? Array(2).fill(0) : activityList.filter((activity) => activity.index.startsWith(`social-activity`) && activity?.status === 'ENABLED'); - const emailTelegramActivities = activityList.filter((activity) => - activity.index.startsWith(`notifications_integration_email_telegram`) - )[0]; + const emailTelegramActivities = activityList.filter((activity) => activity.index.startsWith(`custom-delivery`))[0]; const platformRewardActivities = isLoading ? Array(7).fill(0) From a2dbe83f5f6e8c750ecd0600714ba84f07a10fd9 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 6 Dec 2024 10:31:46 +0100 Subject: [PATCH 23/37] update telegram and discord --- .../UserProfileSettings/AddDiscord.tsx | 13 ++++++----- .../UserProfileSettings/AddTelegram.tsx | 5 ++-- .../UserProfileSocialSettings.tsx | 23 +++++++++++-------- src/config/config-dev.js | 4 ++++ src/config/config-prod.js | 4 ++++ src/config/config-staging.js | 4 ++++ .../components/ConnectSocialHandles.tsx | 18 +++++++-------- 7 files changed, 44 insertions(+), 27 deletions(-) diff --git a/src/components/UserProfileSettings/AddDiscord.tsx b/src/components/UserProfileSettings/AddDiscord.tsx index c6e7fb8c18..bc716e8788 100644 --- a/src/components/UserProfileSettings/AddDiscord.tsx +++ b/src/components/UserProfileSettings/AddDiscord.tsx @@ -6,10 +6,11 @@ import { useFormik } from 'formik'; import { useAccount } from 'hooks'; import { useAppContext } from 'contexts/AppContext'; import { walletToCAIP10 } from 'helpers/w2w'; -import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; +import { useSendHandlesVerificationCode } from 'queries'; import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; +import { appConfig } from 'config'; -import { Box, Button, Discord, Link, Modal, Text, TextInput } from 'blocks'; +import { Box, Discord, Link, Modal, Text, TextInput } from 'blocks'; import { CopyButton, ModalResponse } from 'common'; import { shortenText } from 'helpers/UtilityHelper'; @@ -42,8 +43,7 @@ const AddDiscord: FC = ({ return state.user; }); - const { mutate: sendVerification } = useSendHandlesVerificationCode(); - const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); + const { mutate: sendVerification, isPending: isSendingVerification } = useSendHandlesVerificationCode(); const discordValidationSchema = Yup.object({ discord: Yup.string().required('Required'), @@ -107,6 +107,7 @@ const AddDiscord: FC = ({ step === Steps.EnterDiscord ? { children: 'Next', + loading: isSendingVerification, onClick: () => { discordFormik?.handleSubmit(); }, @@ -240,7 +241,7 @@ const AddDiscord: FC = ({ {/* generate call link shortly */} = ({ color: 'text-brand-medium', }} > - discordapp.com/users/pushlinkbot + {appConfig?.discordExternalURL} diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 444bdea02b..380a6f4cee 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -9,6 +9,7 @@ import { useAppContext } from 'contexts/AppContext'; import { walletToCAIP10 } from 'helpers/w2w'; import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; import { useSendHandlesVerificationCode } from 'queries'; +import { appConfig } from 'config'; import { Box, Link, Modal, Telegram, Text, TextInput } from 'blocks'; import { shortenText } from 'helpers/UtilityHelper'; @@ -233,7 +234,7 @@ const AddTelegram: FC = ({ = ({ color: 'text-brand-medium', }} > - https://t.me/PushStagingBot + {appConfig?.telegramExternalURL} diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index bb67f1cf0f..04c2c8ea81 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -1,12 +1,20 @@ // React and other libraries import { FC, useEffect, useState } from 'react'; +import { css } from 'styled-components'; import { useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; -// Helpers +//Hooks import { useDisclosure } from 'common'; import { useAccount } from 'hooks'; import { useGetSocialsStatus } from 'queries'; + +// Helpers +import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; +import { appConfig } from 'config'; import { walletToCAIP10 } from 'helpers/w2w'; +import UnlockProfileWrapper, { UNLOCK_PROFILE_TYPE } from 'components/chat/unlockProfile/UnlockProfileWrapper'; +import APP_PATHS from 'config/AppPaths'; //Components import { Box, DiscordProfile, EmailProfile, TelegramProfile, Text } from 'blocks'; @@ -14,11 +22,6 @@ import { AddEmail } from './AddEmail'; import AddTelegram from './AddTelegram'; import AddDiscord from './AddDiscord'; import UserProfileSettingsItem from './UserProfileSettingsItem'; -import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; -import { css } from 'styled-components'; -import UnlockProfileWrapper, { UNLOCK_PROFILE_TYPE } from 'components/chat/unlockProfile/UnlockProfileWrapper'; -import APP_PATHS from 'config/AppPaths'; -import { useNavigate } from 'react-router-dom'; type UserProfileSocialSettingsType = { errorMessage?: string; @@ -100,22 +103,22 @@ const UserProfileSocialSettings: FC = ({ setError onClick: () => modalControl.open(), userStatus: socialHandleStatus?.email || null, }, - { + appConfig?.telegramExternalURL && { icon: () => , itemTitle: 'Telegram', itemDescription: 'Receive notifications as Telegram messages', onClick: () => telegramModalControl.open(), userStatus: socialHandleStatus?.telegram_username || null, }, - // disable discord on prod - { + appConfig?.discordExternalURL && { icon: () => , itemTitle: 'Discord', itemDescription: 'Receive notifications as Discord messages', onClick: () => discordModalControl.open(), userStatus: socialHandleStatus?.discord_username || null, }, - ]; + ].filter(Boolean); + return ( diff --git a/src/config/config-dev.js b/src/config/config-dev.js index 185a95759c..988a9d0eb0 100644 --- a/src/config/config-dev.js +++ b/src/config/config-dev.js @@ -81,6 +81,10 @@ export const config = { extension: 'https://chrome.google.com/webstore/detail/epns-staging-protocol-alp/bjiennpmhdcandkpigcploafccldlakj', howto: 'https://push.org/docs', }, + + // social media integration + telegramExternalURL: 'https://t.me/PushStagingBot', + discordExternalURL: 'https://discordapp.com/users/pushlinkbot', }; /** diff --git a/src/config/config-prod.js b/src/config/config-prod.js index 1ff2de8ea9..834f510b22 100644 --- a/src/config/config-prod.js +++ b/src/config/config-prod.js @@ -81,6 +81,10 @@ export const config = { extension: 'https://chrome.google.com/webstore/detail/epns-protocol-beta/lbdcbpaldalgiieffakjhiccoeebchmg', howto: 'https://push.org/docs', }, + + // social media integration + telegramExternalURL: 'https://t.me/PushCommDevBot', + discordExternalURL: null, }; /** diff --git a/src/config/config-staging.js b/src/config/config-staging.js index 6d8e3e6daa..56cc69ff38 100644 --- a/src/config/config-staging.js +++ b/src/config/config-staging.js @@ -83,6 +83,10 @@ export const config = { extension: 'https://chrome.google.com/webstore/detail/epns-staging-protocol-alp/bjiennpmhdcandkpigcploafccldlakj', howto: 'https://push.org/docs', }, + + // social media integration + telegramExternalURL: 'https://t.me/PushStagingBot', + discordExternalURL: 'https://discordapp.com/users/pushlinkbot', }; /** diff --git a/src/modules/dashboard/components/ConnectSocialHandles.tsx b/src/modules/dashboard/components/ConnectSocialHandles.tsx index 6a9ad1ecda..d4072b8b0e 100644 --- a/src/modules/dashboard/components/ConnectSocialHandles.tsx +++ b/src/modules/dashboard/components/ConnectSocialHandles.tsx @@ -3,9 +3,10 @@ import { FC, useEffect, useState } from 'react'; import { useAccount } from 'hooks'; import { walletToCAIP10 } from 'helpers/w2w'; import { useGetSocialsStatus } from 'queries'; +import { appConfig } from 'config'; +import { useDisclosure } from 'common'; import { Box, Button, Text, EmailProfile, TelegramProfile, Tick, Skeleton, DiscordProfile } from 'blocks'; -import { useDisclosure } from 'common'; import { AddEmail } from 'components/UserProfileSettings/AddEmail'; import AddDiscord from 'components/UserProfileSettings/AddDiscord'; import AddTelegram from 'components/UserProfileSettings/AddTelegram'; @@ -67,28 +68,27 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, const socialHandlesList: any[] = [ { - icon: () => , + icon: () => , itemTitle: 'Email', itemDescription: 'Receive notifications in your email inbox', - userStatus: socialHandleStatus?.email || null, onClick: () => modalControl.open(), + userStatus: socialHandleStatus?.email || null, }, - { - icon: () => , + appConfig?.telegramExternalURL && { + icon: () => , itemTitle: 'Telegram', itemDescription: 'Receive notifications as Telegram messages', onClick: () => telegramModalControl.open(), userStatus: socialHandleStatus?.telegram_username || null, }, - // disable discord on prod - { - icon: () => , + appConfig?.discordExternalURL && { + icon: () => , itemTitle: 'Discord', itemDescription: 'Receive notifications as Discord messages', onClick: () => discordModalControl.open(), userStatus: socialHandleStatus?.discord_username || null, }, - ]; + ].filter(Boolean); return ( <> From 0e178e998e7a31db3e89c8e4d79ae98655f71266 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 6 Dec 2024 11:53:29 +0100 Subject: [PATCH 24/37] add usersocial profile hook --- .../UserProfileSocialSettings.tsx | 96 +++---------- src/config/config-dev.js | 2 +- src/config/config-prod.js | 2 +- src/config/config-staging.js | 2 +- .../components/ConnectSocialHandles.tsx | 129 ++++-------------- .../dashboard/hooks/useSocialHandles.tsx | 110 +++++++++++++++ 6 files changed, 156 insertions(+), 185 deletions(-) create mode 100644 src/modules/dashboard/hooks/useSocialHandles.tsx diff --git a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx index 04c2c8ea81..a78f97e5f9 100644 --- a/src/components/UserProfileSettings/UserProfileSocialSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSocialSettings.tsx @@ -4,24 +4,17 @@ import { css } from 'styled-components'; import { useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; -//Hooks -import { useDisclosure } from 'common'; -import { useAccount } from 'hooks'; -import { useGetSocialsStatus } from 'queries'; - // Helpers -import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; -import { appConfig } from 'config'; -import { walletToCAIP10 } from 'helpers/w2w'; import UnlockProfileWrapper, { UNLOCK_PROFILE_TYPE } from 'components/chat/unlockProfile/UnlockProfileWrapper'; import APP_PATHS from 'config/AppPaths'; //Components -import { Box, DiscordProfile, EmailProfile, TelegramProfile, Text } from 'blocks'; +import { Box, Text } from 'blocks'; import { AddEmail } from './AddEmail'; import AddTelegram from './AddTelegram'; import AddDiscord from './AddDiscord'; import UserProfileSettingsItem from './UserProfileSettingsItem'; +import { useSocialHandles } from 'modules/dashboard/hooks/useSocialHandles'; type UserProfileSocialSettingsType = { errorMessage?: string; @@ -30,60 +23,27 @@ type UserProfileSocialSettingsType = { setSuccessMessage: (successMessage: string) => void; }; -type SocialHandleStatusType = { - email: string | null; - discord_username: string | null; - telegram_username: string | null; -}; - const UserProfileSocialSettings: FC = ({ setErrorMessage, setSuccessMessage }) => { - const modalControl = useDisclosure(); - const telegramModalControl = useDisclosure(); - const discordModalControl = useDisclosure(); - const { account } = useAccount(); const navigate = useNavigate(); - - const [socialHandleStatus, setSocialHandleStatus] = useState(); const [isAuthModalVisible, setIsAuthModalVisible] = useState(true); const { userPushSDKInstance } = useSelector((state: any) => { return state.user; }); - // Getting user Id by wallet address - const channelAddress = walletToCAIP10({ account }); - - const { mutate: fetchSocialStatus, isPending } = useGetSocialsStatus(); - - // Fetch social status logic - const getSocialStatus = async () => { - if (!channelAddress) return; - - const data = {}; - - const verificationProof = await generateVerificationProof(data, userPushSDKInstance); - - if (!verificationProof) return; - - if (channelAddress) { - fetchSocialStatus( - { channelAddress, verificationProof: verificationProof as string }, - { - onError: (error) => { - setErrorMessage('Failed to fetch social status.'); - console.error('Error fetching social status:', error); - }, - onSuccess: (data) => { - setSocialHandleStatus(data); - }, - } - ); - } - }; + const { + socialHandlesList, + modalControl, + telegramModalControl, + discordModalControl, + isPending, + fetchStatus, + channelAddress, + } = useSocialHandles(setErrorMessage, true, userPushSDKInstance); useEffect(() => { if (!userPushSDKInstance || !channelAddress) return; - getSocialStatus(); + fetchStatus(); }, [userPushSDKInstance, channelAddress]); useEffect(() => { @@ -95,30 +55,6 @@ const UserProfileSocialSettings: FC = ({ setError navigate(APP_PATHS.WelcomeDashboard); }; - const itemList = [ - { - icon: () => , - itemTitle: 'Email', - itemDescription: 'Receive notifications in your email inbox', - onClick: () => modalControl.open(), - userStatus: socialHandleStatus?.email || null, - }, - appConfig?.telegramExternalURL && { - icon: () => , - itemTitle: 'Telegram', - itemDescription: 'Receive notifications as Telegram messages', - onClick: () => telegramModalControl.open(), - userStatus: socialHandleStatus?.telegram_username || null, - }, - appConfig?.discordExternalURL && { - icon: () => , - itemTitle: 'Discord', - itemDescription: 'Receive notifications as Discord messages', - onClick: () => discordModalControl.open(), - userStatus: socialHandleStatus?.discord_username || null, - }, - ].filter(Boolean); - return ( @@ -138,7 +74,7 @@ const UserProfileSocialSettings: FC = ({ setError - {itemList?.map((item) => ( + {socialHandlesList?.map((item) => ( = ({ setError {modalControl.isOpen && ( @@ -177,7 +113,7 @@ const UserProfileSocialSettings: FC = ({ setError {telegramModalControl.isOpen && ( @@ -186,7 +122,7 @@ const UserProfileSocialSettings: FC = ({ setError {discordModalControl.isOpen && ( diff --git a/src/config/config-dev.js b/src/config/config-dev.js index 988a9d0eb0..599f1d300e 100644 --- a/src/config/config-dev.js +++ b/src/config/config-dev.js @@ -83,7 +83,7 @@ export const config = { }, // social media integration - telegramExternalURL: 'https://t.me/PushStagingBot', + telegramExternalURL: 'https://t.me/PushCommDevBot', discordExternalURL: 'https://discordapp.com/users/pushlinkbot', }; diff --git a/src/config/config-prod.js b/src/config/config-prod.js index 834f510b22..0dbbba1bc8 100644 --- a/src/config/config-prod.js +++ b/src/config/config-prod.js @@ -83,7 +83,7 @@ export const config = { }, // social media integration - telegramExternalURL: 'https://t.me/PushCommDevBot', + telegramExternalURL: 'https://t.me/PushCommBot', discordExternalURL: null, }; diff --git a/src/config/config-staging.js b/src/config/config-staging.js index 56cc69ff38..986981b64f 100644 --- a/src/config/config-staging.js +++ b/src/config/config-staging.js @@ -85,7 +85,7 @@ export const config = { }, // social media integration - telegramExternalURL: 'https://t.me/PushStagingBot', + telegramExternalURL: 'https://t.me/PushCommDevBot', discordExternalURL: 'https://discordapp.com/users/pushlinkbot', }; diff --git a/src/modules/dashboard/components/ConnectSocialHandles.tsx b/src/modules/dashboard/components/ConnectSocialHandles.tsx index d4072b8b0e..df2e551ac1 100644 --- a/src/modules/dashboard/components/ConnectSocialHandles.tsx +++ b/src/modules/dashboard/components/ConnectSocialHandles.tsx @@ -1,94 +1,19 @@ -import { FC, useEffect, useState } from 'react'; +import { FC } from 'react'; -import { useAccount } from 'hooks'; -import { walletToCAIP10 } from 'helpers/w2w'; -import { useGetSocialsStatus } from 'queries'; -import { appConfig } from 'config'; -import { useDisclosure } from 'common'; - -import { Box, Button, Text, EmailProfile, TelegramProfile, Tick, Skeleton, DiscordProfile } from 'blocks'; +import { Box, Button, Text, Tick, Skeleton } from 'blocks'; import { AddEmail } from 'components/UserProfileSettings/AddEmail'; import AddDiscord from 'components/UserProfileSettings/AddDiscord'; import AddTelegram from 'components/UserProfileSettings/AddTelegram'; +import { useSocialHandles } from '../hooks/useSocialHandles'; export type ConnectSocialHandlesProps = { setErrorMessage: (errorMessage: string) => void; setSuccessMessage: (successMessage: string) => void; }; -export type SocialHandlesItemType = { - itemTitle: string; - itemDescription: string; - type: 'email' | 'telegram' | 'discord'; - isConnected: boolean; -}; - -type SocialHandleStatusType = { - email: string | boolean | null; - discord_username: string | boolean | null; - telegram_username: string | boolean | null; -}; - const ConnectSocialHandles: FC = ({ setErrorMessage, setSuccessMessage }) => { - const modalControl = useDisclosure(); - const telegramModalControl = useDisclosure(); - const discordModalControl = useDisclosure(); - const { account } = useAccount(); - const [socialHandleStatus, setSocialHandleStatus] = useState(); - - // Getting user Id by wallet address - const channelAddress = walletToCAIP10({ account }); - - const { mutate: fetchSocialStatus, isPending } = useGetSocialsStatus(); - - // Fetch social status logic - const getSocialStatus = async () => { - if (!channelAddress) return; - - if (channelAddress) { - fetchSocialStatus( - { channelAddress }, - { - onError: (error) => { - setErrorMessage('Failed to fetch social status.'); - console.error('Error fetching social status:', error); - }, - onSuccess: (data) => { - setSocialHandleStatus(data); - }, - } - ); - } - }; - - useEffect(() => { - if (!channelAddress) return; - getSocialStatus(); - }, [channelAddress]); - - const socialHandlesList: any[] = [ - { - icon: () => , - itemTitle: 'Email', - itemDescription: 'Receive notifications in your email inbox', - onClick: () => modalControl.open(), - userStatus: socialHandleStatus?.email || null, - }, - appConfig?.telegramExternalURL && { - icon: () => , - itemTitle: 'Telegram', - itemDescription: 'Receive notifications as Telegram messages', - onClick: () => telegramModalControl.open(), - userStatus: socialHandleStatus?.telegram_username || null, - }, - appConfig?.discordExternalURL && { - icon: () => , - itemTitle: 'Discord', - itemDescription: 'Receive notifications as Discord messages', - onClick: () => discordModalControl.open(), - userStatus: socialHandleStatus?.discord_username || null, - }, - ].filter(Boolean); + const { socialHandlesList, modalControl, telegramModalControl, discordModalControl, isPending, fetchStatus } = + useSocialHandles(setErrorMessage, false); return ( <> @@ -99,7 +24,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, gap={{ initial: 'spacing-sm', tb: 'spacing-xs' }} width="100%" > - {socialHandlesList.map((item: any) => ( + {socialHandlesList?.map((item) => ( = ({ setErrorMessage, - - {item.userStatus ? ( - + + + {item.userStatus ? ( - - ) : ( - - )} - + ) : ( + + )} + + ))} {modalControl.isOpen && ( @@ -178,7 +103,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, {telegramModalControl.isOpen && ( @@ -187,7 +112,7 @@ const ConnectSocialHandles: FC = ({ setErrorMessage, {discordModalControl.isOpen && ( diff --git a/src/modules/dashboard/hooks/useSocialHandles.tsx b/src/modules/dashboard/hooks/useSocialHandles.tsx new file mode 100644 index 0000000000..510d6dd744 --- /dev/null +++ b/src/modules/dashboard/hooks/useSocialHandles.tsx @@ -0,0 +1,110 @@ +import React, { useState, useEffect } from 'react'; + +import { useDisclosure } from 'common'; +import { useGetSocialsStatus } from 'queries'; +import { useAccount } from 'hooks'; + +import { walletToCAIP10 } from 'helpers/w2w'; +import { appConfig } from 'config'; +import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; + +import { PushAPI } from '@pushprotocol/restapi'; + +import { DiscordProfile, EmailProfile, TelegramProfile } from 'blocks'; + +export type SocialHandleStatusType = { + email: string | null; + discord_username: string | null; + telegram_username: string | null; +}; + +type SocialHandlesItemType = { + icon: () => React.JSX.Element; + itemTitle: string; + itemDescription: string; + onClick: () => void; + userStatus: string | null; +}; + +export const useSocialHandles = ( + setErrorMessage: (error: string) => void, + requiresVerificationProof: boolean, + userPushSDKInstance?: PushAPI +) => { + const modalControl = useDisclosure(); + const telegramModalControl = useDisclosure(); + const discordModalControl = useDisclosure(); + const { account } = useAccount(); + const [socialHandleStatus, setSocialHandleStatus] = useState(null); + + const channelAddress = walletToCAIP10({ account }); + const { mutate: fetchSocialStatus, isPending } = useGetSocialsStatus(); + + const fetchStatus = async () => { + if (!channelAddress) return; + + let verificationProof; + + if (requiresVerificationProof) { + const data = { + wallet: channelAddress, + }; + verificationProof = await generateVerificationProof(data, userPushSDKInstance); // Pass your SDK instance if required + if (!verificationProof) return; + } + + fetchSocialStatus( + { channelAddress, ...(requiresVerificationProof && { verificationProof: verificationProof as string }) }, + { + onError: (error) => { + setErrorMessage('Failed to fetch social status.'); + console.error('Error fetching social status:', error); + }, + onSuccess: (data) => { + setSocialHandleStatus(data); + }, + } + ); + }; + + useEffect(() => { + if (channelAddress && !requiresVerificationProof) { + fetchStatus(); + } + }, [channelAddress]); + + const socialHandlesList: SocialHandlesItemType[] = [ + { + icon: () => , + itemTitle: 'Email', + itemDescription: 'Receive notifications in your email inbox', + onClick: () => modalControl.open(), + userStatus: socialHandleStatus?.email || null, + }, + appConfig?.telegramExternalURL && { + icon: () => , + itemTitle: 'Telegram', + itemDescription: 'Receive notifications as Telegram messages', + onClick: () => telegramModalControl.open(), + userStatus: socialHandleStatus?.telegram_username || null, + }, + appConfig?.discordExternalURL && { + icon: () => , + itemTitle: 'Discord', + itemDescription: 'Receive notifications as Discord messages', + onClick: () => discordModalControl.open(), + userStatus: socialHandleStatus?.discord_username || null, + }, + ].filter(Boolean); + + return { + socialHandlesList, + socialHandleStatus, + modalControl, + telegramModalControl, + discordModalControl, + isPending, + fetchStatus, + channelAddress, + }; +}; From 98dac938665ea208c1df5212454bb2fea53c792e Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 6 Dec 2024 13:13:31 +0100 Subject: [PATCH 25/37] adjust prod url --- src/queries/baseURL.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/queries/baseURL.ts b/src/queries/baseURL.ts index 865746a80f..80f00efdef 100644 --- a/src/queries/baseURL.ts +++ b/src/queries/baseURL.ts @@ -23,7 +23,7 @@ export const getRewardsBaseURL = () => { export const getCustomDeliveryURL = () => { switch (appConfig.appEnv) { case 'prod': - return `https://custom-delivery-dev.push.org`; + return `https://custom-delivery-prod.push.org`; case 'staging': return `https://custom-delivery-dev.push.org`; case 'dev': From a50cc278086f6e70f8ce41ac5ee2390679e2e3be Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 6 Dec 2024 16:30:27 +0100 Subject: [PATCH 26/37] add baseurl and form error message --- src/components/UserProfileSettings/AddDiscord.tsx | 10 +++++++--- src/components/UserProfileSettings/AddEmail.tsx | 5 ++++- src/components/UserProfileSettings/AddTelegram.tsx | 10 +++++++--- src/queries/baseURL.ts | 2 +- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/components/UserProfileSettings/AddDiscord.tsx b/src/components/UserProfileSettings/AddDiscord.tsx index bc716e8788..9ffba1779e 100644 --- a/src/components/UserProfileSettings/AddDiscord.tsx +++ b/src/components/UserProfileSettings/AddDiscord.tsx @@ -28,7 +28,7 @@ enum Steps { const AddDiscord: FC = ({ modalControl, - // refetchSocialHandleStatus, + refetchSocialHandleStatus, // setErrorMessage, // setSuccessMessage, }) => { @@ -83,9 +83,10 @@ const AddDiscord: FC = ({ { onSuccess: (response: any) => { if (response?.success) { - console.log(response); setDiscordCode(response.verificationCode); setStep(Steps.VerifyId); + } else { + discordFormik?.setFieldError('discord', 'Error sending code. Please try again'); } }, onError: (error: Error) => { @@ -99,7 +100,10 @@ const AddDiscord: FC = ({ { + refetchSocialHandleStatus(); + onClose(); + }} {...(step === Steps.VerifyId && { onBack: () => setStep(Steps.EnterDiscord), })} diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index e69ec37d7c..ae3df00dea 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -101,8 +101,9 @@ const AddEmail: FC = ({ { onSuccess: (response: any) => { if (response?.success) { - console.log(response); setStep(Steps.VerifyCode); + } else { + emailFormik?.setFieldError('email', 'Error sending code. Please try again'); } }, onError: (error: Error) => { @@ -138,6 +139,8 @@ const AddEmail: FC = ({ onClose(); refetchSocialHandleStatus(); setSuccessMessage('Email Account was linked successfully'); + } else { + codeFormik?.setFieldError('code', 'Error verifying code. Please try again'); } }, onError: (error: Error) => { diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 380a6f4cee..935192a08e 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -28,7 +28,7 @@ enum Steps { const AddTelegram: FC = ({ modalControl, - // refetchSocialHandleStatus, + refetchSocialHandleStatus, // setErrorMessage, // setSuccessMessage, }) => { @@ -83,9 +83,10 @@ const AddTelegram: FC = ({ { onSuccess: (response: any) => { if (response?.success) { - console.log(response); setTelegramCode(response.verificationCode); setStep(Steps.VerifyId); + } else { + telegramFormik?.setFieldError('telegram', 'Error sending code. Please try again'); } }, onError: (error: Error) => { @@ -99,7 +100,10 @@ const AddTelegram: FC = ({ { + refetchSocialHandleStatus(); + onClose(); + }} {...(step === Steps.VerifyId && { onBack: () => setStep(Steps.EnterTelegram), })} diff --git a/src/queries/baseURL.ts b/src/queries/baseURL.ts index 80f00efdef..799d0a3d70 100644 --- a/src/queries/baseURL.ts +++ b/src/queries/baseURL.ts @@ -23,7 +23,7 @@ export const getRewardsBaseURL = () => { export const getCustomDeliveryURL = () => { switch (appConfig.appEnv) { case 'prod': - return `https://custom-delivery-prod.push.org`; + return `https://custom-delivery.push.org`; case 'staging': return `https://custom-delivery-dev.push.org`; case 'dev': From 5019452c364f6740d3407f0141f3fd5b477819ee Mon Sep 17 00:00:00 2001 From: corlard3y Date: Fri, 6 Dec 2024 16:42:56 +0100 Subject: [PATCH 27/37] add enabled filter --- .../rewards/components/RewardsActivitiesList.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index bebfc897f1..7102d78324 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -40,14 +40,16 @@ const RewardsActivitiesList: FC = () => { ? Array(2).fill(0) : activityList.filter((activity) => activity.index.startsWith(`social-activity`) && activity?.status === 'ENABLED'); - const emailTelegramActivities = activityList.filter((activity) => activity.index.startsWith(`custom-delivery`))[0]; + const emailTelegramActivities = activityList.filter( + (activity) => activity.index.startsWith(`custom-delivery`) && activity?.status === 'ENABLED' + )[0]; const platformRewardActivities = isLoading ? Array(7).fill(0) : activityList.filter((activity) => activity.index.startsWith(`reward-activity`) && activity?.status === 'ENABLED'); - const channelSubscriptionActivities = activityList.filter( - (activity) => activity.index.startsWith(`channel-subscription`) && activity?.status === 'ENABLED' + const channelSubscriptionActivities = activityList.filter((activity) => + activity.index.startsWith(`channel-subscription`) ); const { isLocked } = useRewardsContext(); @@ -74,6 +76,8 @@ const RewardsActivitiesList: FC = () => { { enabled: !!userDetails?.userId && activityTypes.length > 0 } ); + console.log(emailTelegramActivities); + return ( Date: Fri, 6 Dec 2024 17:04:02 +0100 Subject: [PATCH 28/37] remove console logs --- src/modules/rewards/components/RewardsActivitiesList.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index 7102d78324..eb1cae6c47 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -76,8 +76,6 @@ const RewardsActivitiesList: FC = () => { { enabled: !!userDetails?.userId && activityTypes.length > 0 } ); - console.log(emailTelegramActivities); - return ( Date: Mon, 9 Dec 2024 12:25:11 +0100 Subject: [PATCH 29/37] hide discord on dev --- src/config/config-dev.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/config-dev.js b/src/config/config-dev.js index 599f1d300e..5885295e37 100644 --- a/src/config/config-dev.js +++ b/src/config/config-dev.js @@ -84,7 +84,7 @@ export const config = { // social media integration telegramExternalURL: 'https://t.me/PushCommDevBot', - discordExternalURL: 'https://discordapp.com/users/pushlinkbot', + discordExternalURL: null, }; /** From 9f4ed8c7afe24ae08a5f2ef1ca59693bcca8e839 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Thu, 12 Dec 2024 09:51:22 +0100 Subject: [PATCH 30/37] remove discord --- src/config/config-staging.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/config-staging.js b/src/config/config-staging.js index 986981b64f..1b45962443 100644 --- a/src/config/config-staging.js +++ b/src/config/config-staging.js @@ -86,7 +86,7 @@ export const config = { // social media integration telegramExternalURL: 'https://t.me/PushCommDevBot', - discordExternalURL: 'https://discordapp.com/users/pushlinkbot', + discordExternalURL: null, }; /** From f21e8e6a7ff3629fd788d637c303b8515462f819 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Mon, 16 Dec 2024 11:55:43 +0100 Subject: [PATCH 31/37] fix email schema --- .../UserProfileSettings/AddEmail.form.ts | 29 ++++++++++++ .../UserProfileSettings/AddEmail.tsx | 47 ++++++------------- .../UserProfileSettings.tsx | 31 ++++++------ 3 files changed, 59 insertions(+), 48 deletions(-) create mode 100644 src/components/UserProfileSettings/AddEmail.form.ts diff --git a/src/components/UserProfileSettings/AddEmail.form.ts b/src/components/UserProfileSettings/AddEmail.form.ts new file mode 100644 index 0000000000..d552a2b9bd --- /dev/null +++ b/src/components/UserProfileSettings/AddEmail.form.ts @@ -0,0 +1,29 @@ +import { useFormik } from 'formik'; +import * as Yup from 'yup'; +import { getRequiredFieldMessage } from 'common'; + +// Validation schema for the email field +export const emailValidationSchema = Yup.object({ + email: Yup.string().email('Invalid email address').required(getRequiredFieldMessage('Email')), +}); + +// Validation schema for the verification code +export const codeValidationSchema = Yup.object({ + code: Yup.string().length(6, 'Code should be 6 digits').required('Required'), +}); + +// Formik setup for the email form +export const useEmailFormik = (handleSendVerificationCode: () => void) => + useFormik({ + initialValues: { email: '' }, + validationSchema: emailValidationSchema, + onSubmit: handleSendVerificationCode, + }); + +// Formik setup for the code form +export const useCodeFormik = (handleVerificationCode: () => void) => + useFormik({ + initialValues: { code: '' }, + validationSchema: codeValidationSchema, + onSubmit: handleVerificationCode, + }); diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index ae3df00dea..6c2a07f9f2 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -1,9 +1,8 @@ import { FC, useCallback, useEffect, useState } from 'react'; import { css } from 'styled-components'; -import { useFormik } from 'formik'; -import * as Yup from 'yup'; import { useSelector } from 'react-redux'; +import { useEmailFormik, useCodeFormik } from './AddEmail.form'; // Import Formik hooks import { ModalResponse } from 'common'; import { useAccount } from 'hooks'; import { walletToCAIP10 } from 'helpers/w2w'; @@ -44,41 +43,10 @@ const AddEmail: FC = ({ const { mutate: sendVerification, isPending: isSendingVerification } = useSendHandlesVerificationCode(); const { mutate: verifyVerification } = useVerifyHandlesVerificationCode(); - const emailValidationSchema = Yup.object({ - email: Yup.string().email('Invalid email address').required('Required'), - }); - - const codeValidationSchema = Yup.object({ - code: Yup.string().length(6, 'Code should be 6 digits').required('Required'), - }); - - const emailFormik = useFormik({ - initialValues: { email: '' }, - validationSchema: emailValidationSchema, - onSubmit: () => { - handleSendVerificationCode(); - }, - }); - - const codeFormik = useFormik({ - initialValues: { code: '' }, - validationSchema: codeValidationSchema, - onSubmit: () => { - handleVerificationCode(); - }, - }); - const getSDKInstance = useCallback(async () => { return userPushSDKInstance?.signer ? userPushSDKInstance : await handleConnectWalletAndEnableProfile({ wallet }); }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); - // Watch for code length and submit automatically if it reaches 6 digits - useEffect(() => { - if (codeFormik.values.code.length === 6 && !codeFormik.errors.code) { - codeFormik.submitForm(); - } - }, [codeFormik.values.code, codeFormik.errors.code]); - const handleSendVerificationCode = async () => { const sdkInstance = await getSDKInstance(); const data = { @@ -151,10 +119,23 @@ const AddEmail: FC = ({ ); }; + // Formik hooks from form.ts + const emailFormik = useEmailFormik(handleSendVerificationCode); + const codeFormik = useCodeFormik(handleVerificationCode); + + // Watch for code length and submit automatically if it reaches 6 digits + useEffect(() => { + if (codeFormik.values.code.length === 6 && !codeFormik.errors.code) { + codeFormik.submitForm(); + } + }, [codeFormik.values.code, codeFormik.errors.code]); + const resendVerificationCode = () => { handleSendVerificationCode(); }; + console.log(emailFormik.touched.email); + return ( = ({ setErrorMessage, set // Validation schema using Yup const validationSchema = Yup.object({ displayName: Yup.string().max(50, 'Display Name cannot exceed 50 characters').required('Display Name is required'), + desc: Yup.string().max(150, 'Bio cannot exceed 150 characters').nullable(), }); // Formik setup - const formik = useFormik({ + const userFormik = useFormik({ initialValues: { displayName: '', picture: null, desc: '' }, validationSchema, onSubmit: async (values) => { @@ -81,7 +82,7 @@ const UserProfileSettings: FC = ({ setErrorMessage, set // Populate initial form values when userProfileInfo is fetched useEffect(() => { if (userProfileInfo) { - formik.setValues({ + userFormik.setValues({ displayName: userProfileInfo.name || '', picture: userProfileInfo.picture || null, desc: userProfileInfo.desc || null, @@ -91,7 +92,7 @@ const UserProfileSettings: FC = ({ setErrorMessage, set return ( -
+ = ({ setErrorMessage, set alignItems="center" margin="spacing-xs spacing-none spacing-md spacing-none" > - {formik.values.picture ? ( + {userFormik.values.picture ? ( = ({ setErrorMessage, set ) : ( @@ -146,8 +147,8 @@ const UserProfileSettings: FC = ({ setErrorMessage, set {modalControl.isOpen && ( )} @@ -158,10 +159,10 @@ const UserProfileSettings: FC = ({ setErrorMessage, set > @@ -173,10 +174,10 @@ const UserProfileSettings: FC = ({ setErrorMessage, set > From e1d04b929403b1f76cb0202a2c4a91ee06544e77 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Mon, 16 Dec 2024 12:18:10 +0100 Subject: [PATCH 32/37] fix telegram schema --- .../UserProfileSettings/AddTelegram.form.ts | 18 +++++++++++++++++ .../UserProfileSettings/AddTelegram.tsx | 20 +++++-------------- 2 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 src/components/UserProfileSettings/AddTelegram.form.ts diff --git a/src/components/UserProfileSettings/AddTelegram.form.ts b/src/components/UserProfileSettings/AddTelegram.form.ts new file mode 100644 index 0000000000..35a9aa1777 --- /dev/null +++ b/src/components/UserProfileSettings/AddTelegram.form.ts @@ -0,0 +1,18 @@ +import { useFormik } from 'formik'; +import * as Yup from 'yup'; +import { getRequiredFieldMessage } from 'common'; + +// Validation schema for the telegram field +const telegramValidationSchema = Yup.object({ + telegram: Yup.string().required(getRequiredFieldMessage('Telegram')), +}); + +// Formik setup for the code form +export const useTelegramFormik = (handleSendVerificationCode: () => void) => + useFormik({ + initialValues: { telegram: '' }, + validationSchema: telegramValidationSchema, + onSubmit: () => { + handleSendVerificationCode(); + }, + }); diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 935192a08e..d58ba10cc6 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -1,7 +1,5 @@ import { FC, useCallback, useState } from 'react'; import { useSelector } from 'react-redux'; -import { useFormik } from 'formik'; -import * as Yup from 'yup'; import { CopyButton, ModalResponse } from 'common'; import { useAccount } from 'hooks'; @@ -13,6 +11,7 @@ import { appConfig } from 'config'; import { Box, Link, Modal, Telegram, Text, TextInput } from 'blocks'; import { shortenText } from 'helpers/UtilityHelper'; +import { useTelegramFormik } from './AddTelegram.form'; type AddTelegramProps = { modalControl: ModalResponse; @@ -45,18 +44,6 @@ const AddTelegram: FC = ({ const { mutate: sendVerification, isPending: isSendingVerification } = useSendHandlesVerificationCode(); - const telegramValidationSchema = Yup.object({ - telegram: Yup.string().required('Required'), - }); - - const telegramFormik = useFormik({ - initialValues: { telegram: '' }, - validationSchema: telegramValidationSchema, - onSubmit: () => { - handleSendVerificationCode(); - }, - }); - const getSDKInstance = useCallback(async () => { return userPushSDKInstance?.signer ? userPushSDKInstance : await handleConnectWalletAndEnableProfile({ wallet }); }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); @@ -96,6 +83,9 @@ const AddTelegram: FC = ({ ); }; + // Formik hooks from form.ts + const telegramFormik = useTelegramFormik(handleSendVerificationCode); + return ( = ({ borderRadius="radius-sm" > From 4cf549c6b763d38ebc646290e6435ecaa1705b51 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Tue, 17 Dec 2024 13:57:18 +0100 Subject: [PATCH 33/37] resolve comments --- src/blocks/button/Button.tsx | 4 + src/blocks/tooltip/Tooltip.tsx | 1 + src/common/components/CopyButton.tsx | 12 ++- .../UserProfileSettings/AddEmail.tsx | 11 ++- .../UserProfileSettings/AddTelegram.tsx | 10 ++- .../UserProfileSettings.form.ts | 27 +++++++ .../UserProfileSettings.tsx | 78 +++++++------------ src/modules/dashboard/Dashboard.tsx | 65 +++++++++++++--- 8 files changed, 139 insertions(+), 69 deletions(-) create mode 100644 src/components/UserProfileSettings/UserProfileSettings.form.ts diff --git a/src/blocks/button/Button.tsx b/src/blocks/button/Button.tsx index 9aec7345d8..dbf278d217 100644 --- a/src/blocks/button/Button.tsx +++ b/src/blocks/button/Button.tsx @@ -29,6 +29,8 @@ export type ButtonProps = { block?: boolean; /* Button loading state */ loading?: boolean; + /* indicate button type ina a form or similar usecases */ + type?: 'button' | 'submit'; } & TransformedHTMLAttributes; const StyledButton = styled.button` @@ -81,6 +83,7 @@ const Button = forwardRef( iconOnly, circular = false, children, + type, ...props }, ref @@ -94,6 +97,7 @@ const Button = forwardRef( role="button" ref={ref} size={size} + type={type} variant={variant} {...props} > diff --git a/src/blocks/tooltip/Tooltip.tsx b/src/blocks/tooltip/Tooltip.tsx index 6d3e7553d3..75de60b4d9 100644 --- a/src/blocks/tooltip/Tooltip.tsx +++ b/src/blocks/tooltip/Tooltip.tsx @@ -20,6 +20,7 @@ const RadixTooltipContent = styled(RadixTooltip.Content).withConfig({ word-wrap: break-word; color: var(--text-primary-inverse); background-color: var(--surface-primary-inverse); + z-index: 9999999999; /* Tooltip non-responsive styles */ width: ${({ width }) => width}; diff --git a/src/common/components/CopyButton.tsx b/src/common/components/CopyButton.tsx index 89b8321533..fae4a4d7a4 100644 --- a/src/common/components/CopyButton.tsx +++ b/src/common/components/CopyButton.tsx @@ -10,12 +10,20 @@ type CopyButtonProps = { const CopyButton: FC = ({ tooltipTitle, content, size }) => { const [hover, setHover] = useState(false); + const [copied, setCopied] = useState(false); + + const handleCopy = () => { + copyToClipboard(content); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }; + return ( - + copyToClipboard(content)} + onClick={handleCopy} onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)} > diff --git a/src/components/UserProfileSettings/AddEmail.tsx b/src/components/UserProfileSettings/AddEmail.tsx index 6c2a07f9f2..535bf11b3c 100644 --- a/src/components/UserProfileSettings/AddEmail.tsx +++ b/src/components/UserProfileSettings/AddEmail.tsx @@ -10,7 +10,7 @@ import { useAppContext } from 'contexts/AppContext'; import { generateVerificationProof } from 'modules/rewards/utils/generateVerificationProof'; import { useSendHandlesVerificationCode, useVerifyHandlesVerificationCode } from 'queries'; -import { Box, Modal, Text, TextInput } from 'blocks'; +import { Box, Modal, Spinner, Text, TextInput } from 'blocks'; type AddEmailProps = { modalControl: ModalResponse; @@ -33,6 +33,7 @@ const AddEmail: FC = ({ const { isOpen, onClose } = modalControl; const { account, wallet } = useAccount(); const { handleConnectWalletAndEnableProfile } = useAppContext(); + const [isLoading, setIsLoading] = useState(false); const caip10WalletAddress = walletToCAIP10({ account }); const [step, setStep] = useState(1); @@ -48,6 +49,7 @@ const AddEmail: FC = ({ }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); const handleSendVerificationCode = async () => { + setIsLoading(true); const sdkInstance = await getSDKInstance(); const data = { wallet: caip10WalletAddress, @@ -73,9 +75,11 @@ const AddEmail: FC = ({ } else { emailFormik?.setFieldError('email', 'Error sending code. Please try again'); } + setIsLoading(false); }, onError: (error: Error) => { console.log('Error sending code', error); + setIsLoading(false); }, } ); @@ -134,8 +138,6 @@ const AddEmail: FC = ({ handleSendVerificationCode(); }; - console.log(emailFormik.touched.email); - return ( = ({ step === Steps.EnterEmail ? { children: 'Next', - loading: isSendingVerification, + loading: isSendingVerification || isLoading, onClick: () => { emailFormik.handleSubmit(); }, @@ -234,6 +236,7 @@ const AddEmail: FC = ({ > Send code again + {(isSendingVerification || isLoading) && } )} diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index d58ba10cc6..9f993fd877 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -36,8 +36,9 @@ const AddTelegram: FC = ({ const { handleConnectWalletAndEnableProfile } = useAppContext(); const caip10WalletAddress = walletToCAIP10({ account }); - const [step, setStep] = useState(1); - const [telegramCode, setTelegramCode] = useState(''); + const [step, setStep] = useState(2); + const [telegramCode, setTelegramCode] = useState('00000000'); + const [isLoading, setIsLoading] = useState(false); const { userPushSDKInstance } = useSelector((state: any) => { return state.user; }); @@ -49,6 +50,7 @@ const AddTelegram: FC = ({ }, [userPushSDKInstance, handleConnectWalletAndEnableProfile, wallet]); const handleSendVerificationCode = async () => { + setIsLoading(true); const sdkInstance = await getSDKInstance(); const data = { wallet: caip10WalletAddress, @@ -75,9 +77,11 @@ const AddTelegram: FC = ({ } else { telegramFormik?.setFieldError('telegram', 'Error sending code. Please try again'); } + setIsLoading(false); }, onError: (error: Error) => { console.log('Error sending code', error); + setIsLoading(false); }, } ); @@ -101,7 +105,7 @@ const AddTelegram: FC = ({ step === Steps.EnterTelegram ? { children: 'Next', - loading: isSendingVerification, + loading: isSendingVerification || isLoading, onClick: () => { telegramFormik?.handleSubmit(); }, diff --git a/src/components/UserProfileSettings/UserProfileSettings.form.ts b/src/components/UserProfileSettings/UserProfileSettings.form.ts new file mode 100644 index 0000000000..de14e3464c --- /dev/null +++ b/src/components/UserProfileSettings/UserProfileSettings.form.ts @@ -0,0 +1,27 @@ +import { useFormik } from 'formik'; +import * as Yup from 'yup'; +import { getRequiredFieldMessage } from 'common'; + +// Define Formik initial values type +type FormValues = { + displayName: string | null; + picture: string | null; + desc: string | null; +}; + +// Validation schema for the email field +const validationSchema = Yup.object({ + displayName: Yup.string() + .max(50, 'Display Name cannot exceed 50 characters') + .required(getRequiredFieldMessage('Display Name')), + desc: Yup.string().max(150, 'Bio cannot exceed 150 characters').nullable(), +}); + +// Formik setup for the email form +export const useUserFormik = (handleSubmit: () => void) => { + return useFormik({ + initialValues: { displayName: '', picture: null, desc: '' }, // Ensure picture starts as null + validationSchema, + onSubmit: handleSubmit, + }); +}; diff --git a/src/components/UserProfileSettings/UserProfileSettings.tsx b/src/components/UserProfileSettings/UserProfileSettings.tsx index 0375116dbf..2326adf097 100644 --- a/src/components/UserProfileSettings/UserProfileSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSettings.tsx @@ -1,12 +1,11 @@ // React and other libraries import { FC, useEffect } from 'react'; -import { useFormik } from 'formik'; -import * as Yup from 'yup'; import { useSelector } from 'react-redux'; // hooks import { useAccount } from 'hooks'; import { useAppContext } from 'contexts/AppContext'; +import { useUserFormik } from './UserProfileSettings.form'; //Components import { Box, Button, CameraFilled, TextInput } from 'blocks'; @@ -15,13 +14,6 @@ import UploadAvatarModal from './UploadAvatarModal'; import { css } from 'styled-components'; import { useGetUserProfileInfo, useUpdateUserProfileInfo } from 'queries'; -// Define Formik initial values type -type FormValues = { - displayName: string | null; - picture: string | null; - desc: string | null; -}; - type UserProfileSettingsType = { errorMessage: string; setErrorMessage: (errorMessage: string) => void; @@ -40,52 +32,41 @@ const UserProfileSettings: FC = ({ setErrorMessage, set return state.user; }); - // Validation schema using Yup - const validationSchema = Yup.object({ - displayName: Yup.string().max(50, 'Display Name cannot exceed 50 characters').required('Display Name is required'), - desc: Yup.string().max(150, 'Bio cannot exceed 150 characters').nullable(), - }); - - // Formik setup - const userFormik = useFormik({ - initialValues: { displayName: '', picture: null, desc: '' }, - validationSchema, - onSubmit: async (values) => { - // Add your save logic here - - const sdkInstance = !userPushSDKInstance?.signer - ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined - : userPushSDKInstance; - - updateUserInfo( - { - userPushSDKInstance: sdkInstance, - name: values.displayName, - desc: values.desc, - picture: values.picture, + const handleSubmit = async () => { + const sdkInstance = !userPushSDKInstance?.signer + ? (await handleConnectWalletAndEnableProfile({ wallet })) ?? undefined + : userPushSDKInstance; + + updateUserInfo( + { + userPushSDKInstance: sdkInstance, + name: userFormik?.values.displayName, + desc: userFormik?.values.desc, + picture: userFormik?.values.picture, + }, + { + onSuccess: (response: any) => { + console.log(response); + setSuccessMessage('User Details Updated Successfully'); + refetchUserInfo(); }, - { - onSuccess: (response: any) => { - console.log(response); - setSuccessMessage('User Details Updated Successfully'); - refetchUserInfo(); - }, - onError: (error: Error) => { - console.log('Error updating user profile info', error); - setErrorMessage('Error while updating User Info!'); - }, - } - ); - }, - }); + onError: (error: Error) => { + console.log('Error updating user profile info', error); + setErrorMessage('Error while updating User Info!'); + }, + } + ); + }; + + const userFormik = useUserFormik(handleSubmit); // Populate initial form values when userProfileInfo is fetched useEffect(() => { if (userProfileInfo) { userFormik.setValues({ displayName: userProfileInfo.name || '', - picture: userProfileInfo.picture || null, - desc: userProfileInfo.desc || null, + picture: userProfileInfo?.picture || null, + desc: userProfileInfo?.desc || null, }); } }, [userProfileInfo]); @@ -139,6 +120,7 @@ const UserProfileSettings: FC = ({ setErrorMessage, set variant="tertiary" size="extraSmall" onClick={() => modalControl.open()} + type="button" > Change Avatar diff --git a/src/modules/dashboard/Dashboard.tsx b/src/modules/dashboard/Dashboard.tsx index f9d9b37b5b..9272e422e9 100644 --- a/src/modules/dashboard/Dashboard.tsx +++ b/src/modules/dashboard/Dashboard.tsx @@ -1,8 +1,13 @@ // React and other libraries import { FC, useState } from 'react'; +// Hooks +import { useAccount } from 'hooks'; +import { walletToCAIP10 } from 'helpers/w2w'; +import { RewardActivityStatus, useGetRewardsActivity, useGetUserRewardsDetails } from 'queries'; + // Components -import { Alert, Box, Button, Link } from 'blocks'; +import { Alert, Box, Button, Link, Skeleton } from 'blocks'; import { AnalyticsOverview } from './components/AnalyticsOverview'; import { ChannelVariantsSection } from './components/ChannelVariantsSection'; import { DashboardHeader } from './components/DashboardHeader'; @@ -10,18 +15,42 @@ import { DashboardSubHeader } from './components/DashboardSubHeader'; import { FeaturedChannels } from './components/FeaturedChannels'; import { StakingPools } from './components/StakingPools'; import { SocialHandles } from './components/Socialhandles'; -import { useAccount } from 'hooks'; export type DashboardProps = {}; const Dashboard: FC = () => { - const { isWalletConnected } = useAccount(); + const { isWalletConnected, account } = useAccount(); + + // Getting user Id by wallet address + const caip10WalletAddress = walletToCAIP10({ account }); + const { data: userDetails } = useGetUserRewardsDetails({ + caip10WalletAddress: caip10WalletAddress, + }); const [showSubHeader, setSubHeaderVisibility] = useState(true); // for alerts const [errorMessage, setErrorMessage] = useState(''); const [successMessage, setSuccessMessage] = useState(''); + const activityType = ['notifications_integration_email_telegram_discord']; + const { + data: emailTelegramIntegrationStatus, + isLoading: isActivitiesLoading, + // refetch: refetchActivity, + } = useGetRewardsActivity( + { userId: userDetails?.userId as string, activityTypes: activityType }, + { enabled: !!userDetails?.userId && activityType.length > 0 } + ); + + // Type Guard to check if an object is RewardActivityStatus + const isRewardActivityStatus = (obj: any): obj is RewardActivityStatus => { + return obj && typeof obj.status === 'string'; + }; + + const hasUserClaimedEmailTelegramIntegration = + isRewardActivityStatus(emailTelegramIntegrationStatus?.notifications_integration_email_telegram_discord) && + emailTelegramIntegrationStatus.notifications_integration_email_telegram_discord.status === 'COMPLETED'; + return ( = () => { setSuccessMessage={setSuccessMessage} padding={{ ml: 'spacing-md spacing-sm', initial: 'spacing-md' }} claimButton={ - - - + + {hasUserClaimedEmailTelegramIntegration ? ( + + ) : ( + + + + )} + } /> )} From 3be37ea9ffe38dac0b93844a823c36154c390e60 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Tue, 17 Dec 2024 14:43:39 +0100 Subject: [PATCH 34/37] fix tooltip bug --- src/blocks/tooltip/Tooltip.tsx | 32 ++++++++++--------- .../UserProfileSettings/AddTelegram.tsx | 16 ++++++---- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/blocks/tooltip/Tooltip.tsx b/src/blocks/tooltip/Tooltip.tsx index 75de60b4d9..75912f0093 100644 --- a/src/blocks/tooltip/Tooltip.tsx +++ b/src/blocks/tooltip/Tooltip.tsx @@ -97,21 +97,23 @@ const Tooltip: FC = ({ {children} - - {overlay ? ( - overlay - ) : ( - <> - {title && {title}} - {description && {description}} - - )} - + {(title || overlay || description) && ( + + {overlay ? ( + overlay + ) : ( + <> + {title && {title}} + {description && {description}} + + )} + + )} diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 9f993fd877..2d9adc3c18 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -36,8 +36,8 @@ const AddTelegram: FC = ({ const { handleConnectWalletAndEnableProfile } = useAppContext(); const caip10WalletAddress = walletToCAIP10({ account }); - const [step, setStep] = useState(2); - const [telegramCode, setTelegramCode] = useState('00000000'); + const [step, setStep] = useState(1); + const [telegramCode, setTelegramCode] = useState(''); const [isLoading, setIsLoading] = useState(false); const { userPushSDKInstance } = useSelector((state: any) => { return state.user; @@ -214,11 +214,13 @@ const AddTelegram: FC = ({ {shortenText(`/verify ${caip10WalletAddress}-${telegramCode}`, 10)} - + {isOpen && ( + + )} From 776b07982d51fd877138e89cb72936519571e443 Mon Sep 17 00:00:00 2001 From: corlard3y Date: Tue, 17 Dec 2024 15:17:42 +0100 Subject: [PATCH 35/37] fix url and add form settings --- src/components/UserProfileSettings/AddTelegram.tsx | 11 ++++++++++- .../UserProfileSettings.form.ts | 2 +- .../UserProfileSettings/UserProfileSettings.tsx | 14 ++++++++++++-- src/config/config-dev.js | 2 +- src/config/config-prod.js | 2 +- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 2d9adc3c18..0a377b7efe 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -12,6 +12,7 @@ import { appConfig } from 'config'; import { Box, Link, Modal, Telegram, Text, TextInput } from 'blocks'; import { shortenText } from 'helpers/UtilityHelper'; import { useTelegramFormik } from './AddTelegram.form'; +import { css } from 'styled-components'; type AddTelegramProps = { modalControl: ModalResponse; @@ -232,7 +233,10 @@ const AddTelegram: FC = ({ Step 2: Visit the link and paste the code - + = ({ textAlign: 'center', color: 'text-brand-medium', }} + css={css` + overflow: auto; + word-wrap: break-word; + width: 100%; + `} > {appConfig?.telegramExternalURL} diff --git a/src/components/UserProfileSettings/UserProfileSettings.form.ts b/src/components/UserProfileSettings/UserProfileSettings.form.ts index de14e3464c..52b7ac75e5 100644 --- a/src/components/UserProfileSettings/UserProfileSettings.form.ts +++ b/src/components/UserProfileSettings/UserProfileSettings.form.ts @@ -4,7 +4,7 @@ import { getRequiredFieldMessage } from 'common'; // Define Formik initial values type type FormValues = { - displayName: string | null; + displayName: string; picture: string | null; desc: string | null; }; diff --git a/src/components/UserProfileSettings/UserProfileSettings.tsx b/src/components/UserProfileSettings/UserProfileSettings.tsx index 2326adf097..b4f721cf1f 100644 --- a/src/components/UserProfileSettings/UserProfileSettings.tsx +++ b/src/components/UserProfileSettings/UserProfileSettings.tsx @@ -143,8 +143,18 @@ const UserProfileSettings: FC = ({ setErrorMessage, set label="Display Name" value={userFormik.values.displayName as string} onChange={userFormik.handleChange('displayName')} - error={userFormik.touched.displayName && Boolean(userFormik.errors.displayName)} - errorMessage={userFormik.touched.displayName ? userFormik.errors.displayName : ''} + error={ + userFormik.submitCount > 0 && !userFormik.values.displayName + ? true // Required error on submit + : userFormik.values.displayName.length > 50 // Length error during typing + } + errorMessage={ + userFormik.submitCount > 0 && !userFormik.values.displayName + ? 'Display Name is required' + : userFormik.values.displayName.length > 50 + ? 'Display Name cannot exceed 50 characters' + : '' + } totalCount={50} /> diff --git a/src/config/config-dev.js b/src/config/config-dev.js index 5885295e37..e3bfdb022c 100644 --- a/src/config/config-dev.js +++ b/src/config/config-dev.js @@ -83,7 +83,7 @@ export const config = { }, // social media integration - telegramExternalURL: 'https://t.me/PushCommDevBot', + telegramExternalURL: 'https://web.telegram.org/k/#@PushCommDevBot', discordExternalURL: null, }; diff --git a/src/config/config-prod.js b/src/config/config-prod.js index 0dbbba1bc8..ab0d981f89 100644 --- a/src/config/config-prod.js +++ b/src/config/config-prod.js @@ -83,7 +83,7 @@ export const config = { }, // social media integration - telegramExternalURL: 'https://t.me/PushCommBot', + telegramExternalURL: 'https://web.telegram.org/k/#@PushCommBot', discordExternalURL: null, }; From 2295fb4b96b6316eebf384e338ca6326587bae62 Mon Sep 17 00:00:00 2001 From: abhishek-01k Date: Sat, 21 Dec 2024 11:04:10 +0530 Subject: [PATCH 36/37] Fixed the display of alert message for email and telegram --- .../UserProfileSettings/AddTelegram.tsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/components/UserProfileSettings/AddTelegram.tsx b/src/components/UserProfileSettings/AddTelegram.tsx index 0a377b7efe..9bee8d59fc 100644 --- a/src/components/UserProfileSettings/AddTelegram.tsx +++ b/src/components/UserProfileSettings/AddTelegram.tsx @@ -30,7 +30,7 @@ const AddTelegram: FC = ({ modalControl, refetchSocialHandleStatus, // setErrorMessage, - // setSuccessMessage, + setSuccessMessage, }) => { const { isOpen, onClose } = modalControl; const { account, wallet } = useAccount(); @@ -96,6 +96,7 @@ const AddTelegram: FC = ({ size="small" isOpen={isOpen} onClose={() => { + setSuccessMessage('') refetchSocialHandleStatus(); onClose(); }} @@ -105,12 +106,12 @@ const AddTelegram: FC = ({ acceptButtonProps={ step === Steps.EnterTelegram ? { - children: 'Next', - loading: isSendingVerification || isLoading, - onClick: () => { - telegramFormik?.handleSubmit(); - }, - } + children: 'Next', + loading: isSendingVerification || isLoading, + onClick: () => { + telegramFormik?.handleSubmit(); + }, + } : null } cancelButtonProps={null} From a318f39264b64fbdaccad49555558f000169a6c7 Mon Sep 17 00:00:00 2001 From: rohitmalhotra1420 Date: Sat, 21 Dec 2024 21:50:26 +0530 Subject: [PATCH 37/37] telegram congif fixes for staging, localhost and alpha env --- src/config/config-alpha.js | 4 ++++ src/config/config-localhost.js | 4 ++++ src/config/config-staging.js | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/config/config-alpha.js b/src/config/config-alpha.js index 0b8eec2949..d89bb6cf42 100644 --- a/src/config/config-alpha.js +++ b/src/config/config-alpha.js @@ -80,6 +80,10 @@ export const config = { extension: 'https://chrome.google.com/webstore/detail/epns-protocol-beta/lbdcbpaldalgiieffakjhiccoeebchmg', howto: 'https://push.org/docs', }, + + // social media integration + telegramExternalURL: 'https://web.telegram.org/k/#@PushCommDevBot', + discordExternalURL: null, }; /** diff --git a/src/config/config-localhost.js b/src/config/config-localhost.js index 686b871736..0f610200e2 100644 --- a/src/config/config-localhost.js +++ b/src/config/config-localhost.js @@ -68,6 +68,10 @@ export const config = { extension: 'https://chrome.google.com/webstore/detail/epns-staging-protocol-alp/bjiennpmhdcandkpigcploafccldlakj', howto: 'https://push.org/docs', }, + + // social media integration + telegramExternalURL: 'https://web.telegram.org/k/#@PushCommDevBot', + discordExternalURL: null, }; /** diff --git a/src/config/config-staging.js b/src/config/config-staging.js index 1b45962443..6c769f72a4 100644 --- a/src/config/config-staging.js +++ b/src/config/config-staging.js @@ -85,7 +85,7 @@ export const config = { }, // social media integration - telegramExternalURL: 'https://t.me/PushCommDevBot', + telegramExternalURL: 'https://web.telegram.org/k/#@PushCommDevBot', discordExternalURL: null, };