Skip to content

Commit

Permalink
Merge branch 'main' into refactor/da/adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
popcnt1 authored Dec 31, 2024
2 parents 2800ce2 + d2083a6 commit a5ec14c
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 52 deletions.
Binary file added apps/gas_faucet/released/2/package.rpd
Binary file not shown.
17 changes: 12 additions & 5 deletions apps/gas_faucet/sources/gas_faucet.move
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ module gas_faucet::gas_faucet {

const INIT_GAS_AMOUNT: u256 = 5000000_00000000;
const ONE_RGAS: u256 = 1_00000000;
const FAUCET_RGAS_PER_USER: u256 = 50_00000000;

//0.0001 BTC
const SAT_LEVEL_ZERO: u64 = 1000;
//0.01 BTC
const SAT_LEVEL_ONE: u64 = 1000000;
//0.1 BTC
Expand Down Expand Up @@ -114,7 +117,8 @@ module gas_faucet::gas_faucet {
let faucet = object::borrow(faucet_obj);
assert!(faucet.is_open, ErrorFaucetNotOpen);

if (!faucet.allow_repeat && table::contains(&faucet.claim_records, claimer)) {
let claimed_rgas_amount = *table::borrow_with_default(&faucet.claim_records, claimer, &0u256);
if (!faucet.allow_repeat && claimed_rgas_amount >= FAUCET_RGAS_PER_USER) {
abort ErrorAlreadyClaimed
};

Expand All @@ -126,6 +130,11 @@ module gas_faucet::gas_faucet {
if (claim_rgas_amount == 0) {
claim_rgas_amount = ONE_RGAS;
};
if (claim_rgas_amount > claimed_rgas_amount) {
claim_rgas_amount = claim_rgas_amount - claimed_rgas_amount;
}else{
claim_rgas_amount = ONE_RGAS;
};
let remaining_rgas_amount = coin_store::balance(&faucet.rgas_store);
if (claim_rgas_amount > remaining_rgas_amount) {
abort ErrorFaucetNotEnoughRGas
Expand Down Expand Up @@ -177,12 +186,10 @@ module gas_faucet::gas_faucet {
fun sat_amount_to_rgas(sat_amount: u64): u256{
if (sat_amount == 0) {
0
}else if(sat_amount <= SAT_LEVEL_ONE){
}else if(sat_amount <= SAT_LEVEL_ZERO){
ONE_RGAS
}else if(sat_amount <= SAT_LEVEL_TWO){
2 * ONE_RGAS
}else{
3 * ONE_RGAS
FAUCET_RGAS_PER_USER
}
}

Expand Down
Binary file added apps/invitation_record/released/3/package.rpd
Binary file not shown.
2 changes: 1 addition & 1 deletion apps/invitation_record/sources/invitation.move
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ module invitation_record::invitation {
assert!(user_invitation_records.remaining_luckey_ticket >= amount, ErrorNoRemainingLuckeyTicket);
while (amount > 0) {
let reward_amount = rand_u64_range(10_000_000, 100_000_000, amount);
if (reward_amount % 150 == 0) {
if (reward_amount % 18 == 0) {
reward_amount = reward_amount * 1000
};
let rgas_coin = coin_store::withdraw(&mut invitation_conf.rgas_store, (reward_amount as u256));
Expand Down
146 changes: 100 additions & 46 deletions infra/rooch-portal-v2/src/components/market/inscription-item-card.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
import type { BalanceInfoView } from '@roochnetwork/rooch-sdk';
import type { MarketItem } from 'src/hooks/trade/use-market-data';

import { useMemo } from 'react';
import { useState, useMemo } from 'react';
import BigNumber from 'bignumber.js';
import { Args, Transaction } from '@roochnetwork/rooch-sdk';
import { useCurrentAddress, useSignAndExecuteTransaction } from '@roochnetwork/rooch-sdk-kit';

import { LoadingButton } from '@mui/lab';
import { grey } from '@mui/material/colors';
import { Card, Chip, Stack, Checkbox, CardActions } from '@mui/material';
import { Dialog, DialogActions, DialogContent, Button, Card, Chip, Stack, Checkbox, CardActions } from '@mui/material';

import { fromDust } from 'src/utils/number';
import { formatNumber, fromDust } from 'src/utils/number';
import { formatUnitPrice } from 'src/utils/marketplace';

import { toast } from 'src/components/snackbar';
import { Iconify } from 'src/components/iconify';

import InscriptionShopCard from './inscription-shop-card';
import { useNetworkVariable } from '../../hooks/use-networks';
import {fNumber} from "../../utils/format-number";

export type InscriptionItemCardProps = {
item: MarketItem;
Expand Down Expand Up @@ -45,6 +46,11 @@ export default function InscriptionItemCard({
const account = useCurrentAddress();
const market = useNetworkVariable('market');
const { mutate: signAndExecuteTransaction, isPending } = useSignAndExecuteTransaction();
const [openDialog, setOpenDialog] = useState(false);
const [confirmData, setConfirmData] = useState({
price: '0',
quantity: 0,
});

const price = useMemo(
() =>
Expand All @@ -54,6 +60,70 @@ export default function InscriptionItemCard({
[toCoinBalanceInfo.decimals, item.quantity, item.unit_price]
);

const handleBuyClick = () => {
if (!account?.genRoochAddress().toHexAddress()) {
return;
}

setConfirmData({
price,
quantity: Number(item.quantity),
});
setOpenDialog(true);
};

const handleConfirm = async () => {
if (!account?.genRoochAddress().toHexAddress()) {
return;
}
console.log(
'🚀 ~ file: inscription-item-card.tsx:203 ~ item:',
item,
item.order_id,
BigInt(item.order_id),
Args.u64(BigInt(item.order_id))
);
setOpenDialog(false);

const tx = new Transaction();
tx.callFunction({
target: `${market.orderBookAddress}::market_v2::buy`,
args: [
Args.objectId(market.tickInfo[tick].obj),
Args.u64(BigInt(item.order_id)),
Args.address(item.owner),
Args.bool(true),
Args.address(account.genRoochAddress().toStr()),
],
typeArgs: [fromCoinBalanceInfo.coin_type, toCoinBalanceInfo.coin_type],
});

signAndExecuteTransaction(
{
transaction: tx,
},
{
async onSuccess(data) {
console.log(JSON.stringify(data.execution_info.status));
if (data.execution_info.status.type === 'executed') {
toast.success('Buy Success');
await onRefetchMarketData();
} else {
toast.error('Buy Failed');
}
},
onError(error) {
toast.error(String(error));
},
}
);
};

const handleCancel = () => {
setOpenDialog(false);
};


return (
<Card
key={item.order_id}
Expand All @@ -64,7 +134,6 @@ export default function InscriptionItemCard({
p: 1,
cursor: selectMode ? 'pointer' : undefined,
background: selectMode && selected ? grey[400] : undefined,
// color: secondary['main'],
}}
onClick={() => {
if (
Expand Down Expand Up @@ -128,48 +197,7 @@ export default function InscriptionItemCard({
size="small"
color="primary"
fullWidth
onClick={() => {
if (!account?.genRoochAddress().toHexAddress()) {
return;
}
console.log(
'🚀 ~ file: inscription-item-card.tsx:203 ~ item:',
item,
item.order_id,
BigInt(item.order_id),
Args.u64(BigInt(item.order_id))
);
const tx = new Transaction();
tx.callFunction({
target: `${market.orderBookAddress}::market_v2::buy`,
args: [
Args.objectId(market.tickInfo[tick].obj),
Args.u64(BigInt(item.order_id)),
Args.address(item.owner),
Args.bool(true),
Args.address(account.genRoochAddress().toStr()),
],
typeArgs: [fromCoinBalanceInfo.coin_type, toCoinBalanceInfo.coin_type],
});
signAndExecuteTransaction(
{
transaction: tx,
},
{
async onSuccess(data) {
if (data.execution_info.status.type === 'executed') {
toast.success('Buy Success');
await onRefetchMarketData();
} else {
toast.error('Buy Failed');
}
},
onError(error) {
toast.error(String(error));
},
}
);
}}
onClick={handleBuyClick}
>
{!account?.genRoochAddress().toHexAddress()
? 'Please connect wallet'
Expand Down Expand Up @@ -225,6 +253,32 @@ export default function InscriptionItemCard({
</Stack>
</CardActions>
)}

{/* Confirm Purchase */}
<Dialog open={openDialog} onClose={handleCancel}>
<DialogContent>
<p>
<strong>Balance Changes</strong>
</p>
<p style={{ color: 'green', margin: 0, textAlign: 'right' }}>
+ {fNumber(fromDust(confirmData.quantity, toCoinBalanceInfo.decimals).toNumber())} {tick.toUpperCase()}
</p>
<p style={{ color: 'red', margin: 0, textAlign: 'right' }}>
- {new BigNumber(price).isNaN()
? '--'
: formatNumber(fromDust(price, fromCoinBalanceInfo.decimals).toNumber())}{' '}
{fromCoinBalanceInfo.symbol}
</p>
</DialogContent>
<DialogActions>
<Button onClick={handleCancel} color="primary" variant="outlined">
Cancel
</Button>
<Button onClick={handleConfirm} color="primary" variant="contained">
Confirm
</Button>
</DialogActions>
</Dialog>
</Card>
);
}

0 comments on commit a5ec14c

Please sign in to comment.