Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"yarn": ">=999.0.0",
"npm": ">=999.0.0"
},
"version": "2.31.1",
"version": "2.31.3",
"private": true,
"license": "AGPL-3.0-or-later",
"scripts": {
Expand Down
45 changes: 5 additions & 40 deletions packages/plugins/RedPacket/src/SiteAdaptor/RedPacket/index.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { msg } from '@lingui/core/macro'
import { useLingui } from '@lingui/react'
import { useLastRecognizedIdentity, usePostInfoDetails, usePostLink } from '@masknet/plugin-infra/content-script'
import { requestLogin, share } from '@masknet/plugin-infra/content-script/context'
import { usePostInfoDetails, usePostLink } from '@masknet/plugin-infra/content-script'
import { share } from '@masknet/plugin-infra/content-script/context'
import { LoadingStatus, TransactionConfirmModal } from '@masknet/shared'
import { EMPTY_LIST, NetworkPluginID, Sniffings } from '@masknet/shared-base'
import { queryClient } from '@masknet/shared-base-ui'
import { makeStyles } from '@masknet/theme'
import type { HappyRedPacketV4 } from '@masknet/web3-contracts/types/HappyRedPacketV4.js'
import { NetworkContextProvider, useChainContext, useNetwork } from '@masknet/web3-hooks-base'
import { EVMChainResolver, FireflyRedPacket } from '@masknet/web3-providers'
import { FireflyRedPacketAPI, RedPacketStatus, type RedPacketJSONPayload } from '@masknet/web3-providers/types'
import { EVMChainResolver } from '@masknet/web3-providers'
import { RedPacketStatus, type RedPacketJSONPayload } from '@masknet/web3-providers/types'
import { TokenType, formatBalance, isZero, minus } from '@masknet/web3-shared-base'
import { ChainId } from '@masknet/web3-shared-evm'
import { Card, Grow } from '@mui/material'
Expand All @@ -21,7 +21,6 @@ import { useClaimCallback } from '../hooks/useClaimCallback.js'
import { useRedPacketContract } from '../hooks/useRedPacketContract.js'
import { useRefundCallback } from '../hooks/useRefundCallback.js'
import { OperationFooter } from './OperationFooter.js'
import { RequestLoginFooter } from './RequestLoginFooter.js'
import { useRedPacketCover } from './useRedPacketCover.js'

const useStyles = makeStyles()((theme) => {
Expand Down Expand Up @@ -166,9 +165,6 @@ export const RedPacket = memo(function RedPacket({ payload, currentPluginID }: R
}, [token, redPacketContract, payload.rpid, account, claimedShareText, source])

const [showRequirements, setShowRequirements] = useState(false)
const me = useLastRecognizedIdentity()
const myProfileId = me?.profileId
const myHandle = me?.identifier?.userId
const onClaimOrRefund = useCallback(async () => {
let hash: string | undefined
if (canClaim) {
Expand All @@ -178,15 +174,6 @@ export const RedPacket = memo(function RedPacket({ payload, currentPluginID }: R
return
}
hash = await claimCallback()
if (myProfileId && myHandle && hash) {
await FireflyRedPacket.finishClaiming(
payload.rpid,
FireflyRedPacketAPI.PlatformType.twitter,
myProfileId,
myHandle,
hash,
)
}
await checkResult()
queryClient.invalidateQueries({
queryKey: ['redpacket', 'history'],
Expand All @@ -197,17 +184,7 @@ export const RedPacket = memo(function RedPacket({ payload, currentPluginID }: R
if (typeof hash === 'string') {
checkAvailability()
}
}, [
canClaim,
canRefund,
claimCallback,
checkResult,
recheckClaimStatus,
checkAvailability,
payload.rpid,
myProfileId,
myHandle,
])
}, [canClaim, canRefund, claimCallback, checkResult, recheckClaimStatus, checkAvailability])

const outdated = isEmpty || (!canRefund && listOfStatus.includes(RedPacketStatus.expired))

Expand Down Expand Up @@ -261,18 +238,6 @@ export const RedPacket = memo(function RedPacket({ payload, currentPluginID }: R
)

if (outdated) return card
if (!myHandle)
return (
<>
{card}
<RequestLoginFooter
className={classes.footer}
onRequest={() => {
requestLogin?.(source)
}}
/>
</>
)

return (
<>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { BN, web3 } from '@coral-xyz/anchor'
import { msg } from '@lingui/core/macro'
import { useLingui } from '@lingui/react'
import { useLastRecognizedIdentity, usePostInfoDetails, usePostLink } from '@masknet/plugin-infra/content-script'
import { requestLogin, share } from '@masknet/plugin-infra/content-script/context'
import { usePostInfoDetails, usePostLink } from '@masknet/plugin-infra/content-script'
import { share } from '@masknet/plugin-infra/content-script/context'
import { LoadingStatus, TransactionConfirmModal } from '@masknet/shared'
import { type NetworkPluginID, Sniffings } from '@masknet/shared-base'
import { queryClient } from '@masknet/shared-base-ui'
Expand All @@ -14,20 +14,19 @@ import {
useNetwork,
useNetworkContext,
} from '@masknet/web3-hooks-base'
import { FireflyRedPacket, SolanaChainResolver } from '@masknet/web3-providers'
import { FireflyRedPacketAPI, RedPacketStatus, type SolanaRedPacketJSONPayload } from '@masknet/web3-providers/types'
import { SolanaChainResolver } from '@masknet/web3-providers'
import { RedPacketStatus, type SolanaRedPacketJSONPayload } from '@masknet/web3-providers/types'
import { TokenType, formatBalance, minus } from '@masknet/web3-shared-base'
import { ChainId } from '@masknet/web3-shared-solana'
import { Card } from '@mui/material'
import { memo, useCallback, useMemo } from 'react'
import { useAsyncFn } from 'react-use'
import { RedPacketEnvelope } from '../components/RedPacketEnvelope.js'
import { getClaimRecord } from '../helpers/getClaimRecord.js'
import { useSolanaAvailability } from './hooks/useAvailability.js'
import { useClaimCallback } from './hooks/useClaimCallback.js'
import { OperationFooter } from './OperationFooter.js'
import { RequestLoginFooter } from './RequestLoginFooter.js'
import { useRedPacketCover } from './useRedPacketCover.js'
import { useAsyncFn } from 'react-use'

const useStyles = makeStyles()((theme) => {
return {
Expand Down Expand Up @@ -126,9 +125,6 @@ export const SolanaRedPacketCard = memo(function SolanaRedPacketCard({
)
const claimedShareText = useMemo(() => getShareText(true), [getShareText])

const me = useLastRecognizedIdentity()
const myProfileId = me?.profileId
const myHandle = me?.identifier?.userId
const [{ loading: isClaimingAndChecking }, onClaimOrRefund] = useAsyncFn(async () => {
let hash: string | undefined
if (canClaim) {
Expand All @@ -139,15 +135,6 @@ export const SolanaRedPacketCard = memo(function SolanaRedPacketCard({
tokenAddress: payload.token!.address,
tokenProgram: payload.tokenProgram ? new web3.PublicKey(payload.tokenProgram) : undefined,
})
if (myProfileId && myHandle && hash) {
await FireflyRedPacket.finishClaiming(
payload.rpid,
FireflyRedPacketAPI.PlatformType.twitter,
myProfileId,
myHandle,
hash,
)
}
const claimRecord = await getClaimRecord({
cluster: payload.network ?? 'mainnet-beta',
accountId: payload.accountId,
Expand All @@ -173,7 +160,7 @@ export const SolanaRedPacketCard = memo(function SolanaRedPacketCard({
if (typeof hash === 'string') {
refreshRedPacket()
}
}, [canClaim, canRefund, claimCallback, refreshRedPacket, payload.rpid, myProfileId, myHandle, account])
}, [canClaim, canRefund, claimCallback, refreshRedPacket, payload.rpid, account])

const outdated = availability?.isEmpty || (!canRefund && listOfStatus.includes(RedPacketStatus.expired))

Expand Down Expand Up @@ -214,9 +201,7 @@ export const SolanaRedPacketCard = memo(function SolanaRedPacketCard({
/>
</SOLWeb3ContextProvider>
</Card>
{outdated ?
null
: myHandle ?
{outdated ? null : (
<NetworkContextProvider initialNetwork={currentPluginID}>
{/* ChainBoundary needs to know the current network */}
<OperationFooter
Expand All @@ -229,13 +214,7 @@ export const SolanaRedPacketCard = memo(function SolanaRedPacketCard({
onClaimOrRefund={onClaimOrRefund}
/>
</NetworkContextProvider>
: <RequestLoginFooter
className={classes.footer}
onRequest={() => {
requestLogin?.(source)
}}
/>
}
)}
</>
)
})
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,8 @@ export function CreateSolRedPacket() {
customThemes,
setCustomThemes,
setTheme,
message,
setMessage,
inputMessage,
setInputMessage,
shares,
setShares,
isRandom,
Expand Down Expand Up @@ -250,9 +250,9 @@ export function CreateSolRedPacket() {
shares,
// Avoid causing rpc rate limit due to too fast requests.
new BigNumber('0.0001').toNumber(),
!!isRandom,
isRandom,
publicKey,
message,
inputMessage,
creator,
token,
cluster,
Expand Down Expand Up @@ -308,9 +308,9 @@ export function CreateSolRedPacket() {
<>
<div className={classes.fields}>
<div className={classes.field}>
<label className={classes.option} onClick={() => setIsRandom(1)}>
<label className={classes.option} onClick={() => setIsRandom(true)}>
<div className={classes.checkIconWrapper}>
<RadioIndicator checked={!!isRandom} size={20} />
<RadioIndicator checked={isRandom} size={20} />
</div>
<Typography
color={isRandom ? theme.palette.maskColor.main : theme.palette.maskColor.second}
Expand All @@ -319,7 +319,7 @@ export function CreateSolRedPacket() {
<Trans>Random Amount</Trans>
</Typography>
</label>
<label className={classes.option} onClick={() => setIsRandom(0)}>
<label className={classes.option} onClick={() => setIsRandom(false)}>
<div className={classes.checkIconWrapper}>
<RadioIndicator checked={!isRandom} size={20} />
</div>
Expand All @@ -334,16 +334,16 @@ export function CreateSolRedPacket() {
<InputBase
className={classes.input}
fullWidth
value={message}
onChange={(e) => setMessage(e.target.value)}
value={inputMessage}
onChange={(e) => setInputMessage(e.target.value)}
startAdornment={
<Typography className={classes.inputLabel}>
<Trans>Message</Trans>
</Typography>
}
endAdornment={
<Typography className={classes.inputLabel} style={{ right: 12, left: 'auto' }}>
{message.length}/{messageMaxLength}
{inputMessage.length}/{messageMaxLength}
</Typography>
}
placeholder={_(msg`Best Wishes!`)}
Expand Down Expand Up @@ -462,7 +462,7 @@ export function CreateSolRedPacket() {
<PreviewRedPacket
className={classes.envelope}
theme={selectedTheme}
message={message}
message={inputMessage}
token={token}
creator={creator}
shares={shares}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ export function SolanaRedPacketConfirm() {
const { classes, cx } = useStyles()
const { chainId } = useChainContext<NetworkPluginID.PLUGIN_SOLANA>()
const navigate = useNavigate()
const { settings, shares, isRandom, token, creator, publicKey, password, message, nativeToken, theme, rawAmount } =
const { settings, isRandom, token, creator, publicKey, password, message, nativeToken, theme, rawAmount } =
useSolRedpacket()

const solanaAccount = useAccount(NetworkPluginID.PLUGIN_SOLANA)
Expand Down Expand Up @@ -126,9 +126,9 @@ export function SolanaRedPacketConfirm() {

const cluster = SolanaChainResolver.network(chainId) as SolanaWeb3.Cluster
const { data: defaultGasFee = ZERO, isLoading: estimateLoading } = useEstimateGasWithCreateSolRedpacket(
shares,
settings.shares,
new BigNumber(settings.total).toNumber(),
!!isRandom,
isRandom,
publicKey,
message,
creator,
Expand All @@ -152,7 +152,7 @@ export function SolanaRedPacketConfirm() {
settings.shares,
total,
DEFAULT_DURATION,
!!isRandom,
isRandom,
claimer,
creator,
message,
Expand All @@ -165,7 +165,7 @@ export function SolanaRedPacketConfirm() {
settings.shares,
total,
DEFAULT_DURATION,
!!isRandom,
isRandom,
claimer,
creator,
message,
Expand All @@ -181,8 +181,8 @@ export function SolanaRedPacketConfirm() {
name: creator,
message,
},
is_random: !!isRandom,
shares,
is_random: isRandom,
shares: settings.shares,
password,
rpid: result.accountId.toBase58(),
total: settings.total,
Expand Down Expand Up @@ -211,7 +211,7 @@ export function SolanaRedPacketConfirm() {
<>
<div className={classes.settings}>
<Typography variant="h4" color="textPrimary" align="center" className={classes.message}>
{settings.message}
{message}
</Typography>
<div className={classes.field}>
<Typography className={classes.fieldName}>
Expand All @@ -228,7 +228,7 @@ export function SolanaRedPacketConfirm() {
<Trans>Share</Trans>
</Typography>
<Typography variant="body1" className={cx(classes.fieldValue, classes.value)}>
{shares}
{settings.shares}
</Typography>
</div>
{isRandom ? null : (
Expand Down Expand Up @@ -297,7 +297,7 @@ export function SolanaRedPacketConfirm() {
message={message}
token={token}
creator={creator}
shares={shares}
shares={settings.shares}
isRandom={isRandom}
rawAmount={rawAmount}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ interface Props extends HTMLProps<HTMLDivElement> {
token?: Web3Helper.FungibleTokenAll
creator: string
shares: number
isRandom: 0 | 1
isRandom: boolean
rawAmount: string
}
export function PreviewRedPacket({ theme, message, token, creator, shares, isRandom, rawAmount, ...props }: Props) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ const useStyles = makeStyles<{ background?: string; backgroundIcon?: string }>()
},
},
symbol: {
width: '6ch',
maxWidth: '6ch',
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
Expand Down
Loading