diff --git a/package.json b/package.json index 7a5e6ee199..f154f080b3 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@metamask/eth-sig-util": "^4.0.0", "@mui/icons-material": "^5.8.4", "@mui/material": "^5.5.0", - "@pushprotocol/restapi": "1.7.20", + "@pushprotocol/restapi": "1.7.23", "@pushprotocol/socket": "0.5.3", "@pushprotocol/uiweb": "1.4.2", "@radix-ui/react-dropdown-menu": "^2.1.1", @@ -50,11 +50,11 @@ "@uniswap/widgets": "^2.47.3", "@unstoppabledomains/resolution": "8.5.0", "@web3-name-sdk/core": "^0.1.18", - "@web3-onboard/coinbase": "^2.2.5", - "@web3-onboard/core": "2.21.6", - "@web3-onboard/injected-wallets": "2.10.16", - "@web3-onboard/react": "^2.8.9", - "@web3-onboard/walletconnect": "2.5.5", + "@web3-onboard/coinbase": "^2.4.1", + "@web3-onboard/core": "2.22.2", + "@web3-onboard/injected-wallets": "2.11.1", + "@web3-onboard/react": "^2.9.2", + "@web3-onboard/walletconnect": "2.6.1", "@yisheng90/react-loading": "1.2.3", "assert": "2.0.0", "babel-plugin-styled-components": "1.10.7", diff --git a/public/svg/Base.svg b/public/svg/Base.svg new file mode 100644 index 0000000000..da7e6fbe95 --- /dev/null +++ b/public/svg/Base.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/blocks/Blocks.constants.ts b/src/blocks/Blocks.constants.ts new file mode 100644 index 0000000000..283264f2ce --- /dev/null +++ b/src/blocks/Blocks.constants.ts @@ -0,0 +1,7 @@ +export const newRadiusRegex = /\bradius-[a-z]+\b/g; + +export const oldRadiusRegex = /\br[0-9]+\b/g; + +export const newSpacingRegex = /\bspacing-[a-z]+\b/g; + +export const oldSpacingRegex = /\bs[0-9]+\b/g; diff --git a/src/blocks/Blocks.types.ts b/src/blocks/Blocks.types.ts index 07145040d5..e18b5a2177 100644 --- a/src/blocks/Blocks.types.ts +++ b/src/blocks/Blocks.types.ts @@ -1,7 +1,7 @@ import { HTMLAttributes } from 'react'; import { BoxResponsiveCSSProperties, BoxResponsiveCSSPropertiesData, BoxResponsivePropValues } from './box'; import { blocksColorsLegacy } from './Blocks.colors'; -import { ThemeColors } from './theme/Theme.types'; +import { ThemeBorderRadius, ThemeBorderSize, ThemeColors, ThemeSpacing } from './theme/Theme.types'; import { SkeletonResponsiveCSSProperties, SkeletonResponsiveCSSPropertiesData, @@ -21,9 +21,25 @@ export type Breakpoint = 'initial' | 'ms' | 'mm' | 'ml' | 'tb' | 'lp' | 'll' | ' export type ResponsiveProp = T | { [key in Breakpoint]?: T }; -export type RadiusType = `r${number}` | `r${number} r${number}` | `r${number} r${number} r${number} r${number}`; - -export type SpaceType = `s${number}` | `s${number} s${number}` | `s${number} s${number} s${number} s${number}`; +// Remove old RadiusType types +export type BlocksRadiusType = + | `r${number}` + | `r${number} r${number}` + | `r${number} r${number} r${number} r${number}` + | ThemeBorderRadius + | `${ThemeBorderRadius} ${ThemeBorderRadius}` + | `${ThemeBorderRadius} ${ThemeBorderRadius} ${ThemeBorderRadius} ${ThemeBorderRadius}`; + +// Remove old SpaceType types +export type BlocksSpaceType = + | `s${number}` + | `s${number} s${number}` + | `s${number} s${number} s${number} s${number}` + | ThemeSpacing + | `${ThemeSpacing} ${ThemeSpacing}` + | `${ThemeSpacing} ${ThemeSpacing} ${ThemeSpacing} ${ThemeSpacing}`; + +export type BlocksGapType = ThemeSpacing | `${ThemeSpacing} ${ThemeSpacing}`; export type PixelValue = `${number}px`; @@ -58,10 +74,11 @@ export type BlocksColors = keyof BlocksColorData; export type ThemeMode = 'light' | 'dark'; -// TODO: Remove BlocksColors +// TODO: Remove ThemeModeColors export type ThemeModeColors = Record; -export type BorderValue = `${number}px ${string} ${BlocksColors}` | 'none'; +// TODO: Remove the blocks colors border size +export type BorderValue = `${number}px ${string} ${BlocksColors}` | `${number}px ${string} ${ThemeBorderSize}` | 'none'; export type ThemeModeBorder = Record; diff --git a/src/blocks/Blocks.utils.ts b/src/blocks/Blocks.utils.ts index 5797d0cfbe..b8a346160d 100644 --- a/src/blocks/Blocks.utils.ts +++ b/src/blocks/Blocks.utils.ts @@ -12,9 +12,10 @@ import { ThemeMode, ThemeModeBorder, BorderValue, - RadiusType, + BlocksRadiusType, } from './Blocks.types'; import { ThemeColors } from './theme/Theme.types'; +import { newRadiusRegex, newSpacingRegex, oldRadiusRegex, oldSpacingRegex } from './Blocks.constants'; /** * @param propName @@ -24,7 +25,10 @@ import { ThemeColors } from './theme/Theme.types'; const getCSSValue = (propName: CSSPropName, value: CSSPropValueType | undefined) => { if (propName === 'padding' || propName === 'margin') { if (typeof value === 'string') { - return value.replace(/\b(\w+)\b/g, 'var(--$1)'); + return value.replace( + newSpacingRegex.test(value) ? newSpacingRegex : oldSpacingRegex, + (match) => `var(--${match})` + ); } } else if (propName === 'gap' || propName === 'border-radius') { return `var(--${value})`; @@ -176,12 +180,14 @@ export const getBlocksBorder = (mode: ThemeMode, border?: BorderValue | ThemeMod * @param radius * @returns */ -export const getBlocksBorderRadius = (radius?: RadiusType) => { +export const getBlocksBorderRadius = (radius?: BlocksRadiusType) => { // If border-radius is not given return undefined, to avoid any breakages if (!radius) return radius; - return radius.replace(/\b(\w+)\b/g, 'var(--$1)'); + const result = radius.replace( + newRadiusRegex.test(radius) ? newRadiusRegex : oldRadiusRegex, + (match) => `var(--${match})` + ); - // If passed a design system border-radius then use radius as a variable - return `var(--${radius})`; + return result; }; diff --git a/src/blocks/box/Box.tsx b/src/blocks/box/Box.tsx index 4a25537cc1..b866e161bb 100644 --- a/src/blocks/box/Box.tsx +++ b/src/blocks/box/Box.tsx @@ -27,6 +27,29 @@ const StyledBox = styled.div.withConfig({ border: ${(props) => getBlocksBorder(props.mode, props.border)}; position: ${(props) => props.position}; + // push custom scroll + &::-webkit-scrollbar-track { + background-color: none; + border-radius: 9px; + } + + &::-webkit-scrollbar { + background-color: none; + width: 4px; + } + + &::-webkit-scrollbar-thumb { + border-radius: 10px; + background-image: -webkit-gradient( + linear, + left top, + left bottom, + color-stop(0.44, #cf1c84), + color-stop(0.72, #cf1c84), + color-stop(0.86, #cf1c84) + ); + } + /* Extra CSS prop */ ${(props) => props.css || ''} `; diff --git a/src/blocks/box/Box.types.ts b/src/blocks/box/Box.types.ts index 722bf7ae3e..11f6288ffb 100644 --- a/src/blocks/box/Box.types.ts +++ b/src/blocks/box/Box.types.ts @@ -3,12 +3,13 @@ import { CSSProperties, ReactNode } from 'react'; import { BlocksColors, BorderValue, - RadiusType, + BlocksRadiusType, ResponsiveProp, - SpaceType, + BlocksSpaceType, ThemeModeBorder, ThemeModeColors, ValueOf, + BlocksGapType, } from '../Blocks.types'; import { FlattenSimpleInterpolation } from 'styled-components'; import { ThemeColors } from 'blocks/theme/Theme.types'; @@ -21,7 +22,7 @@ export type BoxResponsiveProps = { /* Sets flex-direction css property */ flexDirection?: ResponsiveProp; /* Sets gap between the elements */ - gap?: ResponsiveProp; + gap?: ResponsiveProp; /* Sets display css property */ display?: ResponsiveProp; /* Sets height css property */ @@ -29,7 +30,7 @@ export type BoxResponsiveProps = { /* Sets justify-content css property */ justifyContent?: ResponsiveProp; /* Sets margin css property */ - margin?: ResponsiveProp; + margin?: ResponsiveProp; /* Sets max-height css property */ maxHeight?: ResponsiveProp; /* Sets min-height css property */ @@ -39,7 +40,7 @@ export type BoxResponsiveProps = { /* Sets min-width css property */ minWidth?: ResponsiveProp; /* Sets padding css property */ - padding?: ResponsiveProp; + padding?: ResponsiveProp; /* Sets width css property */ width?: ResponsiveProp; }; @@ -48,7 +49,7 @@ export type BoxNonResponsiveProps = { /* Sets border css property */ border?: BorderValue | ThemeModeBorder; /* Sets border-radius css property */ - borderRadius?: RadiusType; + borderRadius?: BlocksRadiusType; /* Sets background-color css property */ backgroundColor?: BlocksColors | ThemeModeColors | ThemeColors; /* Sets color css property */ diff --git a/src/blocks/button/Button.utils.ts b/src/blocks/button/Button.utils.ts index 2f39d638e0..835d239124 100644 --- a/src/blocks/button/Button.utils.ts +++ b/src/blocks/button/Button.utils.ts @@ -197,6 +197,11 @@ export const getButtonSizeStyles = ({ font-weight: 500; line-height: 16px; + [role='img'] { + width: 16px; + height: 16px; + } + .icon-text > span { height: 16px; width: 16px; @@ -236,6 +241,11 @@ export const getButtonSizeStyles = ({ font-weight: 500; line-height: 16px; + [role='img'] { + width: 24px; + height: 24px; + } + .icon-text > span { height: 16px; width: 16px; @@ -276,6 +286,11 @@ export const getButtonSizeStyles = ({ font-weight: 500; line-height: 16px; + [role='img'] { + width: 24px; + height: 24px; + } + .icon-text > span { height: 24px; width: 24px; @@ -315,6 +330,11 @@ export const getButtonSizeStyles = ({ font-weight: 500; line-height: 16px; + [role='img'] { + width: 32px; + height: 32px; + } + .icon-text > span { height: 24px; width: 24px; diff --git a/src/blocks/hoverableSVG/HoverableSVG.tsx b/src/blocks/hoverableSVG/HoverableSVG.tsx index 97018530d3..6f1e5f74bc 100644 --- a/src/blocks/hoverableSVG/HoverableSVG.tsx +++ b/src/blocks/hoverableSVG/HoverableSVG.tsx @@ -4,31 +4,33 @@ import { useBlocksTheme } from '../Blocks.hooks'; import { BlocksColors, ThemeModeColors, - SpaceType, + BlocksSpaceType, ModeProp, TransformedHTMLAttributes, - RadiusType, + BlocksRadiusType, } from '../Blocks.types'; import { getBlocksColor, getBlocksBorderRadius } from '../Blocks.utils'; +import { ThemeColors } from '../theme/Theme.types'; + export type HoverableSVGProps = { /* Icon component */ icon: React.ReactNode; /* Sets the initial color for SVG */ - defaultColor?: BlocksColors | ThemeModeColors; + defaultColor?: BlocksColors | ThemeModeColors | ThemeColors; /* Sets button as disabled */ disabled?: boolean; /* Sets the hover color for SVG */ - hoverColor?: BlocksColors | ThemeModeColors; + hoverColor?: BlocksColors | ThemeModeColors | ThemeColors; /* Sets the initial background color for SVG */ - defaultBackground?: BlocksColors | ThemeModeColors; + defaultBackground?: BlocksColors | ThemeModeColors | ThemeColors; /* Sets the initial background color for SVG */ - hoverBackground?: BlocksColors | ThemeModeColors; + hoverBackground?: BlocksColors | ThemeModeColors | ThemeColors; /* Sets the padding for SVG button container */ - padding?: SpaceType; + padding?: BlocksSpaceType; /* Sets the margin for SVG button container */ - margin?: SpaceType; + margin?: BlocksSpaceType; /* Sets the margin for SVG button container */ - borderRadius?: RadiusType; + borderRadius?: BlocksRadiusType; } & TransformedHTMLAttributes; const StyledButton = styled.button.withConfig({ diff --git a/src/blocks/lozenge/Lozenge.constants.tsx b/src/blocks/lozenge/Lozenge.constants.tsx index 3befe70c33..a7a5b4640e 100644 --- a/src/blocks/lozenge/Lozenge.constants.tsx +++ b/src/blocks/lozenge/Lozenge.constants.tsx @@ -47,6 +47,8 @@ export const getLozengeSizeStyles = ({ if (size === 'small') { return css` /* Lozenge tag container size css */ + max-height: 14px; + min-height: 14px; ${iconOnly ? ` diff --git a/src/blocks/lozenge/Lozenge.tsx b/src/blocks/lozenge/Lozenge.tsx index 8aa9708a89..4a77b944a3 100644 --- a/src/blocks/lozenge/Lozenge.tsx +++ b/src/blocks/lozenge/Lozenge.tsx @@ -68,7 +68,7 @@ const Lozenge = forwardRef( {...props} > {icon && {icon}} - {children} + {children} ); } diff --git a/src/blocks/separator/Separator.types.ts b/src/blocks/separator/Separator.types.ts index f8ad501ade..bdb498c743 100644 --- a/src/blocks/separator/Separator.types.ts +++ b/src/blocks/separator/Separator.types.ts @@ -1,11 +1,11 @@ -import { TransformedHTMLAttributes, ResponsiveProp, SpaceType, ValueOf } from '../Blocks.types'; +import { TransformedHTMLAttributes, ResponsiveProp, BlocksSpaceType, ValueOf } from '../Blocks.types'; import { FlattenSimpleInterpolation } from 'styled-components'; export type SeparatorResponsiveProps = { /* Sets height css property */ height?: ResponsiveProp; /* Sets margin css property */ - margin?: ResponsiveProp; + margin?: ResponsiveProp; /* Sets width css property */ width?: ResponsiveProp; }; diff --git a/src/blocks/skeleton/Skeleton.types.ts b/src/blocks/skeleton/Skeleton.types.ts index 3f0f88489d..a8aa57b5ca 100644 --- a/src/blocks/skeleton/Skeleton.types.ts +++ b/src/blocks/skeleton/Skeleton.types.ts @@ -1,17 +1,23 @@ import { ReactNode } from 'react'; -import type { TransformedHTMLAttributes, RadiusType, ResponsiveProp, SpaceType, ValueOf } from '../Blocks.types'; +import type { + TransformedHTMLAttributes, + BlocksRadiusType, + ResponsiveProp, + BlocksSpaceType, + ValueOf, +} from '../Blocks.types'; import type { FlattenSimpleInterpolation } from 'styled-components'; export type SkeletonResponsiveProps = { /* Sets height css property */ height?: ResponsiveProp; /* Sets margin css property */ - margin?: ResponsiveProp; + margin?: ResponsiveProp; /* Sets width css property */ width?: ResponsiveProp; /* Sets border radius css property */ - borderRadius?: ResponsiveProp; + borderRadius?: ResponsiveProp; }; export type SkeletonProps = SkeletonResponsiveProps & diff --git a/src/blocks/textInput/TextInput.constants.tsx b/src/blocks/textInput/TextInput.constants.tsx deleted file mode 100644 index 116b86331c..0000000000 --- a/src/blocks/textInput/TextInput.constants.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { TextInputStyles } from './TextInput.types'; - -const backgroundColor: TextInputStyles = { - error: { light: 'red-100', dark: 'gray-800' }, - success: { light: 'green-100', dark: 'gray-800' }, - disabled: { light: 'gray-200', dark: 'gray-800' }, - default: { light: 'white', dark: 'gray-800' }, -}; - -const borderColor: TextInputStyles = { - error: { light: 'red-400', dark: 'red-500' }, - success: { light: 'green-500', dark: 'green-400' }, - disabled: { light: 'gray-300', dark: 'gray-900' }, - default: { light: 'gray-200', dark: 'gray-800' }, -}; - -const textColor: TextInputStyles = { - error: { light: 'gray-1000', dark: 'gray-100' }, - success: { light: 'gray-1000', dark: 'gray-100' }, - disabled: { light: 'gray-400', dark: 'gray-700' }, - default: { light: 'gray-1000', dark: 'gray-100' }, -}; - -const descriptionColor: TextInputStyles = { - error: { light: 'gray-1000', dark: 'gray-100' }, - success: { light: 'gray-1000', dark: 'gray-100' }, - disabled: { light: 'gray-400', dark: 'gray-600' }, - default: { light: 'gray-400', dark: 'gray-600' }, -}; -const iconColor: TextInputStyles = { - error: { light: 'red-700', dark: 'red-500' }, - success: { light: 'green-600', dark: 'green-400' }, - disabled: { light: 'gray-400', dark: 'gray-700' }, - default: { light: 'gray-300', dark: 'gray-600' }, -}; - -export const textInputColor = { - backgroundColor: backgroundColor, - borderColor: borderColor, - textColor: textColor, - iconColor: iconColor, - descriptionColor: descriptionColor, -}; diff --git a/src/blocks/textInput/TextInput.tsx b/src/blocks/textInput/TextInput.tsx index 33a259eb44..12ddd7e16d 100644 --- a/src/blocks/textInput/TextInput.tsx +++ b/src/blocks/textInput/TextInput.tsx @@ -1,187 +1,201 @@ -import { ReactNode, forwardRef } from 'react'; - -import styled, { FlattenSimpleInterpolation } from 'styled-components'; - -import { ModeProp } from '../Blocks.types'; - -import { getTextInputState, getTextInputStateStyles } from './TextInput.utils'; -import { useBlocksTheme } from 'blocks/Blocks.hooks'; -import { Asterisk, CrossFilled } from 'blocks/icons'; -import { Text } from 'blocks/text'; +import { Box } from 'blocks'; +import { Asterisk, CrossFilled } from '../icons'; +import { Text, textVariants } from '../text'; +import React, { ReactNode, forwardRef } from 'react'; +import styled, { FlattenSimpleInterpolation, css } from 'styled-components'; export type TextInputProps = { - /* Additional prop from styled components to apply custom css to input field */ css?: FlattenSimpleInterpolation; - /* Render an icon before input field contents */ + description?: string; + disabled?: boolean; icon?: ReactNode; - /* Handles the change in input value */ - onChange?: (e: React.ChangeEvent) => void; - /* Input value */ - value?: string; - /* Input type value */ + error?: boolean; type?: 'text' | 'password'; - /* Handles the clearing the entire input value */ - onClear?: () => void; - /* Label for the input field */ + errorMessage?: string; label?: string; - /* TotalLength of input value */ - totalCount?: number; - /* Placeholder for input field */ + onChange: (e: React.ChangeEvent) => void; + onClear?: () => void; placeholder?: string; - /* Sets the input field to be compulsory */ required?: boolean; - /* Sets the input field to error state */ - error?: boolean; - /* Sets the input field to success state */ success?: boolean; - /* Sets button as disabled */ - disabled?: boolean; - /* Description shown below the input field */ - description?: string; - /* Error message shown below the input field */ - errorMessage?: string; + totalCount?: number; + value: string; }; -const StyledTextInput = styled.div` - /* Common Input field CSS */ +const Container = styled.div<{ css?: FlattenSimpleInterpolation }>` + align-items: flex-start; display: flex; flex-direction: column; - width: inherit; - gap: var(--s2); - .label-count { - display: flex; - justify-content: space-between; - align-items: center; - } - .label { - display: flex; - gap: var(--s1); - } - .input-container { - cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')}; - display: flex; - align-items: center; - font-family: var(--font-family); - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 20px; - white-space: nowrap; - padding: var(--s0) var(--s3); - border-radius: var(--r3); - - /* Common icon css added through CSS class */ - [role='img'] { - width: 18px; - height: 18px; - } - - & input { - flex: 1; - border: none; - background-color: transparent; - padding: var(--s3) var(--s0); - margin-left: var(--s1); - &:focus { - outline: none; + flex: 1 0 0; + gap: var(--spacing-xxs, 8px); + + /* Custom CSS applied via styled component css prop */ + ${(props) => props.css || ''}; +`; + +const StyledTextInput = styled.div<{ + error?: boolean; + success?: boolean; + disabled?: boolean; +}>` + ${({ theme, success, error, disabled }) => { + const colors = theme?.blocksTheme?.colors; + const defaultState = error ? 'danger' : success ? 'success' : disabled ? 'disabled' : 'default'; + const focusState = error ? 'danger' : success ? 'success' : 'focus'; + return css` + align-self: stretch; + justify-content: space-between; + align-items: flex-start; + border-radius: var(--radius-xs, 12px); + border: 1.5px solid + var(--components-inputs-stroke-${defaultState}, ${colors[`components-inputs-stroke-${defaultState}`]}); + background: var( + --components-inputs-background-${defaultState}, + ${colors[`components-inputs-background-${defaultState}`]} + ); + + display: flex; + + font-family: var(--font-family); + font-size: ${textVariants['bs-regular'].fontSize}; + font-style: ${textVariants['bs-regular'].fontStyle}; + font-weight: ${textVariants['bs-regular'].fontWeight}; + line-height: ${textVariants['bs-regular'].lineHeight}; + + gap: var(--spacing-xxs, 8px); + + padding: var(--spacing-xs, 12px); + [role='img'] { + width: 24px; + height: 24px; + + color: var(--components-inputs-icon-${defaultState}, ${colors[`components-inputs-icon-${defaultState}`]}); + } + & input { + color: var(--components-inputs-text-${defaultState}, ${colors[`components-inputs-text-${defaultState}`]}); + + width: 100%; + ::placeholder { + color: var(--components-inputs-text-placeholder, ${colors['components-inputs-text-placeholder']}); + } + border: none; + background: transparent; + &:focus, + :disabled { + outline: none; + } } + &:hover { + border: 1.5px solid var(--components-inputs-stroke-hover, ${colors['components-inputs-stroke-hover']}); + } + + &:focus-within { + border: 1.5px solid + var(--components-inputs-stroke-${focusState}, ${colors[`components-inputs-stroke-${focusState}`]}); outline: none; } - :disabled { - background-color: transparent; + + &:disabled { + border: 1.5px solid var(--components-inputs-stroke-default, ${colors['components-inputs-stroke-default']}); + background: var(--components-inputs-background-disabled, ${colors['components-inputs-background-disabled']}); + cursor: not-allowed; + color: var(--components-inputs-text-disabled, ${colors['components-inputs-text-disabled']}); } - } - } - /* TextInput type CSS styles */ - ${({ mode, error, disabled, success }) => - getTextInputStateStyles({ - mode, - state: getTextInputState({ error: !!error, disabled: !!disabled, success: !!success }), - })} + `; + }} +`; - /* Custom CSS applied via styled component css prop */ - ${(props) => props.css || ''} +const LabelContainer = styled.div` + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; `; -const TextInput = forwardRef( +const LabelTextContainer = styled.div` + display: flex; + align-items: flex-start; + gap: var(--spacing-xxxs, 4px); +`; + +export const TextInput = forwardRef( ( { + css, + description, disabled, error, - success, - required, + errorMessage, label, - totalCount, + onChange, + onClear, placeholder, - icon, + required, type = 'text', - onChange, + icon, + success, + totalCount, value, - onClear, - description, - errorMessage, - ...props }, ref ) => { - const { mode } = useBlocksTheme(); return ( - - {(label || totalCount) && ( -
- {label && ( -
- - {label} - - {!!required && ( - - )} -
- )} - + + {label && ( + + + + {label} + {required && } + + {totalCount && ( - {`${value?.length}/${totalCount}`} - + color={disabled ? 'components-inputs-text-disabled' : 'components-inputs-text-secondary'} + >{`${value?.length || 0} / ${totalCount}`} )} -
+ )} -
- {icon} - + + + {icon} + + {onClear && onClear?.()} />} -
+
{description && ( {description} @@ -189,16 +203,12 @@ const TextInput = forwardRef( {errorMessage && ( {errorMessage} )} - + ); } ); - -TextInput.displayName = 'TextInput'; - -export { TextInput }; diff --git a/src/blocks/textInput/TextInput.types.tsx b/src/blocks/textInput/TextInput.types.tsx deleted file mode 100644 index 5876495617..0000000000 --- a/src/blocks/textInput/TextInput.types.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import { ThemeModeColors } from 'blocks/Blocks.types'; - -export type TextInputStates = 'error' | 'disabled' | 'default' | 'success'; -export type TextInputStyles = Record; diff --git a/src/blocks/textInput/TextInput.utils.ts b/src/blocks/textInput/TextInput.utils.ts deleted file mode 100644 index 3416ece84d..0000000000 --- a/src/blocks/textInput/TextInput.utils.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { ThemeMode } from 'blocks/Blocks.types'; -import { getBlocksColor } from 'blocks/Blocks.utils'; - -import { textInputColor } from './TextInput.constants'; -import { TextInputStates } from './TextInput.types'; - -export const getTextInputState = ({ - error, - disabled, - success, -}: { - error: boolean; - disabled: boolean; - success: boolean; -}): TextInputStates => { - if (error) { - return 'error'; - } else if (disabled) { - return 'disabled'; - } else if (success) { - return 'success'; - } - return 'default'; -}; - -export const getTextInputStateStyles = ({ mode, state }: { mode: ThemeMode; state: TextInputStates }) => { - /*check all dark mode , label ,count and icon and placeholder colors - add success state - */ - return ` - - .input-container { - background-color: ${getBlocksColor(mode, textInputColor.backgroundColor[state])}; - - border: 1.5px solid ${getBlocksColor(mode, textInputColor.borderColor[state])}; - - - &:hover { - border: 1.5px solid ${getBlocksColor(mode, { - light: 'gray-300', - dark: 'gray-700', - })}; - }; - - &:focus-within { - border: 1.5px solid ${getBlocksColor( - mode, - state === 'error' ? textInputColor.borderColor.error : { light: 'pink-300', dark: 'pink-300' } - )}; - }; - - [role='img'] { - color: ${getBlocksColor(mode, textInputColor.iconColor[state])}; - }; - - & input{ - color: ${getBlocksColor(mode, textInputColor.textColor[state])}; - ::placeholder { - color: ${getBlocksColor(mode, { - light: 'gray-400', - dark: 'gray-600', - })}; - - }; - } - -}`; -}; diff --git a/src/blocks/textarea/TextArea.tsx b/src/blocks/textarea/TextArea.tsx index 501ef1079d..0bf1bf6197 100644 --- a/src/blocks/textarea/TextArea.tsx +++ b/src/blocks/textarea/TextArea.tsx @@ -51,7 +51,7 @@ const StyledTextArea = styled.textarea<{ ${colors[`components-inputs-background-${defaultState}`]} ); - color: var(--components-inputs-text-default, ${colors['components-inputs-text-default']}); + color: var(--components-inputs-text-${defaultState}, ${colors[`components-inputs-text-${defaultState}`]}); display: flex; @@ -130,7 +130,7 @@ export const TextArea = forwardRef( {label} @@ -140,7 +140,7 @@ export const TextArea = forwardRef( {totalCount && ( {`${value?.length || 0} / ${totalCount}`} )} diff --git a/src/blocks/theme/Theme.types.ts b/src/blocks/theme/Theme.types.ts index 561efd63cb..ef1fc512c8 100644 --- a/src/blocks/theme/Theme.types.ts +++ b/src/blocks/theme/Theme.types.ts @@ -25,3 +25,9 @@ export type Theme = { opacity: typeof opacityVariables; spacing: typeof spacingVariables; }; + +export type ThemeBorderRadius = keyof Theme['borderRadius']; + +export type ThemeBorderSize = keyof Theme['borderSize']; + +export type ThemeSpacing = keyof Theme['spacing']; diff --git a/src/components/ChangeNetwork.tsx b/src/components/ChangeNetwork.tsx index 648a13f106..4aba9ca2c2 100644 --- a/src/components/ChangeNetwork.tsx +++ b/src/components/ChangeNetwork.tsx @@ -53,7 +53,7 @@ const ChangeNetwork = () => { color="#fff" radius="15px" padding="20px 20px" - onClick={() => switchChain(aliasChainId)} + onClick={() => switchChain(parseInt(aliasChainId))} > { function: () => {}, link: 'https://cyber-testnet.testnets.rollbridge.app/', }, + { + id: '84532', + value: 'Base Sepolia', + title: 'Base Sepolia Faucet', + function: () => {}, + link: 'https://www.alchemy.com/faucets/base-sepolia', + } ]; // render diff --git a/src/components/InitState.tsx b/src/components/InitState.tsx index e7278b88d7..61a71950b8 100644 --- a/src/components/InitState.tsx +++ b/src/components/InitState.tsx @@ -238,7 +238,7 @@ const InitState = () => { !userPushSDKInstance ) return; - + (async function () { if (onCoreNetwork) { checkUserForChannelOwnership(account, userPushSDKInstance).then(async () => { diff --git a/src/components/VerifyAlias.tsx b/src/components/VerifyAlias.tsx index d384723152..237b9ba172 100644 --- a/src/components/VerifyAlias.tsx +++ b/src/components/VerifyAlias.tsx @@ -69,6 +69,10 @@ const VerifyAlias = ({ aliasEthAccount, setAliasVerified }) => { label: 'Cyber ETH', url: 'https://cyber-testnet.testnets.rollbridge.app/', }, + 84532: { + label: 'Base Sepolia', + url: 'https://www.alchemy.com/faucets/base-sepolia' + } }; const checkAlias = async () => { diff --git a/src/components/chat/unlockProfile/UnlockProfile.tsx b/src/components/chat/unlockProfile/UnlockProfile.tsx index e4969365ee..b98c6c7e7d 100644 --- a/src/components/chat/unlockProfile/UnlockProfile.tsx +++ b/src/components/chat/unlockProfile/UnlockProfile.tsx @@ -1,5 +1,5 @@ // React + Web3 Essentials -import { useContext, useEffect, useState } from 'react'; +import { useCallback, useContext, useEffect, useState } from 'react'; // External Packages import styled, { useTheme } from 'styled-components'; @@ -26,6 +26,7 @@ import Tooltip from 'components/reusables/tooltip/Tooltip'; import UnlockLogo from '../../../assets/chat/unlock.svg'; import Wallet from '../../../assets/chat/wallet.svg'; import { Box, CrossFilled, HoverableSVG } from 'blocks'; +import { checkUnlockProfileErrors } from './UnlockProfile.utils'; // Constants export enum UNLOCK_PROFILE_TYPE { @@ -49,7 +50,7 @@ type UnlockProfileModalProps = { }; const UnlockProfile = ({ InnerComponentProps, onClose }: UnlockProfileModalProps) => { - const { type, description, closeIcon } = InnerComponentProps; + const { type, description } = InnerComponentProps; const theme = useTheme(); const { handleConnectWallet, initializePushSDK } = useContext(AppContext); @@ -65,14 +66,25 @@ const UnlockProfile = ({ InnerComponentProps, onClose }: UnlockProfileModalProps body: 'Sign with wallet to continue.', }); - const handleRememberMeChange = (event) => { + // const handleRememberMeChange = (event: any) => { + const handleRememberMeChange = (event: React.ChangeEvent) => { setRememberMe(event.target.checked); }; - const handleChatprofileUnlock = async () => { - await handleConnectWallet({ remember: rememberMe }); + const connectWallet = () => { + connect(); }; + const handleChatprofileUnlock = useCallback(async () => { + const user = await handleConnectWallet({ remember: rememberMe, wallet }); + + const errorExists = checkUnlockProfileErrors(user); + + if (errorExists && onClose) { + onClose(); + } + }, [wallet, rememberMe]); + useEffect(() => { if (wallet?.accounts?.length > 0) { setActiveStatus({ @@ -220,7 +232,7 @@ const UnlockProfile = ({ InnerComponentProps, onClose }: UnlockProfileModalProps activeStatus={activeStatus.status} status={PROFILESTATE.CONNECT_WALLET} disabled={activeStatus.status !== PROFILESTATE.CONNECT_WALLET && true} - onClick={() => connect()} + onClick={() => connectWallet()} > Connect Wallet diff --git a/src/components/chat/unlockProfile/UnlockProfile.utils.ts b/src/components/chat/unlockProfile/UnlockProfile.utils.ts new file mode 100644 index 0000000000..dcc0812f34 --- /dev/null +++ b/src/components/chat/unlockProfile/UnlockProfile.utils.ts @@ -0,0 +1,10 @@ +import { PushAPI } from '@pushprotocol/restapi'; + +export const checkUnlockProfileErrors = (user: PushAPI) => { + const userMessage = 'Error decrypting PGP private key ...swiching to Guest mode'; + const errorExists = user?.errors.some( + (error: { type: string; message: string }) => error.type === 'ERROR' && error.message === userMessage + ); + + return errorExists; +}; diff --git a/src/components/yield/StakingModalComponent.tsx b/src/components/yield/StakingModalComponent.tsx index a5ad272597..9e688a3c2a 100644 --- a/src/components/yield/StakingModalComponent.tsx +++ b/src/components/yield/StakingModalComponent.tsx @@ -8,14 +8,13 @@ import { ethers } from 'ethers'; // External Packages import styled, { useTheme } from 'styled-components'; import { MdCheckCircle, MdError } from 'react-icons/md'; -import { useSelector } from 'react-redux'; // Internal Compoonents import Close from 'assets/chat/group-chat/close.svg?react'; import LoaderSpinner, { LOADER_TYPE } from 'components/reusables/loaders/LoaderSpinner'; import { bnToInt, formatTokens } from 'helpers/StakingHelper'; import { P } from 'components/SharedStyling'; -import { ButtonV2, H2V2, ItemHV2, ItemVV2, SpanV2 } from 'components/reusables/SharedStylingV2'; +import { ButtonV2, H2V2, ItemHV2, ItemVV2 } from 'components/reusables/SharedStylingV2'; import { AppContext } from 'contexts/AppContext'; // Internal Configs @@ -25,7 +24,7 @@ import { useAccount, useDeviceWidthCheck } from 'hooks'; const StakingModalComponent = ({ onClose, InnerComponentProps, toastObject }) => { const { title, getUserData, getPoolStats, setUnstakeErrorMessage, setWithdrawErrorMessage } = InnerComponentProps; - const { account, provider } = useAccount(); + const { account, provider, isWalletConnected, connect } = useAccount(); const [maxAmount, setMaxAmount] = useState(0); const [approvedToken, setApprovedToken] = useState(0); @@ -36,9 +35,6 @@ const StakingModalComponent = ({ onClose, InnerComponentProps, toastObject }) => const [txnMessage, setTxnMessage] = useState(null); - const { userPushSDKInstance } = useSelector((state: any) => { - return state.user; - }); const { handleConnectWallet } = useContext(AppContext); const [depositAmount, setDepositAmount] = useState(0); @@ -85,8 +81,9 @@ const StakingModalComponent = ({ onClose, InnerComponentProps, toastObject }) => }, []); const approveDeposit = async () => { - if (!userPushSDKInstance.signer) { - handleConnectWallet(); + + if (!isWalletConnected) { + connect(); return; } @@ -162,8 +159,8 @@ const StakingModalComponent = ({ onClose, InnerComponentProps, toastObject }) => }; const depositAmountTokenFarmSingleTx = async () => { - if (!userPushSDKInstance.signer) { - handleConnectWallet(); + if (!isWalletConnected) { + connect(); return; } diff --git a/src/config/config-dev.js b/src/config/config-dev.js index 77760246db..dd655d20c2 100644 --- a/src/config/config-dev.js +++ b/src/config/config-dev.js @@ -32,6 +32,7 @@ export const config = { 421614, // arbitrum testnet 123, // fuse testnet 111557560, // Cyber testnet + 84532, //base sepolia ], /** @@ -182,4 +183,11 @@ export const CHAIN_DETAILS = { rpcUrl: 'https://cyber-testnet.alt.technology/', commAddress: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', }, + 84532: { + label: 'Base Sepolia', + name: 'BASE_TESTNET', + chainid: 84532, + rpcUrl: 'https://sepolia.base.org/', + commAddress: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', + }, }; diff --git a/src/config/config-prod.js b/src/config/config-prod.js index 2cf4b64029..ef744b5776 100644 --- a/src/config/config-prod.js +++ b/src/config/config-prod.js @@ -31,6 +31,7 @@ export const config = { 1101, // polygon zkevm mainnet 122, // fuse mainnet 7560, // Cyber mainnet + 8453, //base mainnet ], /** @@ -175,4 +176,11 @@ export const CHAIN_DETAILS = { rpcUrl: 'https://cyber.alt.technology/', commAddress: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', }, + 8453: { + label: 'Base Mainnet', + name: 'BASE_MAINNET', + chainid: 8453, + rpcUrl: 'https://mainnet.base.org/', + commAddress: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', + }, }; diff --git a/src/config/config-staging.js b/src/config/config-staging.js index 1be1b680ef..2cc4e92893 100644 --- a/src/config/config-staging.js +++ b/src/config/config-staging.js @@ -33,6 +33,7 @@ export const config = { 421614, // arbitrum testnet 123, // fuse testnet 111557560, // Cyber testnet + 84532, //base sepolia ], /** @@ -179,4 +180,11 @@ export const CHAIN_DETAILS = { rpcUrl: 'https://cyber-testnet.alt.technology/', commAddress: '0x6e489B7af21cEb969f49A90E481274966ce9D74d', }, + 84532: { + label: 'Base Sepolia', + name: 'BASE_TESTNET', + chainid: 84532, + rpcUrl: 'https://sepolia.base.org/', + commAddress: '0x6e489B7af21cEb969f49A90E481274966ce9D74d', + }, }; diff --git a/src/connectors/chains.ts b/src/connectors/chains.ts index 557a8b4136..7f55ab2b43 100644 --- a/src/connectors/chains.ts +++ b/src/connectors/chains.ts @@ -130,6 +130,12 @@ export const MAINNET_CHAINS: ChainConfig = { nativeCurrency: ETH, blockExplorerUrls: ['https://cyberscan.co/'], }, + 8453: { + name: 'Base Mainnet', + urls: ['https://mainnet.base.org/'], + nativeCurrency: ETH, + blockExplorerUrls: ['https://basescan.org/'], + }, }; export const TESTNET_CHAINS: ChainConfig = { @@ -192,6 +198,12 @@ export const TESTNET_CHAINS: ChainConfig = { nativeCurrency: ETH, blockExplorerUrls: ['https://testnet.cyberscan.co/'], }, + 84532: { + name: 'Base Sepolia', + urls: ['https://sepolia.base.org/'], + nativeCurrency: ETH, + blockExplorerUrls: ['https://sepolia-explorer.base.org/'], + }, }; export const CHAINS: ChainConfig = { diff --git a/src/contexts/AppContext.tsx b/src/contexts/AppContext.tsx index 704f098cdb..457e79f5cd 100644 --- a/src/contexts/AppContext.tsx +++ b/src/contexts/AppContext.tsx @@ -33,6 +33,7 @@ const AppContextProvider = ({ children }) => { const shouldInitializeRef = useRef(true); // Using a ref to control useEffect execution const { connect, provider, account, wallet, connecting } = useAccount(); + const web3onboardToast = useToast(); const { readOnlyWallet } = useContext(GlobalContext); @@ -96,7 +97,17 @@ const AppContextProvider = ({ children }) => { }; // TODO: Change function name to handleConnectWalletAndUser - const handleConnectWallet = async ({ remember = false, showToast = false, toastMessage = undefined } = {}) => { + const handleConnectWallet = async ({ + remember = false, + showToast = false, + toastMessage = undefined, + wallet, + }: { + wallet?: any; + remember?: any; + showToast?: boolean; + toastMessage?: string; + }) => { shouldInitializeRef.current = false; // Directly modify the ref to disable useEffect execution if (showToast) { @@ -116,7 +127,7 @@ const AppContextProvider = ({ children }) => { let user; if (wallet?.accounts?.length > 0) { - user = await initializePushSDK(); + user = await initializePushSDK(wallet); } else { const walletConnected = await connect(); if (walletConnected.length > 0) { diff --git a/src/contexts/RewardsContext.tsx b/src/contexts/RewardsContext.tsx new file mode 100644 index 0000000000..9dfffc88bb --- /dev/null +++ b/src/contexts/RewardsContext.tsx @@ -0,0 +1,26 @@ +import React, { createContext, useContext, useState, ReactNode } from 'react'; + +interface AuthModalContextType { + isAuthModalVisible: boolean; + setIsAuthModalVisible: React.Dispatch>; +} + +const AuthModalContext = createContext(undefined); + +export const RewardsContextProvider = ({ children }: { children: ReactNode }) => { + const [isAuthModalVisible, setIsAuthModalVisible] = useState(false); + + return ( + + {children} + + ); +}; + +export const useRewardsContext = () => { + const context = useContext(AuthModalContext); + if (context === undefined) { + throw new Error('useRewardsContext must be used within an RewardsContextProvider'); + } + return context; +}; diff --git a/src/helpers/CaipHelper.ts b/src/helpers/CaipHelper.ts index e2c9128ed6..2762d75abf 100644 --- a/src/helpers/CaipHelper.ts +++ b/src/helpers/CaipHelper.ts @@ -2,7 +2,7 @@ import { appConfig } from '../config/index.js'; export const Eip155EnabledIds: Array = [ - 1, 56, 137, 10, 1101, 42161, 11155111, 97, 80002, 11155420, 2442, 421614, 122, 123, 111557560, 7560, + 1, 56, 137, 10, 1101, 42161, 11155111, 97, 80002, 11155420, 2442, 421614, 122, 123, 111557560, 7560, 84532, 8453, ]; // Types diff --git a/src/helpers/UtilityHelper.ts b/src/helpers/UtilityHelper.ts index 7966e03c78..246356be92 100644 --- a/src/helpers/UtilityHelper.ts +++ b/src/helpers/UtilityHelper.ts @@ -19,7 +19,8 @@ const UtilityHelper = { chainId === 10 || chainId === 42161 || chainId === 122 || - chainId === 7560 + chainId === 7560 || + chainId === 8453 ) { return true; } @@ -62,6 +63,8 @@ export const MaskedAliasChannels: { 123: {}, 111557560: {}, 7560: {}, + 8453: {}, + 84532: {}, }; export const findObject = (data: any, parentArray: any[], property: string): boolean => { @@ -126,6 +129,8 @@ export const networkName = { 123: 'Fuse Testnet', 111557560: 'Cyber Testnet', 7560: 'Cyber Mainnet', + 8453: 'Base Mainnet', + 84532: 'Base Sepolia', }; export const chainNameBackendStandard = { @@ -151,6 +156,8 @@ export const aliasChainIdToChainName = { 123: 'FUSE', 111557560: 'CYBERCONNECT', 7560: 'CYBERCONNECT', + 8453: 'BASE', + 84532: 'BASE', }; export const aliasChainIdsMapping = { @@ -259,6 +266,20 @@ export const NETWORK_DETAILS = { rpcUrls: ['https://cyber.alt.technology/'], blockExplorerUrls: [' https://.cyberscan.co/'], }, + BASE_TESTNET: { + chainId: utils.hexValue(84532), + chainName: 'Base Testnet', + nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 }, + rpcUrls: ['https://sepolia.base.org/'], + blockExplorerUrls: ['https://sepolia-explorer.base.org/'], + }, + BASE_MAINNET: { + chainId: utils.hexValue(8453), + chainName: 'Base Mainnet', + nativeCurrency: { name: 'ETH', symbol: 'ETH', decimals: 18 }, + rpcUrls: ['https://mainnet.base.org/'], + blockExplorerUrls: ['https://basescan.org/'], + }, }; export const CORE_CHAIN_ID: number = appConfig.coreContractChain; @@ -283,6 +304,8 @@ export const LOGO_FROM_CHAIN_ID: { 123: 'Fuse.svg', 111557560: 'Cyber.svg', 7560: 'Cyber.svg', + 8453: 'Base.svg', + 84532: 'Base.svg', }; export type getAliasResponseType = { @@ -290,27 +313,39 @@ export type getAliasResponseType = { chainId: string | null; }; +// check code and verify with sc team or be before removing +// export const getAliasFromChannelDetails = (channelDetails: Object | null | string): getAliasResponseType => { +// if (!channelDetails || channelDetails === 'unfetched') return null; + +// if (channelDetails['aliasDetails']) { +// const aliasDetails = channelDetails['aliasDetails']; +// const aliasDetail = { chainId: null, address: null }; +// appConfig.allowedNetworks.forEach((chainID) => { +// const caipChainId = convertChainIdToChainCaip(chainID); +// if (aliasDetails[caipChainId!]) { +// aliasDetail.address = aliasDetails[caipChainId!]; +// aliasDetail.chainId = chainID; +// } +// }); +// if (aliasDetail.address) return aliasDetail; +// } else if (channelDetails['address'] != null && channelDetails['address'] != '') { +// if (appConfig.allowedNetworks.includes(+channelDetails['chain_id'])) { +// return { address: channelDetails['address'], chainId: channelDetails['chain_id'] }; +// } +// } + +// return { address: null, chainId: null }; +// }; + export const getAliasFromChannelDetails = (channelDetails: Object | null | string): getAliasResponseType => { if (!channelDetails || channelDetails === 'unfetched') return null; - if (channelDetails['aliasDetails']) { - const aliasDetails = channelDetails['aliasDetails']; - const aliasDetail = { chainId: null, address: null }; - appConfig.allowedNetworks.forEach((chainID) => { - const caipChainId = convertChainIdToChainCaip(chainID); - if (aliasDetails[caipChainId!]) { - aliasDetail.address = aliasDetails[caipChainId!]; - aliasDetail.chainId = chainID; - } - }); - if (aliasDetail.address) return aliasDetail; - } else if (channelDetails['address'] != null && channelDetails['address'] != '') { - if (appConfig.allowedNetworks.includes(+channelDetails['chain_id'])) { - return { address: channelDetails['address'], chainId: channelDetails['chain_id'] }; + if (channelDetails['alias_address'] != null && channelDetails['alias_address'] != '') { + if (appConfig.allowedNetworks.includes(+channelDetails['alias_blockchain_id'])) { + return { address: channelDetails['alias_address'], chainId: channelDetails['alias_blockchain_id'] }; } } - - return { address: null, chainId: null }; + return null; }; export const CHANNEL_TYPE = { diff --git a/src/hooks/useInactiveListener.ts b/src/hooks/useInactiveListener.ts index f6f7b110cc..d351042ca2 100644 --- a/src/hooks/useInactiveListener.ts +++ b/src/hooks/useInactiveListener.ts @@ -16,9 +16,9 @@ export function useInactiveListener() { if (appConfig.coreContractChain === 42) return 'Unsupported Network, please connect to the Ethereum Kovan network or Polygon Amoy network'; else if (appConfig.coreContractChain === 11155111) - return 'Unsupported Network, please connect to the Ethereum Sepolia, Polygon Amoy, BNB testnet, Optimism Sepolia, Arbitrum Sepolia or Polygon zkEVM testnet'; + return 'Unsupported Network, please connect to the Ethereum Sepolia, Polygon Amoy, BNB testnet, Optimism Sepolia, Arbitrum Sepolia, Base Sepolia or Polygon zkEVM testnet'; else - return 'Unsupported Network, please connect to the Ethereum, Polygon, BNB, Optimism, Arbitrum or Polygon zkEVM Mainnet'; + return 'Unsupported Network, please connect to the Ethereum, Polygon, BNB, Optimism, Arbitrum, Base or Polygon zkEVM Mainnet'; }; useEffect(() => { diff --git a/src/index.tsx b/src/index.tsx index c585695c5c..8c78f04747 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -11,6 +11,7 @@ import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; // Internal Components import App from './App'; import ErrorContextProvider from './contexts/ErrorContext'; +import { RewardsContextProvider } from 'contexts/RewardsContext'; import { VideoCallContextProvider } from './contexts/VideoCallContext'; import './index.css'; import store from './redux/store'; @@ -37,14 +38,16 @@ ReactDOM.createRoot(document.getElementById('root')!).render( - - - - - - - - + + + + + + + + + + diff --git a/src/modules/channelDashboard/ChannelOwnerDashboard.tsx b/src/modules/channelDashboard/ChannelOwnerDashboard.tsx index 4a33aef36e..4295ec09a1 100644 --- a/src/modules/channelDashboard/ChannelOwnerDashboard.tsx +++ b/src/modules/channelDashboard/ChannelOwnerDashboard.tsx @@ -73,8 +73,9 @@ const ChannelOwnerDashboard = () => { useEffect(() => { if (!onCoreNetwork || !channelDetails || aliasAddrFromContract || channelDetails === 'unfetched') return; - const { address: aliasAddress, chainId: aliasChainId } = getAliasFromChannelDetails(channelDetails); - if (aliasAddress) { + const aliasDetails = getAliasFromChannelDetails(channelDetails); + if (aliasDetails) { + const { address: aliasAddress, chainId: aliasChainId } = aliasDetails; dispatch(setAliasAddressFromContract(aliasAddress)); dispatch(setAliasChainId(aliasChainId)); // dispatch(setAliasAddress(aliasAddress)); diff --git a/src/modules/dashboard/components/RewardsSection.tsx b/src/modules/dashboard/components/RewardsSection.tsx index 53d6b37d6c..e8542444f1 100644 --- a/src/modules/dashboard/components/RewardsSection.tsx +++ b/src/modules/dashboard/components/RewardsSection.tsx @@ -29,14 +29,14 @@ const RewardsSection = () => { variant="h5-semibold" display={{ ml: 'none', dp: 'block' }} > - Complete Tasks on Push. Earn Reward Points. + Complete Tasks on Push. Earn Push Points and Unlock Rewards. - Complete Tasks on Push. Earn Reward Points. + Complete Tasks on Push. Earn Push Points and Unlock Rewards. diff --git a/src/modules/pointsVault/components/PointsVaultApprovedList.tsx b/src/modules/pointsVault/components/PointsVaultApprovedList.tsx index 43a4fac72b..5fbf2fe284 100644 --- a/src/modules/pointsVault/components/PointsVaultApprovedList.tsx +++ b/src/modules/pointsVault/components/PointsVaultApprovedList.tsx @@ -31,6 +31,7 @@ const PointsVaultApprovedList = ({ query }: PointsVaultApprovedListProps) => { pageSize: 20, twitter: query.twitter, wallet: query.wallet, + activityTypeId: 'follow_push_on_twitter', }); const hasMoreData = !isFetchingNextPage && hasNextPage; diff --git a/src/modules/pointsVault/components/PointsVaultLogin.tsx b/src/modules/pointsVault/components/PointsVaultLogin.tsx index fd217d7717..ceca2254b1 100644 --- a/src/modules/pointsVault/components/PointsVaultLogin.tsx +++ b/src/modules/pointsVault/components/PointsVaultLogin.tsx @@ -110,25 +110,28 @@ const PointsVaultLogin: FC = ({ handleSetActiveView }) => gap="s3" width="100%" > - - - + + + + + + diff --git a/src/modules/pointsVault/components/PointsVaultPendingList.tsx b/src/modules/pointsVault/components/PointsVaultPendingList.tsx index 271d211292..132c0730e9 100644 --- a/src/modules/pointsVault/components/PointsVaultPendingList.tsx +++ b/src/modules/pointsVault/components/PointsVaultPendingList.tsx @@ -33,6 +33,7 @@ const PointsVaultPendingList = ({ query }: PointsVaultPendingListProps) => { pageSize: 20, twitter: query.twitter, wallet: query.wallet, + activityTypeId: 'follow_push_on_twitter', }); const hasMoreData = !isFetchingNextPage && hasNextPage; diff --git a/src/modules/pointsVault/components/PointsVaultRejectedList.tsx b/src/modules/pointsVault/components/PointsVaultRejectedList.tsx index d41a403edf..d578f13283 100644 --- a/src/modules/pointsVault/components/PointsVaultRejectedList.tsx +++ b/src/modules/pointsVault/components/PointsVaultRejectedList.tsx @@ -31,6 +31,7 @@ const PointsVaultRejectedList = ({ query }: PointsVaultRejectedListProps) => { pageSize: 20, twitter: query.twitter, wallet: query.wallet, + activityTypeId: 'follow_push_on_twitter', }); const hasMoreData = !isFetchingNextPage && hasNextPage; diff --git a/src/modules/rewards/Rewards.tsx b/src/modules/rewards/Rewards.tsx index b467ebe19b..a1fc28453d 100644 --- a/src/modules/rewards/Rewards.tsx +++ b/src/modules/rewards/Rewards.tsx @@ -1,5 +1,5 @@ // React and other libraries -import { FC, useEffect, useMemo, useState } from 'react'; +import { FC } from 'react'; // third party libraries import { useSelector } from 'react-redux'; @@ -20,14 +20,13 @@ import { Box, Text } from 'blocks'; import { ReferralSection } from './components/ReferralSection'; import { RewardsTabsContainer } from './components/RewardsTabsContainer'; import UnlockProfileWrapper, { UNLOCK_PROFILE_TYPE } from 'components/chat/unlockProfile/UnlockProfileWrapper'; +import { useRewardsContext } from 'contexts/RewardsContext'; export type RewardsProps = {}; const Rewards: FC = () => { const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); - const [hasError, setHasError] = useState<{} | null>(null); - //fetch ref from url const [searchParams] = useSearchParams(); @@ -37,34 +36,18 @@ const Rewards: FC = () => { // Used to set the discord session after discord redirects back to the Dapp. useDiscordSession(); - const userMessage = 'Error decrypting PGP private key ...swiching to Guest mode'; - - // reject unlock profile listener - const errorExists = useMemo( - () => userPushSDKInstance?.errors.some((error) => error.type === 'ERROR' && error.message === userMessage), - [userPushSDKInstance?.errors] - ); - - const isErrorPresent = userPushSDKInstance?.errors; - const { activeTab, handleSetActiveTab } = useRewardsTabs(); - const { isAuthModalVisible, status, connectUserWallet, hideAuthModal } = useRewardsAuth(); + const { isAuthModalVisible } = useRewardsContext(); + + const { connectUserWallet, hideAuthModal } = useRewardsAuth(); useCreateRewardsUser(); const heading = activeTab === 'leaderboard' ? 'Push Reward Points' : 'Introducing Push Reward Points Program'; - useEffect(() => { - if (isErrorPresent && isAuthModalVisible && status === 'error' && errorExists && activeTab === 'dashboard') { - setHasError(isErrorPresent); - hideAuthModal(); - } - }, [isErrorPresent, isAuthModalVisible, errorExists]); - // retry unlock profile const handleUnlockProfile = () => { - setHasError(null); connectUserWallet(); }; diff --git a/src/modules/rewards/components/ActivityButton.tsx b/src/modules/rewards/components/ActivityButton.tsx index 135b73aa33..85b644c7bf 100644 --- a/src/modules/rewards/components/ActivityButton.tsx +++ b/src/modules/rewards/components/ActivityButton.tsx @@ -13,6 +13,7 @@ type ActivityButtonProps = { refetchActivity: () => void; setErrorMessage: (errorMessage: string) => void; usersSingleActivity?: UsersActivity; + isLoadingActivity: boolean; }; const ActivityButton: FC = ({ @@ -22,11 +23,13 @@ const ActivityButton: FC = ({ activityType, setErrorMessage, usersSingleActivity, + isLoadingActivity, }) => { if (usersSingleActivity?.status === 'COMPLETED') { return ( ); } - return ( - - {userPushSDKInstance && userPushSDKInstance?.readmode() && isAuthModalVisible && ( - - hideAuthModal()} - description="Unlock your profile to proceed." - /> - - )} - {authButton} - - ); + return authButton; }; diff --git a/src/modules/rewards/components/DashboardSection.tsx b/src/modules/rewards/components/DashboardSection.tsx index 204bf8cc2b..f01270a5e1 100644 --- a/src/modules/rewards/components/DashboardSection.tsx +++ b/src/modules/rewards/components/DashboardSection.tsx @@ -56,6 +56,7 @@ const DashboardSection: FC = ({ onGetStarted }) => { rank={userDetails?.rank} isLoading={isLoading} isFetching={isFetching} + data={userDetails} refetch={() => refetch()} /> diff --git a/src/modules/rewards/components/DashboardSectionPoints.tsx b/src/modules/rewards/components/DashboardSectionPoints.tsx index 1c4a692bfa..c2465a4be0 100644 --- a/src/modules/rewards/components/DashboardSectionPoints.tsx +++ b/src/modules/rewards/components/DashboardSectionPoints.tsx @@ -6,6 +6,7 @@ import { useAccount } from 'hooks'; //components import { Box, HoverableSVG, Refresh, Skeleton, Text } from 'blocks'; +import { UserRewardsDetailResponse } from 'queries'; export type DashboardSectionPointsProps = { title: string; @@ -15,6 +16,7 @@ export type DashboardSectionPointsProps = { refetch?: () => void; isLoading: boolean; isFetching?: boolean; + data?: UserRewardsDetailResponse; }; const DashboardSectionPoints: FC = ({ @@ -25,6 +27,7 @@ const DashboardSectionPoints: FC = ({ refetch, isLoading, isFetching, + data, }) => { const { isWalletConnected } = useAccount(); @@ -54,7 +57,7 @@ const DashboardSectionPoints: FC = ({ {title} - {refetch && isWalletConnected && ( + {data && refetch && isWalletConnected && ( { = ({ rank, address, poin variant="bm-bold" color={{ light: 'gray-1000', dark: 'gray-100' }} > - {rank} + {rank > 0 && rank} = ({ rank, address, poin display={{ ml: 'none', dp: 'block' }} color={{ light: 'gray-1000', dark: 'gray-100' }} > - {points} + {points?.toLocaleString()} - {points} + {points?.toLocaleString()} diff --git a/src/modules/rewards/components/ReferralSection.tsx b/src/modules/rewards/components/ReferralSection.tsx index 4897c6d2e2..0cf9af2818 100644 --- a/src/modules/rewards/components/ReferralSection.tsx +++ b/src/modules/rewards/components/ReferralSection.tsx @@ -27,14 +27,12 @@ const ReferralSection: FC = ({ handleUnlockProfile }) => { const { isWalletConnected, account, connect } = useAccount(); const caip10WalletAddress = walletToCAIP10({ account }); - const { data: userDetails, isLoading: isUserLoading } = useGetUserRewardsDetails({ + const { data: userDetails, isLoading } = useGetUserRewardsDetails({ caip10WalletAddress: caip10WalletAddress, }); const { status } = useRewardsAuth(); - const isLoading = isUserLoading; - const { textRef, isCopied, copyToClipboard } = useCopy(); const handleConnectWallet = () => { @@ -78,55 +76,51 @@ const ReferralSection: FC = ({ handleUnlockProfile }) => { - - {isWalletConnected && userDetails && ( + {isWalletConnected && userDetails && ( + - - - {baseUrl}/points?ref={userDetails?.userId} - - - - - )} - - - - {isWalletConnected && status == 'error' && ( - - + {baseUrl}/points?ref={userDetails?.userId} + - )} - + + + )} + + {isWalletConnected && status == 'error' && !isLoading && ( + + + + )} {!isWalletConnected && ( diff --git a/src/modules/rewards/components/RewardsActivitiesList.tsx b/src/modules/rewards/components/RewardsActivitiesList.tsx index 46feeff774..e78a563aae 100644 --- a/src/modules/rewards/components/RewardsActivitiesList.tsx +++ b/src/modules/rewards/components/RewardsActivitiesList.tsx @@ -31,9 +31,9 @@ const RewardsActivitiesList: FC = () => { const isLoading = isLoadingActivities; // const isLoading = isLoadingUserDetails || isLoadingActivities; - // If there are activities then render them else render 5 skeletons + // If there are activities then render them else render 2 skeletons const activityList = isLoading - ? Array(3).fill(0) + ? Array(2).fill(0) : rewardActivitiesResponse?.pages.flatMap((page) => page.activities) || []; const hasMoreData = !isFetchingNextPage && hasNextPage; diff --git a/src/modules/rewards/components/RewardsActivitiesListItem.tsx b/src/modules/rewards/components/RewardsActivitiesListItem.tsx index b237119c4d..cbfea77991 100644 --- a/src/modules/rewards/components/RewardsActivitiesListItem.tsx +++ b/src/modules/rewards/components/RewardsActivitiesListItem.tsx @@ -29,10 +29,7 @@ const RewardsActivitiesListItem: FC = ({ userId, const [errorMessage, setErrorMessage] = useState(''); return ( - + = ({ userId, refetchActivity={refetchActivity} setErrorMessage={setErrorMessage} usersSingleActivity={usersSingleActivity} + isLoadingActivity={isLoading} /> diff --git a/src/modules/rewards/hooks/useRewardsAuth.tsx b/src/modules/rewards/hooks/useRewardsAuth.tsx index 5a6a05a859..78bdd60fc6 100644 --- a/src/modules/rewards/hooks/useRewardsAuth.tsx +++ b/src/modules/rewards/hooks/useRewardsAuth.tsx @@ -16,16 +16,17 @@ import { useGetUserRewardsDetails } from 'queries/hooks/rewards'; // types import { AxiosError } from 'axios'; import { UserStoreType } from 'types'; +import { useRewardsContext } from 'contexts/RewardsContext'; +import { checkUnlockProfileErrors } from 'components/chat/unlockProfile/UnlockProfile.utils'; const useRewardsAuth = () => { const { account, isWalletConnected, connect } = useAccount(); const caip10WalletAddress = walletToCAIP10({ account }); const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); - const [isAuthModalVisible, setIsAuthModalVisible] = useState(false); + const { isAuthModalVisible, setIsAuthModalVisible } = useRewardsContext(); const [isVerifyClicked, setIsVerifyClicked] = useState(false); - const [isDashClicked, setIsDashClicked] = useState(false); const [handleVerify, setHandleVerify] = useState(false); const { activeTab } = useRewardsTabs(); @@ -54,7 +55,7 @@ const useRewardsAuth = () => { // dashboard referral section unlock profile const connectUserWallet = () => { setIsAuthModalVisible(false); - setIsDashClicked(true); + unlockProfile(); }; const showAuthModal = () => { @@ -79,7 +80,8 @@ const useRewardsAuth = () => { //if verification proof is null, unlock push profile update to update userPUSHSDKInstance if (verificationProof === null || verificationProof === undefined) { - if (userPushSDKInstance && userPushSDKInstance.readmode()) { + if (isWalletConnected && userPushSDKInstance && userPushSDKInstance.readmode()) { + console.log('open modal'); setIsAuthModalVisible(true); } } @@ -89,13 +91,16 @@ const useRewardsAuth = () => { setHandleVerify(true); } setIsVerifyClicked(false); - setIsDashClicked(false); }; useEffect(() => { + if (!isWalletConnected || !userPushSDKInstance) return; + // dashboard connect wallet flow - if (status === 'error' && activeTab == 'dashboard' && !isVerifyClicked && !!userPushSDKInstance?.errors) { + if (status === 'error' && activeTab == 'dashboard' && !isVerifyClicked) { if (error instanceof AxiosError && error?.response?.data?.error === errorMessage) { + const errorExistsInUnlockProfile = checkUnlockProfileErrors(userPushSDKInstance); + if (errorExistsInUnlockProfile || !isWalletConnected) return; unlockProfile(); } } @@ -116,12 +121,11 @@ const useRewardsAuth = () => { if (isVerifyClicked && userDetails && !handleVerify) { unlockProfile(); } + }, [status, isVerifyClicked, userPushSDKInstance]); - // referral section click - if (isDashClicked && status == 'error') { - unlockProfile(); - } - }, [status, isVerifyClicked, isDashClicked]); + useEffect(() => { + if (!isWalletConnected) hideAuthModal(); + }, [isWalletConnected]); return { status, diff --git a/src/modules/rewards/hooks/useVerifyDiscord.tsx b/src/modules/rewards/hooks/useVerifyDiscord.tsx index f51dcfaf03..7f98cfe6f7 100644 --- a/src/modules/rewards/hooks/useVerifyDiscord.tsx +++ b/src/modules/rewards/hooks/useVerifyDiscord.tsx @@ -32,8 +32,8 @@ const useVerifyDiscord = ({ const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); - const [activityStatus, setActivityStatus] = useState(null); - const [verifying, setVerifying] = useState(token ? true : false); + const [discordActivityStatus, setDiscordActivityStatus] = useState(null); + const [verifyingDiscord, setVerifyingDiscord] = useState(token ? true : false); const [updatedId, setUpdatedId] = useState(null); useEffect(() => { @@ -74,7 +74,7 @@ const useVerifyDiscord = ({ const username = localStorage.getItem('username'); if (username && token) { - setVerifying(true); + setVerifyingDiscord(true); const data = { discord: username, discord_token: token, @@ -84,7 +84,7 @@ const useVerifyDiscord = ({ if (verificationProof == null || verificationProof == undefined) { if (userPushSDKInstance && userPushSDKInstance.readmode()) { - setVerifying(false); + setVerifyingDiscord(false); setErrorMessage('Please Enable Push profile'); } return; @@ -105,16 +105,15 @@ const useVerifyDiscord = ({ { onSuccess: (response) => { if (response.status === 'COMPLETED') { - setActivityStatus('Claimed'); + setDiscordActivityStatus('Claimed'); refetchActivity(); - setVerifying(false); + setVerifyingDiscord(false); setErrorMessage(''); - // localStorage.removeItem('discordVerificationTriggered'); } }, onError: (error: any) => { console.log('Error in creating activity', error); - setVerifying(false); + setVerifyingDiscord(false); if (error.name) { setErrorMessage(error.response.data.error); } @@ -125,8 +124,8 @@ const useVerifyDiscord = ({ }; return { - activityStatus, - verifying, + verifyingDiscord, + discordActivityStatus, handleDiscordVerification, }; }; diff --git a/src/modules/rewards/hooks/useVerifyTwitter.tsx b/src/modules/rewards/hooks/useVerifyTwitter.tsx index 99b7cabf2d..cb9cde7f20 100644 --- a/src/modules/rewards/hooks/useVerifyTwitter.tsx +++ b/src/modules/rewards/hooks/useVerifyTwitter.tsx @@ -21,8 +21,8 @@ export type UseTwitterVerifyParams = { }; const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: UseTwitterVerifyParams) => { - const [verifying, setVerifying] = useState(false); - const [activityStatus, setActivityStatus] = useState(null); + const [verifyingTwitter, setVerifyingTwitter] = useState(false); + const [twitterActivityStatus, setTwitterActivityStatus] = useState(null); const { userPushSDKInstance } = useSelector((state: UserStoreType) => state.user); const [updatedId, setUpdatedId] = useState(null); @@ -57,7 +57,7 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: setErrorMessage(errorMessage); const credential = TwitterAuthProvider.credentialFromError(error); console.log('Error in connecting twitter >>>', errorCode, errorMessage, credential); - setVerifying(false); + setVerifyingTwitter(false); return null; }); }; @@ -69,7 +69,7 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: const handleVerify = async (userId: string | null) => { setErrorMessage(''); - setVerifying(true); + setVerifyingTwitter(true); const userTwitterDetails = await handleConnect(); @@ -86,7 +86,7 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: if (verificationProof == null || verificationProof == undefined) { if (userPushSDKInstance && userPushSDKInstance.readmode()) { - setVerifying(false); + setVerifyingTwitter(false); setErrorMessage('Please Enable Push profile'); } return; @@ -105,19 +105,19 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: { onSuccess: (response) => { if (response.status === 'COMPLETED') { - setActivityStatus('Claimed'); + setTwitterActivityStatus('Claimed'); refetchActivity(); - setVerifying(false); + setVerifyingTwitter(false); } if (response.status === 'PENDING') { - setActivityStatus('Pending'); + setTwitterActivityStatus('Pending'); refetchActivity(); - setVerifying(false); + setVerifyingTwitter(false); } }, onError: (error: any) => { console.log('Error in creating activity', error); - setVerifying(false); + setVerifyingTwitter(false); if (error.name) { setErrorMessage(error.response.data.error); } @@ -128,8 +128,8 @@ const useVerifyTwitter = ({ activityTypeId, setErrorMessage, refetchActivity }: }; return { - verifying, - activityStatus, + verifyingTwitter, + twitterActivityStatus, handleTwitterVerification, }; }; diff --git a/src/modules/rewards/hooks/useWithAuthButton.tsx b/src/modules/rewards/hooks/useWithAuthButton.tsx index 2eedb9470d..c133b00cfd 100644 --- a/src/modules/rewards/hooks/useWithAuthButton.tsx +++ b/src/modules/rewards/hooks/useWithAuthButton.tsx @@ -16,7 +16,13 @@ import { UserStoreType } from 'types'; // components import { Button } from 'blocks'; -export const useAuthWithButton = ({ onSuccess }: { onSuccess: (userDetails: UserRewardsDetailResponse) => void }) => { +export const useAuthWithButton = ({ + onSuccess, + isLoading, +}: { + onSuccess: (userDetails: UserRewardsDetailResponse) => void; + isLoading: boolean; +}) => { const [isWalletConnectedAndProfileUnlocked, setIsWalletConnectedAndProfileUnlocked] = useState(false); const [showAuth, setShowAuth] = useState(false); // Track button click @@ -33,15 +39,10 @@ export const useAuthWithButton = ({ onSuccess }: { onSuccess: (userDetails: User const isAuthenticated = useMemo(() => { return ( - showAuth && - (isSuccess || - (userDetails && - isUserProfileUnlocked && - handleVerify && - userPushSDKInstance && - !userPushSDKInstance.readmode())) + isSuccess || + (userDetails && isUserProfileUnlocked && handleVerify && userPushSDKInstance && !userPushSDKInstance.readmode()) ); - }, [showAuth, isSuccess, userDetails, isUserProfileUnlocked, handleVerify, userPushSDKInstance]); + }, [isSuccess, userDetails, isUserProfileUnlocked, handleVerify, userPushSDKInstance]); const handleSuccess = (userDetails: UserRewardsDetailResponse) => { setIsWalletConnectedAndProfileUnlocked(true); @@ -50,7 +51,7 @@ export const useAuthWithButton = ({ onSuccess }: { onSuccess: (userDetails: User }; useEffect(() => { - if (isAuthenticated && userDetails) { + if (showAuth && isAuthenticated && userDetails) { handleSuccess(userDetails); console.log('handle Success'); } @@ -63,12 +64,13 @@ export const useAuthWithButton = ({ onSuccess }: { onSuccess: (userDetails: User variant="tertiary" size="small" onClick={handleAuthModal} + disabled={isLoading} > Verify ), - [isWalletConnected, isAuthModalVisible] + [isWalletConnected, isAuthModalVisible, isLoading] ); return { diff --git a/src/queries/hooks/pointsVault/useGetPointsVaultApprovedUsers.ts b/src/queries/hooks/pointsVault/useGetPointsVaultApprovedUsers.ts index e5d5062f97..136c0ed8e2 100644 --- a/src/queries/hooks/pointsVault/useGetPointsVaultApprovedUsers.ts +++ b/src/queries/hooks/pointsVault/useGetPointsVaultApprovedUsers.ts @@ -9,12 +9,13 @@ export const useGetPointsVaultApprovedUsers = ({ token, twitter, wallet, + activityTypeId, }: PointsVaultGetUsersPayload) => { return useInfiniteQuery({ queryKey: [pointsVaultApprovedUsers, `${twitter}-${wallet}`], initialPageParam: 1, queryFn: ({ pageParam }) => - getPointsVaultUsers({ status, page: pageParam as number, pageSize, token, twitter, wallet }), + getPointsVaultUsers({ status, page: pageParam as number, pageSize, token, twitter, wallet, activityTypeId }), getNextPageParam: ({ page, total }) => { if (page >= total) { return null; diff --git a/src/queries/hooks/pointsVault/useGetPointsVaultPendingUsers.ts b/src/queries/hooks/pointsVault/useGetPointsVaultPendingUsers.ts index 34a5c74b19..ce59c4e855 100644 --- a/src/queries/hooks/pointsVault/useGetPointsVaultPendingUsers.ts +++ b/src/queries/hooks/pointsVault/useGetPointsVaultPendingUsers.ts @@ -9,12 +9,13 @@ export const useGetPointsVaultPendingUsers = ({ token, twitter, wallet, + activityTypeId, }: PointsVaultGetUsersPayload) => { return useInfiniteQuery({ queryKey: [pointsVaultPendingUsers, `${twitter}-${wallet}`], initialPageParam: 1, queryFn: ({ pageParam }) => - getPointsVaultUsers({ status, page: pageParam as number, pageSize, token, twitter, wallet }), + getPointsVaultUsers({ status, page: pageParam as number, pageSize, token, twitter, wallet, activityTypeId }), getNextPageParam: ({ page, total }) => { if (page >= total) { return null; diff --git a/src/queries/hooks/pointsVault/useGetPointsVaultRejectedUsers.ts b/src/queries/hooks/pointsVault/useGetPointsVaultRejectedUsers.ts index e66f15f421..f69a9f95f7 100644 --- a/src/queries/hooks/pointsVault/useGetPointsVaultRejectedUsers.ts +++ b/src/queries/hooks/pointsVault/useGetPointsVaultRejectedUsers.ts @@ -9,12 +9,13 @@ export const useGetPointsVaultRejectedUsers = ({ token, twitter, wallet, + activityTypeId, }: PointsVaultGetUsersPayload) => { return useInfiniteQuery({ queryKey: [pointsVaultRejectedUsers, `${twitter}-${wallet}`], initialPageParam: 1, queryFn: ({ pageParam }) => - getPointsVaultUsers({ status, page: pageParam as number, pageSize, token, twitter, wallet }), + getPointsVaultUsers({ status, page: pageParam as number, pageSize, token, twitter, wallet, activityTypeId }), getNextPageParam: ({ page, total }) => { if (page >= total) { return null; diff --git a/src/queries/services/pointsVault/getPointsVaultUsers.ts b/src/queries/services/pointsVault/getPointsVaultUsers.ts index 5c3d599dec..9975a5ce2b 100644 --- a/src/queries/services/pointsVault/getPointsVaultUsers.ts +++ b/src/queries/services/pointsVault/getPointsVaultUsers.ts @@ -3,7 +3,15 @@ import { getRewardsBaseURL } from 'queries/baseURL'; import { getPVUsersModelCreator } from 'queries/models'; import { PointsVaultGetUsersPayload } from 'queries/types'; -export const getPointsVaultUsers = ({ page, status, pageSize, token, wallet, twitter }: PointsVaultGetUsersPayload) => +export const getPointsVaultUsers = ({ + page, + status, + pageSize, + token, + wallet, + twitter, + activityTypeId, +}: PointsVaultGetUsersPayload) => axios({ method: 'GET', url: `${getRewardsBaseURL()}/activities/list`, @@ -13,6 +21,7 @@ export const getPointsVaultUsers = ({ page, status, pageSize, token, wallet, twi pageSize, wallet, twitter, + activityTypeId, }, headers: { 'Content-Type': 'application/json', diff --git a/src/queries/types/pointsVault.ts b/src/queries/types/pointsVault.ts index f1eb2085b7..0a2fb9985e 100644 --- a/src/queries/types/pointsVault.ts +++ b/src/queries/types/pointsVault.ts @@ -1,3 +1,5 @@ +import { ActvityType } from './rewards'; + export type PointsVaultStatus = 'COMPLETED' | 'PENDING' | 'REJECTED'; export type PointsVaultGetUsersPayload = { @@ -7,6 +9,7 @@ export type PointsVaultGetUsersPayload = { token: string; twitter?: string; wallet?: string; + activityTypeId?: ActvityType; }; export type PointsVaultActivity = { diff --git a/src/redux/slices/adminSlice.js b/src/redux/slices/adminSlice.js index cab5233622..2ca9fb5f43 100644 --- a/src/redux/slices/adminSlice.js +++ b/src/redux/slices/adminSlice.js @@ -4,10 +4,10 @@ */ // External Packages -import { createSlice } from "@reduxjs/toolkit"; +import { createSlice } from '@reduxjs/toolkit'; const initialState = { - channelDetails: "unfetched", + channelDetails: 'unfetched', coreChannelAdmin: null, canVerify: false, aliasDetails: { @@ -15,14 +15,14 @@ const initialState = { aliasAddrFromContract: null, aliasEthAddr: null, isAliasVerified: null, - aliasChainId: null + aliasChainId: null, }, delegatees: null, canVerify: false, }; export const contractSlice = createSlice({ - name: "admin", + name: 'admin', initialState, reducers: { resetAdminSlice: () => initialState, @@ -39,19 +39,19 @@ export const contractSlice = createSlice({ state.delegatees = action.payload; }, setAliasAddress: (state, action) => { - state.aliasDetails["aliasAddr"] = action.payload; + state.aliasDetails['aliasAddr'] = action.payload; }, setAliasAddressFromContract: (state, action) => { state.aliasDetails['aliasAddrFromContract'] = action.payload; }, setAliasEthAddress: (state, action) => { - state.aliasDetails["aliasEthAddr"] = action.payload; + state.aliasDetails['aliasEthAddr'] = action.payload; }, setAliasChainId: (state, action) => { - state.aliasDetails["aliasChainId"] = action.payload; + state.aliasDetails['aliasChainId'] = action.payload; }, setAliasVerified: (state, action) => { - state.aliasDetails["isAliasVerified"] = action.payload; + state.aliasDetails['isAliasVerified'] = action.payload; }, }, }); @@ -66,7 +66,7 @@ export const { setAliasAddress, setAliasAddressFromContract, setAliasEthAddress, - setAliasChainId + setAliasChainId, } = contractSlice.actions; export default contractSlice.reducer; diff --git a/src/services/alias/getAliasDetails.ts b/src/services/alias/getAliasDetails.ts index e0f1bc8836..51c2132f5c 100644 --- a/src/services/alias/getAliasDetails.ts +++ b/src/services/alias/getAliasDetails.ts @@ -9,6 +9,7 @@ type Props = { }; export const getAliasDetails = async ({ account, chainId }: Props) => { + console.log(account, aliasChainIdToChainName[chainId], appConfig.appEnv); try { const response = await PushAPI.alias.getAliasInfo({ alias: account, diff --git a/src/structure/Header.tsx b/src/structure/Header.tsx index f4158dc33b..dffbfbf20a 100644 --- a/src/structure/Header.tsx +++ b/src/structure/Header.tsx @@ -90,7 +90,8 @@ const RewardsHeaderLink = ({ caip10WalletAddress }: { caip10WalletAddress: strin > =16.8" - checksum: 10/c6a23a76cf914902592ea1e4ddf0647b72f45c79d72b663c0aa275407cfadb9ecce0d6bbba4e43150839791a9c70fd50013dfa2596fcea5f6d58f44baa60dccf + checksum: 10/a67010dc454f794e6acd87938029936ee67bed7bbf26a1e774a941aa544dbb32d73053064ce91495afc871f2fe127086a997c1d02f442df6026769431f2493dd languageName: node linkType: hard -"@web3-onboard/walletconnect@npm:2.5.5": - version: 2.5.5 - resolution: "@web3-onboard/walletconnect@npm:2.5.5" - dependencies: - "@walletconnect/ethereum-provider": "npm:^2.12.2" - "@web3-onboard/common": "npm:^2.3.3" - joi: "npm:17.9.1" - rxjs: "npm:^7.5.2" - checksum: 10/bd19304d9b1b8e049c939288212dc338ae9aa857348ef66dc224eba73bbc5ec8f21aacc0b7d4ef050e6520946b2e0142bb45bd6d89a16220935db00918d239fe - languageName: node - linkType: hard - -"@web3-onboard/walletconnect@npm:^2.4.6": +"@web3-onboard/walletconnect@npm:2.6.1, @web3-onboard/walletconnect@npm:^2.4.6": version: 2.6.1 resolution: "@web3-onboard/walletconnect@npm:2.6.1" dependencies: @@ -8818,11 +8385,11 @@ __metadata: linkType: hard "acorn@npm:^8.11.3, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.12.0 - resolution: "acorn@npm:8.12.0" + version: 8.12.1 + resolution: "acorn@npm:8.12.1" bin: acorn: bin/acorn - checksum: 10/550cc5033184eb98f7fbe2e9ddadd0f47f065734cc682f25db7a244f52314eb816801b64dec7174effd978045bd1754892731a90b1102b0ede9d17a15cfde138 + checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 languageName: node linkType: hard @@ -8888,14 +8455,14 @@ __metadata: linkType: hard "ajv@npm:^8.0.0, ajv@npm:^8.11.0": - version: 8.16.0 - resolution: "ajv@npm:8.16.0" + version: 8.17.1 + resolution: "ajv@npm:8.17.1" dependencies: fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.4.1" - checksum: 10/9b4b380efaf8be2639736d535662bd142a6972b43075b404380165c37ab6ceb72f01c7c987536747ff3e9e21eb5cd2e2a194f1e0fa8355364ea6204b1262fcd1 + checksum: 10/ee3c62162c953e91986c838f004132b6a253d700f1e51253b99791e2dbfdb39161bc950ebdc2f156f8568035bb5ed8be7bd78289cd9ecbf3381fe8f5b82e3f33 languageName: node linkType: hard @@ -9319,11 +8886,11 @@ __metadata: linkType: hard "base-x@npm:^3.0.2, base-x@npm:^3.0.8": - version: 3.0.9 - resolution: "base-x@npm:3.0.9" + version: 3.0.10 + resolution: "base-x@npm:3.0.10" dependencies: safe-buffer: "npm:^5.0.1" - checksum: 10/957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e8 + checksum: 10/52307739559e81d9980889de2359cb4f816cc0eb9a463028fa3ab239ab913d9044a1b47b4520f98e68453df32a457b8ba58b8d0ee7e757fc3fb971f3fa7a1482 languageName: node linkType: hard @@ -9746,13 +9313,13 @@ __metadata: version: 4.23.1 resolution: "browserslist@npm:4.23.1" dependencies: - caniuse-lite: "npm:^1.0.30001629" - electron-to-chromium: "npm:^1.4.796" + caniuse-lite: "npm:^1.0.30001640" + electron-to-chromium: "npm:^1.4.820" node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.16" + update-browserslist-db: "npm:^1.1.0" bin: browserslist: cli.js - checksum: 10/91da59f70a8e01ece97133670f9857d6d7e96be78e1b7ffa54b869f97d01d01c237612471b595cee41c1ab212e26e536ce0b6716ad1d6c4368a40c222698cac1 + checksum: 10/326a98b1c39bcc9a99b197f15790dc28e122b1aead3257c837421899377ac96239123f26868698085b3d9be916d72540602738e1f857e86a387e810af3fda6e5 languageName: node linkType: hard @@ -9906,8 +9473,8 @@ __metadata: linkType: hard "cacache@npm:^18.0.0": - version: 18.0.3 - resolution: "cacache@npm:18.0.3" + version: 18.0.4 + resolution: "cacache@npm:18.0.4" dependencies: "@npmcli/fs": "npm:^3.1.0" fs-minipass: "npm:^3.0.0" @@ -9921,7 +9488,7 @@ __metadata: ssri: "npm:^10.0.0" tar: "npm:^6.1.11" unique-filename: "npm:^3.0.0" - checksum: 10/d4c161f071524bb636334b8cf94780c014e29c180a886b8184da8f2f44d2aca88d5664797c661e9f74bdbd34697c2f231ed7c24c256cecbb0a0563ad1ada2219 + checksum: 10/ca2f7b2d3003f84d362da9580b5561058ccaecd46cba661cbcff0375c90734b610520d46b472a339fd032d91597ad6ed12dde8af81571197f3c9772b5d35b104 languageName: node linkType: hard @@ -10019,10 +9586,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001154, caniuse-lite@npm:^1.0.30001629": - version: 1.0.30001638 - resolution: "caniuse-lite@npm:1.0.30001638" - checksum: 10/f30c80a5a33e659c990909046d5299af1584441059785460b012d10a58f0885da25fde08ab655ed0cf76b2695d0b3a32c41875bb9b7a730b34f992ec2512d430 +"caniuse-lite@npm:^1.0.30001154, caniuse-lite@npm:^1.0.30001587": + version: 1.0.30001621 + resolution: "caniuse-lite@npm:1.0.30001621" + checksum: 10/238187b8565edd98b041829a4157ff23406e8b573a8f5a7f7d75fd6bd46c508e4d1a07eb4a0086cfa1bce2f45fcd3b08ea7ffc36584ef2b1d38f8215b7301853 languageName: node linkType: hard @@ -10057,11 +9624,20 @@ __metadata: linkType: hard "cborg@npm:^4.0.0": - version: 4.2.2 - resolution: "cborg@npm:4.2.2" + version: 4.2.3 + resolution: "cborg@npm:4.2.3" bin: cborg: lib/bin.js - checksum: 10/e657dea3393120f508600e96fbb7d490a20f74ee20e17ea7d2ca64a568d828f704a77b7c77a16eed3ccf9c89ed2662edde7f2c2e27ab2d46ad0ea9bc2579ea02 + checksum: 10/4ee9ee953329c5688e8f72333e05a2329548cfd2d8e684d7c7546e334d8edf5ca3267da6b8a70d420f4d8d8da5327b02293a19170299521cd7d3c7caf41efaed + languageName: node + linkType: hard + +"centra@npm:^2.7.0": + version: 2.7.0 + resolution: "centra@npm:2.7.0" + dependencies: + follow-redirects: "npm:^1.15.6" + checksum: 10/59ec76d9ba7086b76e9594129b9843856fe7293400b89cb8b133f444a62ca5d4c536df0d4722374b0c16d86dd4e0baba1fc9722640b7d3b532865bebdec2b1a2 languageName: node linkType: hard @@ -11459,9 +11035,9 @@ __metadata: linkType: hard "dompurify@npm:^3.0.2": - version: 3.1.5 - resolution: "dompurify@npm:3.1.5" - checksum: 10/4ea935df48b49a0a76c66b6eee8522ca12783f2643119482b8329867f1e8adb34ff1d2dd56973927be9de5f01079948556907f22e882b06fa7b0c0ba281bf14a + version: 3.1.6 + resolution: "dompurify@npm:3.1.6" + checksum: 10/036844bc9b717b172ba27f5863b56f950289a05d8eebfb702d6953bbf80bd021e480ce4217bd084567186f2d0ada13358ce5556963492cfe402d774e8667f120 languageName: node linkType: hard @@ -11609,10 +11185,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.4.796": - version: 1.4.814 - resolution: "electron-to-chromium@npm:1.4.814" - checksum: 10/cd411bd8d79333daf8695f495b30e0092489a79f5307344e4ac75d48eca2b3fc488f4f4acac8e2651fd2fe8b857e52b0c2f87d352bbf426ce7670766b88b4a27 +"electron-to-chromium@npm:^1.3.585, electron-to-chromium@npm:^1.4.668": + version: 1.4.782 + resolution: "electron-to-chromium@npm:1.4.782" + checksum: 10/d5550876e4ee04df75e3bf6e0809de2b8d6129dd1ef3a8508020c0620bc814c496b5852b3a99cfe1bb79662c8dd5182ae18844af089414e6e92790d5deeea864 languageName: node linkType: hard @@ -11683,35 +11259,7 @@ __metadata: languageName: node linkType: hard -"embla-carousel-react@npm:^8.1.6": - version: 8.1.6 - resolution: "embla-carousel-react@npm:8.1.6" - dependencies: - embla-carousel: "npm:8.1.6" - embla-carousel-reactive-utils: "npm:8.1.6" - peerDependencies: - react: ^16.8.0 || ^17.0.1 || ^18.0.0 - checksum: 10/a8c724c396f8f26d190943c778fd1a29706bd597a0f85b4d8133c5e25e6e651fb30dbc3be0a71b3d58b9698904ae1043052cbea0c4aa23f9a63f3d1205e4a128 - languageName: node - linkType: hard - -"embla-carousel-reactive-utils@npm:8.1.6": - version: 8.1.6 - resolution: "embla-carousel-reactive-utils@npm:8.1.6" - peerDependencies: - embla-carousel: 8.1.6 - checksum: 10/1524006c5adb3115b7ad5b70c3a857a4a5110c283eb1baaf92db16873736b1543737901b54e7210014f9cfb6d85a9a6771fc702c90192f13781effed7071bc26 - languageName: node - linkType: hard - -"embla-carousel@npm:8.1.6": - version: 8.1.6 - resolution: "embla-carousel@npm:8.1.6" - checksum: 10/739a112c45b218755d747487b07e182ab137b9e2f262600cf6f0296e4a83a67b442da8fc0b9672219086ff3a0671aa3cdf0a171ebb0d620f2c9264ceaf5752d7 - languageName: node - linkType: hard - -"emoji-picker-react@npm:4.9.3": +"emoji-picker-react@npm:4.9.3, emoji-picker-react@npm:^4.4.9": version: 4.9.3 resolution: "emoji-picker-react@npm:4.9.3" dependencies: @@ -11805,15 +11353,15 @@ __metadata: linkType: hard "engine.io-parser@npm:~5.2.1": - version: 5.2.2 - resolution: "engine.io-parser@npm:5.2.2" - checksum: 10/135b1278547bde501412ac462e93b3b4f6a2fecc30a2b843bb9408b96301e8068bb2496c32d124a3d2544eb0aec8b8eddcb4ef0d0d0b84b7d642b1ffde1b2dcf + version: 5.2.3 + resolution: "engine.io-parser@npm:5.2.3" + checksum: 10/eb0023fff5766e7ae9d59e52d92df53fea06d472cfd7b52e5d2c36b4c1dbf78cab5fde1052bcb3d4bb85bdb5aee10ae85d8a1c6c04676dac0c6cdf16bcba6380 languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.0": - version: 5.17.0 - resolution: "enhanced-resolve@npm:5.17.0" +"enhanced-resolve@npm:^5.16.0": + version: 5.16.1 + resolution: "enhanced-resolve@npm:5.16.1" dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" @@ -12233,11 +11781,11 @@ __metadata: linkType: hard "eslint-plugin-react-refresh@npm:^0.4.6": - version: 0.4.7 - resolution: "eslint-plugin-react-refresh@npm:0.4.7" + version: 0.4.8 + resolution: "eslint-plugin-react-refresh@npm:0.4.8" peerDependencies: eslint: ">=7" - checksum: 10/acbbe24e40b2b6fe96656e9407e275fdda6db031814674117e7a65d49a7a713f05b0d79dc6426d927b7622ce310a261cff385821c80b2e97089068dcd30bda52 + checksum: 10/f502cd803a43dac83db43a924defe543a3ed57b545a4b5a9fc74c578c05903ffcb4f2988848b8d02672cf9443e390ef831ba5a1577f64617b68b3746229172b4 languageName: node linkType: hard @@ -12347,11 +11895,11 @@ __metadata: linkType: hard "esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" + version: 1.6.0 + resolution: "esquery@npm:1.6.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10/e65fcdfc1e0ff5effbf50fb4f31ea20143ae5df92bb2e4953653d8d40aa4bc148e0d06117a592ce4ea53eeab1dafdfded7ea7e22a5be87e82d73757329a1b01d + checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a languageName: node linkType: hard @@ -12495,14 +12043,14 @@ __metadata: linkType: hard "ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2": - version: 2.2.0 - resolution: "ethereum-cryptography@npm:2.2.0" + version: 2.2.1 + resolution: "ethereum-cryptography@npm:2.2.1" dependencies: - "@noble/curves": "npm:1.4.0" + "@noble/curves": "npm:1.4.2" "@noble/hashes": "npm:1.4.0" "@scure/bip32": "npm:1.4.0" "@scure/bip39": "npm:1.3.0" - checksum: 10/cca045cd0704e350042a97f3f3f5501d25a2c56fe4b6e129a2ae8a2ff84f773bcca8af90f42429f7490a803fd9b145b2cf71ed92cf3745d9727aec0e0c3e0f83 + checksum: 10/ab123bbfe843500ac2d645ce9edc4bc814962ffb598db6bf8bf01fbecac656e6c81ff4cf2472f1734844bbcbad2bf658d8b699cb7248d768e0f06ae13ecf43b8 languageName: node linkType: hard @@ -12608,44 +12156,6 @@ __metadata: languageName: node linkType: hard -"ethers@npm:5.5.3": - version: 5.5.3 - resolution: "ethers@npm:5.5.3" - dependencies: - "@ethersproject/abi": "npm:5.5.0" - "@ethersproject/abstract-provider": "npm:5.5.1" - "@ethersproject/abstract-signer": "npm:5.5.0" - "@ethersproject/address": "npm:5.5.0" - "@ethersproject/base64": "npm:5.5.0" - "@ethersproject/basex": "npm:5.5.0" - "@ethersproject/bignumber": "npm:5.5.0" - "@ethersproject/bytes": "npm:5.5.0" - "@ethersproject/constants": "npm:5.5.0" - "@ethersproject/contracts": "npm:5.5.0" - "@ethersproject/hash": "npm:5.5.0" - "@ethersproject/hdnode": "npm:5.5.0" - "@ethersproject/json-wallets": "npm:5.5.0" - "@ethersproject/keccak256": "npm:5.5.0" - "@ethersproject/logger": "npm:5.5.0" - "@ethersproject/networks": "npm:5.5.2" - "@ethersproject/pbkdf2": "npm:5.5.0" - "@ethersproject/properties": "npm:5.5.0" - "@ethersproject/providers": "npm:5.5.2" - "@ethersproject/random": "npm:5.5.1" - "@ethersproject/rlp": "npm:5.5.0" - "@ethersproject/sha2": "npm:5.5.0" - "@ethersproject/signing-key": "npm:5.5.0" - "@ethersproject/solidity": "npm:5.5.0" - "@ethersproject/strings": "npm:5.5.0" - "@ethersproject/transactions": "npm:5.5.0" - "@ethersproject/units": "npm:5.5.0" - "@ethersproject/wallet": "npm:5.5.0" - "@ethersproject/web": "npm:5.5.1" - "@ethersproject/wordlists": "npm:5.5.0" - checksum: 10/75412f0dd60f0a21c2e8ade37781b6f67a84377d0b5452cf4c4d73596e6c2626966f666d491e53c55e124621ce3b72edf0001c683f2ef9ef08da79b5a3a02ace - languageName: node - linkType: hard - "ethers@npm:^5.3.1, ethers@npm:^5.6.8, ethers@npm:^5.7.0, ethers@npm:^5.7.2": version: 5.7.2 resolution: "ethers@npm:5.7.2" @@ -12924,13 +12434,6 @@ __metadata: languageName: node linkType: hard -"fast-loops@npm:^1.1.3": - version: 1.1.3 - resolution: "fast-loops@npm:1.1.3" - checksum: 10/1bf9f102d8ed48a8c8304e2b27fd32afa65d370498db9b49d5762696ac4aa8c55593d505c142c2b7e25ca79f45207c4b25f778afd80f35df98cb2caaaf9609b7 - languageName: node - linkType: hard - "fast-redact@npm:^3.0.0": version: 3.5.0 resolution: "fast-redact@npm:3.5.0" @@ -12945,6 +12448,13 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 10/e8ee4712270de0d29eb0fbf41ffad0ac80952e8797be760e8bb62c4707f08f50a86fe2d7829681ca133c07d6eb4b4a75389a5fc36674c5b254a3ac0891a68fc7 + languageName: node + linkType: hard + "fastest-stable-stringify@npm:^2.0.2": version: 2.0.2 resolution: "fastest-stable-stringify@npm:2.0.2" @@ -13094,37 +12604,37 @@ __metadata: linkType: hard "firebase@npm:^10.12.2": - version: 10.12.2 - resolution: "firebase@npm:10.12.2" - dependencies: - "@firebase/analytics": "npm:0.10.4" - "@firebase/analytics-compat": "npm:0.2.10" - "@firebase/app": "npm:0.10.5" - "@firebase/app-check": "npm:0.8.4" - "@firebase/app-check-compat": "npm:0.3.11" - "@firebase/app-compat": "npm:0.2.35" + version: 10.12.3 + resolution: "firebase@npm:10.12.3" + dependencies: + "@firebase/analytics": "npm:0.10.5" + "@firebase/analytics-compat": "npm:0.2.11" + "@firebase/app": "npm:0.10.6" + "@firebase/app-check": "npm:0.8.5" + "@firebase/app-check-compat": "npm:0.3.12" + "@firebase/app-compat": "npm:0.2.36" "@firebase/app-types": "npm:0.9.2" - "@firebase/auth": "npm:1.7.4" - "@firebase/auth-compat": "npm:0.5.9" - "@firebase/database": "npm:1.0.5" - "@firebase/database-compat": "npm:1.0.5" - "@firebase/firestore": "npm:4.6.3" - "@firebase/firestore-compat": "npm:0.3.32" - "@firebase/functions": "npm:0.11.5" - "@firebase/functions-compat": "npm:0.3.11" - "@firebase/installations": "npm:0.6.7" - "@firebase/installations-compat": "npm:0.2.7" - "@firebase/messaging": "npm:0.12.9" - "@firebase/messaging-compat": "npm:0.2.9" - "@firebase/performance": "npm:0.6.7" - "@firebase/performance-compat": "npm:0.2.7" - "@firebase/remote-config": "npm:0.4.7" - "@firebase/remote-config-compat": "npm:0.2.7" - "@firebase/storage": "npm:0.12.5" - "@firebase/storage-compat": "npm:0.3.8" - "@firebase/util": "npm:1.9.6" - "@firebase/vertexai-preview": "npm:0.0.2" - checksum: 10/427d404993a86832ee528a9bb68c12c1f1e81b07b6d61fd721351e64c8ba3025a91d4464361cff9160ca0ef994b2f9d409ecbe0f685430fbe4ce2606822e96d6 + "@firebase/auth": "npm:1.7.5" + "@firebase/auth-compat": "npm:0.5.10" + "@firebase/database": "npm:1.0.6" + "@firebase/database-compat": "npm:1.0.6" + "@firebase/firestore": "npm:4.6.4" + "@firebase/firestore-compat": "npm:0.3.33" + "@firebase/functions": "npm:0.11.6" + "@firebase/functions-compat": "npm:0.3.12" + "@firebase/installations": "npm:0.6.8" + "@firebase/installations-compat": "npm:0.2.8" + "@firebase/messaging": "npm:0.12.10" + "@firebase/messaging-compat": "npm:0.2.10" + "@firebase/performance": "npm:0.6.8" + "@firebase/performance-compat": "npm:0.2.8" + "@firebase/remote-config": "npm:0.4.8" + "@firebase/remote-config-compat": "npm:0.2.8" + "@firebase/storage": "npm:0.12.6" + "@firebase/storage-compat": "npm:0.3.9" + "@firebase/util": "npm:1.9.7" + "@firebase/vertexai-preview": "npm:0.0.3" + checksum: 10/9fd3d72b9c9c0dc9b4fbce1902b06457c847afb426931c3432e9d10fafcdc80c172d86307e5a75864608fbb6e4af13f727b2222a4b9fcb0244fe5b054f1e907d languageName: node linkType: hard @@ -13135,10 +12645,10 @@ __metadata: languageName: node linkType: hard -"flairup@npm:0.0.39": - version: 0.0.39 - resolution: "flairup@npm:0.0.39" - checksum: 10/8b72671b31529db4d1aaa218efbc91795cd3049bf4c0d095737e8841aad61784c1a5f1f5f4c07f12e98a2bc6ef266d5f388662223087adac16df82fc0ff411ec +"flairup@npm:1.0.0": + version: 1.0.0 + resolution: "flairup@npm:1.0.0" + checksum: 10/9125711da6effe146fa748fda4c293027a142bde7cc9264d6e515a5845c79181d6fdb63bb1254a5c364006b333a1083d06ac6ead0c2e3c28024c977363e19571 languageName: node linkType: hard @@ -13160,7 +12670,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9": +"follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.6": version: 1.15.6 resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: @@ -13521,8 +13031,8 @@ __metadata: linkType: hard "glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.4.2 - resolution: "glob@npm:10.4.2" + version: 10.4.5 + resolution: "glob@npm:10.4.5" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^3.1.2" @@ -13532,7 +13042,7 @@ __metadata: path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs - checksum: 10/e412776b5952a818eba790c830bea161c9a56813fd767d8c4c49f855603b1fb962b3e73f1f627a47298a57d2992b9f0f2fe15cf93e74ecaaa63fb45d63fdd090 + checksum: 10/698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac languageName: node linkType: hard @@ -13922,9 +13432,9 @@ __metadata: linkType: hard "hls.js@npm:^1.4.12": - version: 1.5.11 - resolution: "hls.js@npm:1.5.11" - checksum: 10/eb73da08148953b4da4c2e14eb40bbdd8f9184f4cba6463cd46af7ec5a204c2f4b47d9d1d2e5dad3a5dd56e50c646d6b6a507fdb9f9e90eedf8f42d75ed375d9 + version: 1.5.13 + resolution: "hls.js@npm:1.5.13" + checksum: 10/ccb709c07322d81e8be7cde428ca83543a8f61bdaad2e825018013e25c710d9e7cf0570aad1547c95ad635019869d1a2d680c743e2094f7da4a97b44201589e2 languageName: node linkType: hard @@ -14262,12 +13772,11 @@ __metadata: linkType: hard "inline-style-prefixer@npm:^7.0.0": - version: 7.0.0 - resolution: "inline-style-prefixer@npm:7.0.0" + version: 7.0.1 + resolution: "inline-style-prefixer@npm:7.0.1" dependencies: css-in-js-utils: "npm:^3.1.0" - fast-loops: "npm:^1.1.3" - checksum: 10/38486ce52ffa81649d845ffc4dda421ac24ea02709b8608d61f82cf186bc57749a73e562c2b7236c3946705a0c6e9d5e3872c59280972df73b0a1161fbf51eba + checksum: 10/a430c962693f32a36bcec0124c9798bcf3725bb90468d493108c0242446a9cc92ff1967bdf99b6ce5331e7a9b75e6836bc9ba1b3d4756876b8ef48036acb2509 languageName: node linkType: hard @@ -15328,11 +14837,11 @@ __metadata: linkType: hard "jiti@npm:^1.21.0": - version: 1.21.6 - resolution: "jiti@npm:1.21.6" + version: 1.21.0 + resolution: "jiti@npm:1.21.0" bin: jiti: bin/jiti.js - checksum: 10/289b124cea411c130a14ffe88e3d38376ab44b6695616dfa0a1f32176a8f20ec90cdd6d2b9d81450fc6467cfa4d865f04f49b98452bff0f812bc400fd0ae78d6 + checksum: 10/005a0239e50381b5c9919f59dbab86128367bd64872f3376dbbde54b6523f41bd134bf22909e2a509e38fd87e1c22125ca255b9b6b53e7df0fedd23f737334cc languageName: node linkType: hard @@ -16009,18 +15518,18 @@ __metadata: linkType: hard "load-bmfont@npm:^1.3.1": - version: 1.4.1 - resolution: "load-bmfont@npm:1.4.1" + version: 1.4.2 + resolution: "load-bmfont@npm:1.4.2" dependencies: buffer-equal: "npm:0.0.1" mime: "npm:^1.3.4" parse-bmfont-ascii: "npm:^1.0.3" parse-bmfont-binary: "npm:^1.0.5" parse-bmfont-xml: "npm:^1.1.4" - phin: "npm:^2.9.1" + phin: "npm:^3.7.1" xhr: "npm:^2.0.1" xtend: "npm:^4.0.0" - checksum: 10/15d067360875df5a3e5f331044706c1c44ad24f7233306d3ca8e4728796d639c646e2997839e31051281813a0af50fc263cbe25f683dd6fecceea8ece2701a78 + checksum: 10/73d80e9d5bd3ba12ba1174a33a6dfdc90a635106bb9a040b375060f24a9e15f757f06f3adfbcaa1f6effd93e380ef8c51f2b946dc6d976037f7119f0dd5266bf languageName: node linkType: hard @@ -16295,9 +15804,9 @@ __metadata: linkType: hard "lru-cache@npm:^10.0.1, lru-cache@npm:^10.1.0, lru-cache@npm:^10.2.0": - version: 10.3.0 - resolution: "lru-cache@npm:10.3.0" - checksum: 10/37e921aedbd1f4062475d9fa6760391fa7adfaaee3a5a6cbedd1d6d0b46705c14012312c1edb2b13f119eae6584a48f73c158d118828d42475b44a7abf7d05ab + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a languageName: node linkType: hard @@ -16625,12 +16134,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:*, minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" +"minimatch@npm:*": + version: 10.0.1 + resolution: "minimatch@npm:10.0.1" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + checksum: 10/082e7ccbc090d5f8c4e4e029255d5a1d1e3af37bda837da2b8b0085b1503a1210c91ac90d9ebfe741d8a5f286ece820a1abb4f61dc1f82ce602a055d461d93f3 languageName: node linkType: hard @@ -16643,6 +16152,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + languageName: node + linkType: hard + "minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -16791,7 +16309,7 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.6.1, mlly@npm:^1.7.0": +"mlly@npm:^1.6.1, mlly@npm:^1.7.1": version: 1.7.1 resolution: "mlly@npm:1.7.1" dependencies: @@ -17017,9 +16535,9 @@ __metadata: linkType: hard "multiformats@npm:^13.0.0, multiformats@npm:^13.1.0": - version: 13.1.1 - resolution: "multiformats@npm:13.1.1" - checksum: 10/5d523145662596c913f292ad54c8fccffe3ff6efc3eddcca3801d2bb64e52702e026b81f9d4f509a8633f1709686c1ef0ebdadbfcc1d540cdbe5f35a46df7cff + version: 13.1.3 + resolution: "multiformats@npm:13.1.3" + checksum: 10/5568213caf73a9cd189afae61b0d8ca4d3175507ee50fa64a8931b7617f4ea9bf076da6fdbe78131151e5d9d48207dcd4ce56863a93d39b3f56d158e2d856daa languageName: node linkType: hard @@ -17320,11 +16838,11 @@ __metadata: linkType: hard "node-addon-api@npm:^7.0.0": - version: 7.1.0 - resolution: "node-addon-api@npm:7.1.0" + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" dependencies: node-gyp: "npm:latest" - checksum: 10/e20487e98c76660f4957e81e85c45dfb667140d9be0bf872a3b3dfd86b4ea19c0275939116c90efebc0da7fc6af2c7b7b060512ceebe6417b1ed145a26910453 + checksum: 10/ee1e1ed6284a2f8cd1d59ac6175ecbabf8978dcf570345e9a8095a9d0a2b9ced591074ae77f9009287b00c402352b38aa9322a34f2199cdc9f567b842a636b94 languageName: node linkType: hard @@ -17395,8 +16913,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.1.0 - resolution: "node-gyp@npm:10.1.0" + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -17404,13 +16922,13 @@ __metadata: graceful-fs: "npm:^4.2.6" make-fetch-happen: "npm:^13.0.0" nopt: "npm:^7.0.0" - proc-log: "npm:^3.0.0" + proc-log: "npm:^4.1.0" semver: "npm:^7.3.5" - tar: "npm:^6.1.2" + tar: "npm:^6.2.1" which: "npm:^4.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/89e105e495e66cd4568af3cf79cdeb67d670eb069e33163c7781d3366470a30367c9bd8dea59e46db16370020139e5bf78b1fbc03284cb571754dfaa59744db5 + checksum: 10/41773093b1275751dec942b985982fd4e7a69b88cae719b868babcef3880ee6168aaec8dcaa8cd0b9fa7c84873e36cc549c6cac6a124ee65ba4ce1f1cc108cfe languageName: node linkType: hard @@ -18111,6 +17629,15 @@ __metadata: languageName: node linkType: hard +"phin@npm:^3.7.1": + version: 3.7.1 + resolution: "phin@npm:3.7.1" + dependencies: + centra: "npm:^2.7.0" + checksum: 10/eebbfb0ab63d90f1513a2da05ef5ccc4bfb17216567fe62e9f0b8a4da27ff301b6409da8dcada6a66711c040b318ffb456e1adf24e8d261e24a916d30d91aadf + languageName: node + linkType: hard + "pica@npm:^9.0.1": version: 9.0.1 resolution: "pica@npm:9.0.1" @@ -18196,13 +17723,13 @@ __metadata: linkType: hard "pkg-types@npm:^1.1.1": - version: 1.1.1 - resolution: "pkg-types@npm:1.1.1" + version: 1.1.3 + resolution: "pkg-types@npm:1.1.3" dependencies: confbox: "npm:^0.1.7" - mlly: "npm:^1.7.0" + mlly: "npm:^1.7.1" pathe: "npm:^1.1.2" - checksum: 10/225eaf7c0339027e176dd0d34a6d9a1384c21e0aab295e57dfbef1f1b7fc132f008671da7e67553e352b80b17ba38c531c720c914061d277410eef1bdd9d9608 + checksum: 10/06c03ca679ea8e3a1ea7cb74e92af1a486a6081401aac35f6aa51fb6f0855cd86bbfc713f9bfdaaa730815b5ae147b4d6a838710b550c1c4b3f54a6653ff04a3 languageName: node linkType: hard @@ -18266,7 +17793,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.38, postcss@npm:^8.4.38": +"postcss@npm:8.4.38": version: 8.4.38 resolution: "postcss@npm:8.4.38" dependencies: @@ -18277,10 +17804,21 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.38, postcss@npm:^8.4.39": + version: 8.4.39 + resolution: "postcss@npm:8.4.39" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.1" + source-map-js: "npm:^1.2.0" + checksum: 10/ad9c1add892c96433b9a5502878201ede4a20c4ce02d056251f61f8d9a3e5426dab3683fe5a086edfa78a1a19f2b4988c8cea02c5122136d29758cb5a17e2621 + languageName: node + linkType: hard + "preact@npm:^10.16.0": - version: 10.22.0 - resolution: "preact@npm:10.22.0" - checksum: 10/0f3092916a538fa47d205d603bb5c513f9368a59bcbf881b457641ea6b88470b6a07960da8727db1287c232cb0f3a6292963917fa5cf09864be5eb50bf2a294e + version: 10.22.1 + resolution: "preact@npm:10.22.1" + checksum: 10/53ec958c49e600dcdedbb2da27834aa9779115690c26d240a953558fdd32d7f8cb3b34f2ec7a7c029a8aec46a93680b0e4b5baa0592fae6d53c7932abda6c06e languageName: node linkType: hard @@ -18340,14 +17878,7 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 10/02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 - languageName: node - linkType: hard - -"proc-log@npm:^4.2.0": +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": version: 4.2.0 resolution: "proc-log@npm:4.2.0" checksum: 10/4e1394491b717f6c1ade15c570ecd4c2b681698474d3ae2d303c1e4b6ab9455bd5a81566211e82890d5a5ae9859718cc6954d5150bb18b09b72ecb297beae90a @@ -18376,9 +17907,9 @@ __metadata: linkType: hard "progress-events@npm:^1.0.0": - version: 1.0.0 - resolution: "progress-events@npm:1.0.0" - checksum: 10/fa5a17a54566a4cb6432d0b65df9d844939fab9ec77a0c57f939dd9dc3fd2d450cd4c8de8b44da667f163274763d98f149fb2e6fef4c4746f1713678e1617fe8 + version: 1.0.1 + resolution: "progress-events@npm:1.0.1" + checksum: 10/21e8ba984e6c6f6764279fabdf7b34d8110c1720757360fc8cad56b1622e67857fe543619652b64cee51a880a2a4a5febdcb4ff86e4c2969ed90048e2264f42f languageName: node linkType: hard @@ -18603,12 +18134,9 @@ __metadata: "@metamask/eth-sig-util": "npm:^4.0.0" "@mui/icons-material": "npm:^5.8.4" "@mui/material": "npm:^5.5.0" - "@pushprotocol/restapi": "npm:1.7.20" + "@pushprotocol/restapi": "npm:1.7.22" "@pushprotocol/socket": "npm:0.5.3" - "@pushprotocol/uiweb": "npm:1.4.2" - "@radix-ui/react-dropdown-menu": "npm:^2.1.1" - "@radix-ui/react-tooltip": "npm:^1.1.1" - "@reach/tabs": "npm:^0.18.0" + "@pushprotocol/uiweb": "npm:1.6.0-alpha.4" "@reduxjs/toolkit": "npm:^1.7.1" "@tanstack/react-query": "npm:^5.44.0" "@tanstack/react-query-devtools": "npm:^5.44.0" @@ -18630,9 +18158,9 @@ __metadata: "@vitejs/plugin-react": "npm:^4.2.1" "@web3-name-sdk/core": "npm:^0.1.18" "@web3-onboard/coinbase": "npm:^2.2.5" - "@web3-onboard/core": "npm:2.21.6" - "@web3-onboard/injected-wallets": "npm:2.10.16" - "@web3-onboard/react": "npm:^2.8.9" + "@web3-onboard/core": "npm:2.22.1" + "@web3-onboard/injected-wallets": "npm:2.11.1" + "@web3-onboard/react": "npm:^2.9.1" "@web3-onboard/walletconnect": "npm:2.5.5" "@yisheng90/react-loading": "npm:1.2.3" assert: "npm:2.0.0" @@ -18748,11 +18276,11 @@ __metadata: linkType: hard "qs@npm:^6.11.2": - version: 6.12.1 - resolution: "qs@npm:6.12.1" + version: 6.12.3 + resolution: "qs@npm:6.12.3" dependencies: side-channel: "npm:^1.0.6" - checksum: 10/035bcad2a1ab0175bac7a74c904c15913bdac252834149ccff988c93a51de02642fe7be10e43058ba4dc4094bb28ce9b59d12b9e91d40997f445cfde3ecc1c29 + checksum: 10/486d80cfa5e12886de6fe15a5aa2b3c7023bf4461f949a742022c3ae608499dbaebcb57b1f15c1f59d86356772969028768b33c1a7c01e76d99f149239e63d59 languageName: node linkType: hard @@ -19159,7 +18687,7 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^18.2.0": +"react-is@npm:^18.3.1": version: 18.3.1 resolution: "react-is@npm:18.3.1" checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22 @@ -19352,26 +18880,26 @@ __metadata: linkType: hard "react-router-dom@npm:^6.9.0": - version: 6.24.0 - resolution: "react-router-dom@npm:6.24.0" + version: 6.24.1 + resolution: "react-router-dom@npm:6.24.1" dependencies: - "@remix-run/router": "npm:1.17.0" - react-router: "npm:6.24.0" + "@remix-run/router": "npm:1.17.1" + react-router: "npm:6.24.1" peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 10/a6622bc53dd7652bbfb9f5c6f2c1bff4aa93a24cc91e048aa2908d096f7106de3707b5d4cf4bd9cf0b67d4475c7718add7fd96045430f7435c7d78da04708a30 + checksum: 10/98eeeec3d36695b3d6d8000d8373ba3cefa9afc49ee44f646f3b721e8b47a80f5ce3737ad1f752cccf19caf01e370918750a4bc86a06a99e491731b454d5ec55 languageName: node linkType: hard -"react-router@npm:6.24.0": - version: 6.24.0 - resolution: "react-router@npm:6.24.0" +"react-router@npm:6.24.1": + version: 6.24.1 + resolution: "react-router@npm:6.24.1" dependencies: - "@remix-run/router": "npm:1.17.0" + "@remix-run/router": "npm:1.17.1" peerDependencies: react: ">=16.8" - checksum: 10/71d750e4422d74e1981b38f54c0dd02a7af7b1059cab471d96e4dc3374824557f6eec8449fe557c0ed8af18569554de8d565bbfd708c1fc90d3421b3d6c6ac82 + checksum: 10/18ac968171dee286a2f067dc8568faf73c759f833e88e09f1b34ff6e9376d1fd5eade8697a86be83093225956b256b398d935ce2f681c1bf711fb3c058c19839 languageName: node linkType: hard @@ -19997,25 +19525,25 @@ __metadata: linkType: hard "rollup@npm:^4.13.0": - version: 4.18.0 - resolution: "rollup@npm:4.18.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.18.0" - "@rollup/rollup-android-arm64": "npm:4.18.0" - "@rollup/rollup-darwin-arm64": "npm:4.18.0" - "@rollup/rollup-darwin-x64": "npm:4.18.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.18.0" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.18.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.18.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.18.0" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.18.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.18.0" - "@rollup/rollup-linux-s390x-gnu": "npm:4.18.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.18.0" - "@rollup/rollup-linux-x64-musl": "npm:4.18.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.18.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.18.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.18.0" + version: 4.18.1 + resolution: "rollup@npm:4.18.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.18.1" + "@rollup/rollup-android-arm64": "npm:4.18.1" + "@rollup/rollup-darwin-arm64": "npm:4.18.1" + "@rollup/rollup-darwin-x64": "npm:4.18.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.18.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.18.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.18.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.18.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.18.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.18.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.18.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.18.1" + "@rollup/rollup-linux-x64-musl": "npm:4.18.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.18.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.18.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.18.1" "@types/estree": "npm:1.0.5" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -20055,7 +19583,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/2320fe653cfd5e3d72ecab2f1d52d47e7b624a6ab02919f53c1ad1c5efa3b66e277c3ecfef03bb97651e79cef04bfefd34ad1f6e648f496572bf76c834f19599 + checksum: 10/7a5f110d216e8599dc3cb11cf570316d989abae00785d99c2bcb6027287fe60d2eaed70e457d88a036622e7fc67e8db6e730d3c784aa90a258bd4c020676ad44 languageName: node linkType: hard @@ -21243,7 +20771,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -21280,8 +20808,8 @@ __metadata: linkType: hard "terser@npm:^5.26.0": - version: 5.31.1 - resolution: "terser@npm:5.31.1" + version: 5.31.2 + resolution: "terser@npm:5.31.2" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -21289,7 +20817,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/4b22b62e762aebcd538dc3f5d5323fb3b51786e9294f7069d591cb61401a1161778039fdf283bbaf06244f500ee8563e0c49fc3c64176310556f34cc6637d463 + checksum: 10/dab8d0a7e2845f14535433795aa8dcf1b80a33e75749f5dbd67ee97aa66c1dec37191afa46dd88dad8472c9ff0bf16a812dd4388cb30d8675a6a95a7ead0421b languageName: node linkType: hard @@ -21544,8 +21072,8 @@ __metadata: linkType: hard "tsconfck@npm:^3.0.3": - version: 3.1.1 - resolution: "tsconfck@npm:3.1.1" + version: 3.0.3 + resolution: "tsconfck@npm:3.0.3" peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -21553,7 +21081,7 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: 10/a4456577f540212516d7eb530005893739aadd6da00787914a8ed9aa19c3f2f306b8912920aa440b9b8978f10c9dadbd062b8c2a2f0ff1f6c2d4272b5be2ef34 + checksum: 10/1c17217dc3758e71bebdb223b7cd6e613f8f8c92a225cccc40d459554dfae50cbf9d339c6a4a5a8d04620fe1c21bb6d454b6e10421e3fcd808ea51d0b5039ffd languageName: node linkType: hard @@ -21713,22 +21241,22 @@ __metadata: linkType: hard "typescript@npm:^5.2.2": - version: 5.5.2 - resolution: "typescript@npm:5.5.2" + version: 5.5.3 + resolution: "typescript@npm:5.5.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/9118b20f248e76b0dbff8737fef65dfa89d02668d4e633d2c5ceac99033a0ca5e8a1c1a53bc94da68e8f67677a88f318663dde859c9e9a09c1e116415daec2ba + checksum: 10/11a867312419ed497929aafd2f1d28b2cd41810a5eb6c6e9e169559112e9ea073d681c121a29102e67cd4478d0a4ae37a306a5800f3717f59c4337e6a9bd5e8d languageName: node linkType: hard "typescript@patch:typescript@npm%3A^5.2.2#optional!builtin": - version: 5.5.2 - resolution: "typescript@patch:typescript@npm%3A5.5.2#optional!builtin::version=5.5.2&hash=b45daf" + version: 5.5.3 + resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin::version=5.5.3&hash=b45daf" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10/28b3de2ddaf63a7620e7ddbe5d377af71ce93ecc558c41bf0e3d88661d8e6e7aa6c7739164fef98055f69819e41faca49252938ef3633a3dff2734cca6a9042e + checksum: 10/b61b8bb4b4d6a8a00f9d5f931f8c67070eed6ad11feabf4c41744a326987080bfc806a621596c70fbf2e5974eca3ed65bafeeeb22a078071bdfb51d8abd7c013 languageName: node linkType: hard @@ -21999,9 +21527,9 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.16": - version: 1.0.16 - resolution: "update-browserslist-db@npm:1.0.16" +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" dependencies: escalade: "npm:^3.1.2" picocolors: "npm:^1.0.1" @@ -22009,7 +21537,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10/071bf0b2fb8568db6cd42ee2598ac9b87c794a7229fcbf1b035ae7f883e770c07143f16a5371525d5bcb94b99f9a1b279036142b0195ffd4cf5a0008fc4a500e + checksum: 10/d70b9efeaf4601aadb1a4f6456a7a5d9118e0063d995866b8e0c5e0cf559482671dab6ce7b079f9536b06758a344fbd83f974b965211e1c6e8d1958540b0c24c languageName: node linkType: hard @@ -22027,7 +21555,7 @@ __metadata: languageName: node linkType: hard -"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": +"uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: @@ -22413,7 +21941,7 @@ __metadata: dependencies: esbuild: "npm:^0.21.3" fsevents: "npm:~2.3.3" - postcss: "npm:^8.4.38" + postcss: "npm:^8.4.39" rollup: "npm:^4.13.0" peerDependencies: "@types/node": ^18.0.0 || >=20.0.0 @@ -22807,8 +22335,8 @@ __metadata: linkType: hard "webpack@npm:^4.46.0 || ^5.0.0": - version: 5.92.1 - resolution: "webpack@npm:5.92.1" + version: 5.93.0 + resolution: "webpack@npm:5.93.0" dependencies: "@types/eslint-scope": "npm:^3.7.3" "@types/estree": "npm:^1.0.5" @@ -22839,7 +22367,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/76fcfbebcc0719c4734c65a01dcef7a0f18f3f2647484e8a7e8606adbd128ac42756bb3a8b7e2d486fe97f6286ebdc7b937ccdf3cf1d21b4684134bb89bbed89 + checksum: 10/a48bef7a511d826db7f9ebee2c84317214923ac40cb2aabe6a649546c54a76a55fc3b91ff03c05fed22a13a176891c47bbff7fcc644c53bcbe5091555863641b languageName: node linkType: hard