Skip to content

Commit

Permalink
adjusting modify and ends recurring donation
Browse files Browse the repository at this point in the history
  • Loading branch information
kkatusic committed Dec 18, 2024
1 parent ac1beef commit de64843
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ enum EEndStreamSteps {
export interface IEndStreamModalProps extends IModal {
donation: IWalletRecurringDonation;
refetch: () => void;
recurringNetworkId: number;
}

export const EndStreamModal: FC<IEndStreamModalProps> = ({ ...props }) => {
Expand Down Expand Up @@ -60,11 +61,13 @@ export const EndStreamModal: FC<IEndStreamModalProps> = ({ ...props }) => {

interface IEndStreamInnerModalProps extends IEndStreamModalProps {
closeModal: (refetch?: boolean) => void;
recurringNetworkId: number;
}

const EndStreamInnerModal: FC<IEndStreamInnerModalProps> = ({
closeModal,
donation,
recurringNetworkId,
}) => {
const [step, setStep] = useState(EEndStreamSteps.CONFIRM);
const { formatMessage } = useIntl();
Expand All @@ -81,9 +84,15 @@ const EndStreamInnerModal: FC<IEndStreamInnerModalProps> = ({
throw new Error('Please connect your wallet first');
}

const _superToken = config.OPTIMISM_CONFIG.SUPER_FLUID_TOKENS.find(
s => s.underlyingToken.symbol === donation.currency,
);
const _superToken =
recurringNetworkId === config.OPTIMISM_NETWORK_NUMBER
? config.OPTIMISM_CONFIG.SUPER_FLUID_TOKENS.find(
s => s.underlyingToken.symbol === donation.currency,
)
: config.BASE_CONFIG.SUPER_FLUID_TOKENS.find(
s => s.underlyingToken.symbol === donation.currency,
);

if (!_superToken) {
throw new Error('SuperToken not found');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ interface IModifyStreamInnerModalProps extends IModifyStreamModalProps {
superToken: IToken;
tokenStreams: ITokenStreams;
setModifyInfo: Dispatch<SetStateAction<IModifyDonationInfo | undefined>>;
recurringNetworkId: number;
}

interface IGeneralInfo {
Expand All @@ -56,13 +57,14 @@ export const ModifyStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
setStep,
tokenStreams,
setModifyInfo,
recurringNetworkId,
}) => {
const [percentage, setPercentage] = useState(0);
const [info, setInfo] = useState<IGeneralInfo>({
otherStreamsTotalFlowRate: 0n,
});
const { formatMessage } = useIntl();
const { address, chain } = useAccount();
const { address } = useAccount();

// Get the balance of the super token
const { data: balance } = useBalance({
Expand Down Expand Up @@ -117,7 +119,7 @@ export const ModifyStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
};
const anchorContractAddress = findAnchorContractAddress(
donation.project.anchorContracts,
chain?.id,
recurringNetworkId,
);
for (let i = 0; i < tokenStream.length; i++) {
const ts = tokenStream[i];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export interface IModifyDonationInfo {
export interface IModifyStreamModalProps extends IModal {
donation: IWalletRecurringDonation;
refetch: () => void;
recurringNetworkId: number;
}

export const ModifyStreamModal: FC<IModifyStreamModalProps> = ({
Expand All @@ -39,13 +40,16 @@ export const ModifyStreamModal: FC<IModifyStreamModalProps> = ({
const { formatMessage } = useIntl();
const { tokenStreams } = useUserStreams();

const superToken = useMemo(
() =>
config.OPTIMISM_CONFIG.SUPER_FLUID_TOKENS.find(
const superToken = useMemo(() => {
if (props.recurringNetworkId === config.OPTIMISM_NETWORK_NUMBER) {
return config.OPTIMISM_CONFIG.SUPER_FLUID_TOKENS.find(
s => s.underlyingToken.symbol === props.donation.currency,
),
[props.donation.currency],
);
);
}
return config.BASE_CONFIG.SUPER_FLUID_TOKENS.find(
s => s.underlyingToken.symbol === props.donation.currency,
);
}, [props.recurringNetworkId, props.donation.currency]);

const handleCloseModal = () => {
if (step === EDonationSteps.SUCCESS) {
Expand All @@ -71,6 +75,7 @@ export const ModifyStreamModal: FC<IModifyStreamModalProps> = ({
tokenStreams={tokenStreams}
superToken={superToken!}
setModifyInfo={setModifyInfo}
recurringNetworkId={props.recurringNetworkId}
/>
) : (
<UpdateStreamInnerModal
Expand All @@ -82,6 +87,7 @@ export const ModifyStreamModal: FC<IModifyStreamModalProps> = ({
token={modifyInfo?.token!}
closeModal={handleCloseModal}
{...props}
recurringNetworkId={props.recurringNetworkId}
/>
)}
</Modal>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { Item } from '@/components/views/donate/Recurring/RecurringDonationModal
import { IToken } from '@/types/superFluid';
import { RunOutInfo } from '@/components/views/donate/Recurring/RunOutInfo';
import { useTokenPrice } from '@/hooks/useTokenPrice';
import config, { isProduction } from '@/configuration';
import { isProduction } from '@/configuration';
import { getEthersProvider, getEthersSigner } from '@/helpers/ethers';
import { ONE_MONTH_SECONDS } from '@/lib/constants/constants';
import { showToastError } from '@/lib/helpers';
Expand All @@ -36,6 +36,7 @@ interface IModifyStreamInnerModalProps extends IModifyStreamModalProps {
flowRatePerMonth: bigint;
streamFlowRatePerMonth: bigint;
closeModal: () => void;
recurringNetworkId: number;
}

export const UpdateStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
Expand All @@ -47,20 +48,21 @@ export const UpdateStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
flowRatePerMonth,
streamFlowRatePerMonth,
closeModal,
recurringNetworkId,
}) => {
const [tx, setTx] = useState('');
const { formatMessage } = useIntl();
const tokenPrice = useTokenPrice(token);
const { address, chain } = useAccount();
const { address } = useAccount();
const { refetchTokenStream } = useProfileDonateTabData();

const onDonate = async () => {
setStep(EDonationSteps.DONATING);
try {
await ensureCorrectNetwork(config.OPTIMISM_NETWORK_NUMBER);
await ensureCorrectNetwork(recurringNetworkId);
const projectAnchorContract = findAnchorContractAddress(
donation.project.anchorContracts,
chain?.id,
recurringNetworkId,
);
if (!projectAnchorContract) {
throw new Error('Project anchor address not found');
Expand All @@ -75,7 +77,7 @@ export const UpdateStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
throw new Error('Provider or signer not found');

const _options = {
chainId: config.OPTIMISM_CONFIG.id,
chainId: recurringNetworkId,
provider: provider,
resolverAddress: isProduction
? undefined
Expand Down Expand Up @@ -105,7 +107,7 @@ export const UpdateStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
recurringDonationId: donation.id,
projectId: +donation.project.id,
anonymous: donation.anonymous,
chainId: config.OPTIMISM_NETWORK_NUMBER,
chainId: recurringNetworkId,
flowRate: _flowRatePerSec,
superToken: token,
isForUpdate: true,
Expand All @@ -119,7 +121,8 @@ export const UpdateStreamInnerModal: FC<IModifyStreamInnerModalProps> = ({
setTx(tx.hash);

let projectDonationId = 0;
// saving project donation to backend

// Saving project donation to backend
try {
const projectDonationInfo = {
...projectDraftDonationInfo,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ const RecurringDonationTable: FC<RecurringDonationTable> = ({
<StreamActionButton
donation={donation}
refetch={refetch}
recurringNetworkId={donation.networkId}
/>
</DonationTableCell>
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,18 @@ import {
} from '@/apollo/types/types';
import { EndStreamModal } from './EndStreamModal';
import { ArchiveStreamModal } from './ArchiveStreamModal';
import config from '@/configuration';
import { slugToProjectDonate } from '@/lib/routeCreators';

interface IStreamActionButtonProps {
donation: IWalletRecurringDonation;
refetch: () => void;
recurringNetworkId: number;
}

export const StreamActionButton: FC<IStreamActionButtonProps> = ({
donation,
refetch,
recurringNetworkId,
}) => {
const [showModify, setShowModify] = useState(false);
const [showEnd, setShowEnd] = useState(false);
Expand Down Expand Up @@ -101,9 +102,9 @@ export const StreamActionButton: FC<IStreamActionButtonProps> = ({
return options.length > 0 ? (
<Actions
onClick={() => {
if (chainId !== config.OPTIMISM_NETWORK_NUMBER) {
if (recurringNetworkId !== chainId) {
switchChain?.({
chainId: config.OPTIMISM_NETWORK_NUMBER,
chainId: recurringNetworkId,
});
}
}}
Expand All @@ -119,13 +120,15 @@ export const StreamActionButton: FC<IStreamActionButtonProps> = ({
setShowModal={setShowModify}
donation={donation}
refetch={refetch}
recurringNetworkId={recurringNetworkId}
/>
)}
{showEnd && (
<EndStreamModal
setShowModal={setShowEnd}
donation={donation}
refetch={refetch}
recurringNetworkId={recurringNetworkId}
/>
)}
{showArchive && (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ const ClaimWithdrawalModal = ({
<CustomLink
href={formatTxLink({
txHash,
networkId: config.OPTIMISM_NETWORK_NUMBER,
networkId: recurringNetworkID,
chainType: ChainType.EVM,
})}
target='_blank'
Expand Down

0 comments on commit de64843

Please sign in to comment.