From 2fb6d77365ceee22c9f70a24b241913e167b8bd1 Mon Sep 17 00:00:00 2001 From: n0izn0iz Date: Mon, 18 Nov 2024 10:30:48 +0100 Subject: [PATCH] chore: remove rioters-footer (#1391) Signed-off-by: Norman Meier --- Makefile | 17 - README.md | 1 - assets/icons/footer-regular.svg | 4 - assets/icons/footer-rioters.svg | 39 -- assets/icons/footer.svg | 16 - go/pkg/networks/network.go | 1 - networks.json | 3 - package.json | 1 - packages/components/Slider.tsx | 77 --- packages/components/buttons/IconButton.tsx | 71 --- .../navigation/getNormalModeScreens.tsx | 6 - .../DragAndDropNftInReceiverView.tsx | 68 --- .../riotersFooter/DraxViewReceiverContent.tsx | 145 ----- .../riotersFooter/ExistingNftType.tsx | 123 ---- .../components/riotersFooter/NewNftType.tsx | 75 --- .../riotersFooter/NftAdjustments.tsx | 188 ------ .../riotersFooter/NftDragResizerCorner.tsx | 116 ---- .../components/riotersFooter/NftTypeTab.tsx | 85 --- .../riotersFooter/SelectedNewNft.tsx | 165 ----- .../RioterFooterNft.client.ts | 199 ------ .../RioterFooterNft.types.ts | 110 ---- packages/networks/teritori-localnet/index.ts | 1 - packages/networks/teritori-testnet/index.ts | 1 - packages/networks/teritori/index.ts | 2 - packages/networks/types.ts | 1 - .../RiotersFooter/RiotersFooterScreen.tsx | 577 ------------------ packages/utils/navigation.ts | 2 - packages/utils/sidebar.ts | 7 - packages/utils/types/nft.ts | 15 - yarn.lock | 47 -- 30 files changed, 2163 deletions(-) delete mode 100644 assets/icons/footer-regular.svg delete mode 100644 assets/icons/footer-rioters.svg delete mode 100644 assets/icons/footer.svg delete mode 100644 packages/components/Slider.tsx delete mode 100644 packages/components/buttons/IconButton.tsx delete mode 100644 packages/components/riotersFooter/DragAndDropNftInReceiverView.tsx delete mode 100644 packages/components/riotersFooter/DraxViewReceiverContent.tsx delete mode 100644 packages/components/riotersFooter/ExistingNftType.tsx delete mode 100644 packages/components/riotersFooter/NewNftType.tsx delete mode 100644 packages/components/riotersFooter/NftAdjustments.tsx delete mode 100644 packages/components/riotersFooter/NftDragResizerCorner.tsx delete mode 100644 packages/components/riotersFooter/NftTypeTab.tsx delete mode 100644 packages/components/riotersFooter/SelectedNewNft.tsx delete mode 100644 packages/contracts-clients/rioter-footer-nft/RioterFooterNft.client.ts delete mode 100644 packages/contracts-clients/rioter-footer-nft/RioterFooterNft.types.ts delete mode 100644 packages/screens/RiotersFooter/RiotersFooterScreen.tsx diff --git a/Makefile b/Makefile index 117ed255db..f2fa14afaf 100644 --- a/Makefile +++ b/Makefile @@ -16,9 +16,6 @@ DISTRIBUTOR_PACKAGE=teritori-distributor NAME_SERVICE_REPO=teritori-name-service NAME_SERVICE_PACKAGE=teritori-name-service -RIOTER_FOOTER_REPO=rioters-footer-nft -RIOTER_FOOTER_PACKAGE=rioter-footer-nft - ADDR_LIST_REPO=cw_addr_list ADDR_LIST_PACKAGE=cw-address-list @@ -156,20 +153,6 @@ $(CONTRACTS_CLIENTS_DIR)/$(NAME_SERVICE_PACKAGE): node_modules go fmt ./go/pkg/contracts/name_service_types rm -fr $(NAME_SERVICE_REPO) -.PHONY: $(CONTRACTS_CLIENTS_DIR)/$(RIOTER_FOOTER_PACKAGE) -$(CONTRACTS_CLIENTS_DIR)/$(RIOTER_FOOTER_PACKAGE): node_modules - rm -fr $(RIOTER_FOOTER_REPO) - git clone git@github.com:TERITORI/$(RIOTER_FOOTER_REPO).git - cd $(RIOTER_FOOTER_REPO) && git checkout e5a5b22cc3e72e09df6b4642d62dc21d99ca34c3 - rm -fr $@ - npx cosmwasm-ts-codegen generate \ - --plugin client \ - --schema $(RIOTER_FOOTER_REPO)/contracts/rioter_footer_nft/schema \ - --out $@ \ - --name $(RIOTER_FOOTER_PACKAGE) \ - --no-bundle - rm -fr $(RIOTER_FOOTER_REPO) - .PHONY: $(CONTRACTS_CLIENTS_DIR)/$(TOKEN_PACKAGE) $(CONTRACTS_CLIENTS_DIR)/$(TOKEN_PACKAGE): node_modules rm -fr $(TOKEN_REPO) diff --git a/README.md b/README.md index 5dab7e2a91..55e38c5533 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,6 @@ In the future (v3) it will also be a privacy first messaging application built o - Staking $TORI Tokens - Teritori Chain Governance (& Bounty Program) - Teritori Name Service - - Rioters footer v0.1 - Social Feed v0.1 - The R!OT Play2Earn Experience: "Genesis Collection" v0.1 - Org Deployer v0.1 diff --git a/assets/icons/footer-regular.svg b/assets/icons/footer-regular.svg deleted file mode 100644 index 8b9bf86b21..0000000000 --- a/assets/icons/footer-regular.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/icons/footer-rioters.svg b/assets/icons/footer-rioters.svg deleted file mode 100644 index 184374b17d..0000000000 --- a/assets/icons/footer-rioters.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/icons/footer.svg b/assets/icons/footer.svg deleted file mode 100644 index 3c0ee7ee5d..0000000000 --- a/assets/icons/footer.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/go/pkg/networks/network.go b/go/pkg/networks/network.go index f4ddc5cdfa..406b098266 100644 --- a/go/pkg/networks/network.go +++ b/go/pkg/networks/network.go @@ -68,7 +68,6 @@ type CosmosNetwork struct { RiotContractAddressGen1 string `json:"riotContractAddressGen1"` RiotSquadStakingContractAddressV1 string `json:"riotSquadStakingContractAddressV1"` RiotSquadStakingContractAddressV2 string `json:"riotSquadStakingContractAddressV2"` - RiotersFooterContractAddress string `json:"riotersFooterContractAddress"` SocialFeedContractAddress string `json:"socialFeedContractAddress"` CwAdminFactoryContractAddress string `json:"cwAdminFactoryContractAddress"` } diff --git a/networks.json b/networks.json index 0249f46298..f6d967ea00 100644 --- a/networks.json +++ b/networks.json @@ -11493,7 +11493,6 @@ "riotSquadStakingContractAddressV1": "tori1zwkmdfsc6h96jm4yqdykaw5y7ndwsvqvgh5ryxp9nxs3hccml0xqfyrm37", "riotSquadStakingContractAddressV2": "tori1kvjk9m7dk0es35y6ah0k28llllvle3n7xgvh0gh568ta0paf8awsml2xev", "distributorContractAddress": "tori1mnem0rhjaxcsghe0xw692xysra63xwwdee2wth9s0rkfwh4dxpaq76qqre", - "riotersFooterContractAddress": "tori1m6g3l3j5t988zwmp965hrhsxvm8jrkf2ulw4gmwj8hx8pd84tvcqeearsd", "secondaryDuringMintList": [ "tori1wkwy0xh89ksdgj9hr347dyd2dw7zesmtrue6kfzyml4vdtz6e5wscs7038", "tori1gflccmghzfscmxl95z43v36y0rle8v9x8kvt9na03yzywtw86amsj9nf37", @@ -11572,7 +11571,6 @@ "riotSquadStakingContractAddressV1": "", "riotSquadStakingContractAddressV2": "", "distributorContractAddress": "", - "riotersFooterContractAddress": "", "secondaryDuringMintList": [ "", "" @@ -11678,7 +11676,6 @@ "riotSquadStakingContractAddressV1": "", "riotSquadStakingContractAddressV2": "", "distributorContractAddress": "", - "riotersFooterContractAddress": "", "secondaryDuringMintList": [ "", "tori1436kxs0w2es6xlqpp9rd35e3d0cjnw4sv8j3a7483sgks29jqwgsjscd88", diff --git a/package.json b/package.json index 73a2363631..32c17bdb66 100644 --- a/package.json +++ b/package.json @@ -156,7 +156,6 @@ "react-native-reanimated": "^3.6.2", "react-native-reanimated-carousel": "4.0.0-alpha.9", "react-native-reanimated-table": "^0.0.2", - "react-native-redash": "^18.0.0", "react-native-safe-area-context": "4.8.2", "react-native-screens": "~3.29.0", "react-native-smooth-slider": "^1.3.6", diff --git a/packages/components/Slider.tsx b/packages/components/Slider.tsx deleted file mode 100644 index f31f3e7a82..0000000000 --- a/packages/components/Slider.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from "react"; -import { View, ViewStyle } from "react-native"; -import { PanGestureHandler } from "react-native-gesture-handler"; -import { useAnimatedGestureHandler } from "react-native-reanimated"; -import { clamp } from "react-native-redash"; - -const Slider: React.FC<{ - style: ViewStyle; - thumbStyle: ViewStyle; - width: number; - height: number; - widthThumb: number; - heightThumb: number; - minimumTrackTintColor: string; - maximumTrackTintColor: string; - onValueChange: (value: number) => void; - value: number; -}> = ({ - style, - thumbStyle, - width, - height, - widthThumb, - heightThumb, - minimumTrackTintColor, - maximumTrackTintColor, - onValueChange, - value, -}) => { - const onGestureEvent = useAnimatedGestureHandler({ - onStart: (_, ctx: any) => { - ctx.offsetX = value; - }, - onActive: (event, ctx) => { - onValueChange(clamp(ctx.offsetX + event.translationX, 0, width)); - }, - }); - - return ( - - - - - - - - ); -}; - -export default Slider; diff --git a/packages/components/buttons/IconButton.tsx b/packages/components/buttons/IconButton.tsx deleted file mode 100644 index 84c1b232d4..0000000000 --- a/packages/components/buttons/IconButton.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import React from "react"; -import { StyleProp, TouchableOpacity } from "react-native"; -import { SvgProps } from "react-native-svg"; - -import { SVG } from "../SVG"; -import { BoxStyle } from "../boxes/Box"; -import { SecondaryBox } from "../boxes/SecondaryBox"; - -import { - borderRadiusButton, - ButtonsSize, - heightButton, -} from "@/utils/style/buttons"; -import { primaryColor } from "@/utils/style/colors"; - -export const IconButton: React.FC<{ - width?: number; - size: ButtonsSize; - onPress?: (() => Promise) | (() => void); - squaresBackgroundColor?: string; - style?: StyleProp; - iconSVG: React.FC; - disabled?: boolean; - fullWidth?: boolean; - iconSize?: number; - iconColor?: string; - backgroundColor?: string; - borderColor?: string; - noBrokenCorners?: boolean; -}> = ({ - // If no width, the buttons will fit the content including paddingHorizontal 20 - width, - size, - onPress, - style, - iconSVG, - fullWidth = false, - iconSize = 16, - iconColor = "black", - backgroundColor = primaryColor, - borderColor, -}) => { - return ( - - - - - - ); -}; diff --git a/packages/components/navigation/getNormalModeScreens.tsx b/packages/components/navigation/getNormalModeScreens.tsx index 018b0473b1..3514e57f6a 100644 --- a/packages/components/navigation/getNormalModeScreens.tsx +++ b/packages/components/navigation/getNormalModeScreens.tsx @@ -56,7 +56,6 @@ import { RiotGameLeaderboardScreen } from "@/screens/RiotGame/RiotGameLeaderboar import { RiotGameMarketplaceScreen } from "@/screens/RiotGame/RiotGameMarketplaceScreen"; import { RiotGameMemoriesScreen } from "@/screens/RiotGame/RiotGameMemoriesScreen"; import { RiotGameScreen } from "@/screens/RiotGame/RiotGameScreen"; -import { RiotersFooterScreen } from "@/screens/RiotersFooter/RiotersFooterScreen"; import { SettingsScreen } from "@/screens/Settings/SettingsScreen"; import { StakeScreen } from "@/screens/Stake"; import { SwapScreen } from "@/screens/Swap/SwapScreen"; @@ -120,11 +119,6 @@ export const getNormalModeScreens = ({ appMode }: { appMode: AppMode }) => { component={UserPublicProfileScreen} options={{ header: () => null }} /> - null, title: screenTitle("Rioters Footer") }} - /> = memo(({ nftDroped, nftDropedAdjustment, oldNftPositions }) => { - const width = - nftDropedAdjustment.width <= 10 - ? 10 - : nftDropedAdjustment.width >= 200 - ? 200 - : nftDropedAdjustment.width; - const height = - nftDropedAdjustment.height <= 10 - ? 10 - : nftDropedAdjustment.height >= 200 - ? 200 - : nftDropedAdjustment.height; - - let borderRadius = 0; - - if (nftDropedAdjustment.borderRadius) { - borderRadius = - (nftDropedAdjustment.borderRadius * - (nftDropedAdjustment.width > nftDropedAdjustment.height - ? nftDropedAdjustment.width - : nftDropedAdjustment.height)) / - 200; - } - - return ( - { - console.log("start drag id", JSON.stringify(nftDroped)); - }} - animateSnapback={false} - dragPayload={JSON.stringify(nftDroped)} - style={{ - position: "absolute", - left: nftDropedAdjustment.x, - top: nftDropedAdjustment.y, - zIndex: oldNftPositions.length, - padding: 4, - borderColor: primaryColor, - borderWidth: 1, - }} - draggingStyle={{ opacity: 0.5 }} - > - - - ); -}); - -export default DragAndDropNftInReceiverView; diff --git a/packages/components/riotersFooter/DraxViewReceiverContent.tsx b/packages/components/riotersFooter/DraxViewReceiverContent.tsx deleted file mode 100644 index 321e771a4b..0000000000 --- a/packages/components/riotersFooter/DraxViewReceiverContent.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import React, { memo, SetStateAction, useCallback } from "react"; -import { StyleSheet, View, Image } from "react-native"; - -import DragAndDropNftInReceiverView from "./DragAndDropNftInReceiverView"; -import NftDragResizerCorner from "./NftDragResizerCorner"; -import teritorriSvg from "../../../assets/icons/networks/teritori.svg"; -import { NFT } from "../../api/marketplace/v1/marketplace"; -import { neutral33 } from "../../utils/style/colors"; -import { NFTDropedAdjustmentType, FooterNftData } from "../../utils/types/nft"; -import { SVG } from "../SVG"; - -const DraxViewReceiverContent: React.FC<{ - oldNftPositions: FooterNftData[]; - nftDroped: NFT | undefined; - nftDropedAdjustment: NFTDropedAdjustmentType | undefined; - setNftDropedAdjustment: ( - nftDropedAdjustment: SetStateAction, - ) => void; -}> = memo( - ({ - oldNftPositions, - nftDroped, - nftDropedAdjustment, - setNftDropedAdjustment, - }) => { - const handleResize = useCallback( - (adjustment: { - x?: number | undefined; - y?: number | undefined; - width: number; - height: number; - }) => { - setNftDropedAdjustment( - (nftDropedAdjustment) => - nftDropedAdjustment && { - ...nftDropedAdjustment, - ...adjustment, - }, - ); - }, - [setNftDropedAdjustment], - ); - - return ( - - - {oldNftPositions && - oldNftPositions.map((nft: FooterNftData, index: number) => { - return ( - - ); - })} - {nftDroped && nftDropedAdjustment && ( - <> - - - - - - - )} - - ); - }, -); - -export default DraxViewReceiverContent; - -// FIXME: remove StyleSheet.create -// eslint-disable-next-line no-restricted-syntax -const styles = StyleSheet.create({ - oldNftPositions: { - position: "absolute", - borderColor: neutral33, - borderWidth: 1, - padding: 4, - }, -}); diff --git a/packages/components/riotersFooter/ExistingNftType.tsx b/packages/components/riotersFooter/ExistingNftType.tsx deleted file mode 100644 index 4a6fb15fd6..0000000000 --- a/packages/components/riotersFooter/ExistingNftType.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { memo } from "react"; -import { Image, TouchableOpacity, View } from "react-native"; - -import addSvg from "../../../assets/icons/add-circle.svg"; -import nftPlaceholderImg from "../../../assets/icons/nft.png"; -import { BrandText } from "../../components/BrandText"; -import { SVG } from "../../components/SVG"; -import { neutral33, neutral77 } from "../../utils/style/colors"; - -const fakeNft = [ - { - id: "0", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "1", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "2", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "3", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "4", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "5", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "6", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "7", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "8", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "9", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, - { - id: "10", - name: "NFT name #4554", - image: nftPlaceholderImg, - }, -]; - -const ExistingNftType: React.FC = memo(() => { - return !fakeNft || fakeNft.length === 0 ? ( - <> - - You don’t have any added NFT yet - - - { - console.log("add nft"); - }} - > - - Add NFT - - - ) : ( - <> - {fakeNft.map((nft, index) => ( - - {index !== 0 && ( - - )} - {nft.name} - - - ))} - - ); -}); - -export default ExistingNftType; diff --git a/packages/components/riotersFooter/NewNftType.tsx b/packages/components/riotersFooter/NewNftType.tsx deleted file mode 100644 index 5ced325024..0000000000 --- a/packages/components/riotersFooter/NewNftType.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import React, { memo } from "react"; -import { TouchableOpacity, View } from "react-native"; - -import addSvg from "../../../assets/icons/add-circle.svg"; -import { Collection } from "../../api/marketplace/v1/marketplace"; -import { BrandText } from "../../components/BrandText"; -import { SVG } from "../../components/SVG"; -import { CollectionInfoInline } from "../collections/CollectionInfoInline"; -import { TextInputCustomBorder } from "../inputs/TextInputCustomBorder"; - -const NewNftType: React.FC<{ - searchNewNftCollection: string; - setSearchNewNftCollection: (text: string) => void; - setNftCollectionId: (text: string) => void; - newNftCollections: Collection[]; -}> = memo( - ({ - searchNewNftCollection, - setSearchNewNftCollection, - setNftCollectionId, - newNftCollections, - }) => { - return ( - - - Choose Collection - - - { - console.log("add mint new nft"); - }} - > - - Mint new NFT - - {newNftCollections.map((collection: Collection) => ( - { - setNftCollectionId(collection.id); - }} - key={collection.id} - > - - - - ))} - - ); - }, -); - -export default NewNftType; diff --git a/packages/components/riotersFooter/NftAdjustments.tsx b/packages/components/riotersFooter/NftAdjustments.tsx deleted file mode 100644 index 6e8623cc18..0000000000 --- a/packages/components/riotersFooter/NftAdjustments.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import React, { memo, SetStateAction, useEffect, useState } from "react"; -import { Image, ScrollView, StyleSheet, View } from "react-native"; - -import TrashSVG from "../../../assets/icons/trash.svg"; -import { Collection, NFT } from "../../api/marketplace/v1/marketplace"; -import { BrandText } from "../../components/BrandText"; -import { useSelectedNetworkId } from "../../hooks/useSelectedNetwork"; -import { prettyPrice } from "../../utils/coins"; -import { - neutral33, - neutral44, - neutral77, - primaryColor, - errorColor, -} from "../../utils/style/colors"; -import { NFTDropedAdjustmentType } from "../../utils/types/nft"; -import Slider from "../Slider"; -import { IconButton } from "../buttons/IconButton"; -import { PrimaryButton } from "../buttons/PrimaryButton"; -import { CollectionInfoInline } from "../collections/CollectionInfoInline"; -import { SpacerColumn } from "../spacer"; - -const NftAdjustments: React.FC<{ - nftDroped: NFT; - setNftDroped: (nftDroped: NFT | undefined) => void; - nftDropedAdjustment: NFTDropedAdjustmentType; - setNftDropedAdjustment: ( - nftDropedAdjustment: SetStateAction, - ) => void; - price: number | undefined; - setTransactionPaymentModalVisible: (visible: boolean) => void; - currentCollection: Collection; -}> = memo( - ({ - nftDroped, - setNftDroped, - nftDropedAdjustment, - setNftDropedAdjustment, - price, - setTransactionPaymentModalVisible, - currentCollection, - }) => { - const networkId = useSelectedNetworkId(); - - const [sliderValue, setSliderValue] = useState(0); - const [percentage, setPercentage] = useState(0); - - useEffect(() => { - setNftDropedAdjustment( - (nftDropedAdjustment) => - nftDropedAdjustment && { - ...nftDropedAdjustment, - borderRadius: percentage, - }, - ); - }, [nftDropedAdjustment, percentage, setNftDropedAdjustment]); - - useEffect(() => { - setPercentage((Math.round((sliderValue * 100) / 220) * 2) / 2); - }, [sliderValue]); - - return ( - - NFT info & adjustments - - - Collection - - - - - NFT artwork - - {nftDroped.name} - - - Corner radius - - {percentage}% - - - { - setSliderValue(index); - }} - value={sliderValue} - /> - - - Final Price - - {prettyPrice( - networkId, - price?.toString() || "", - "utori", // FIXME: don't hardcode - )} - - - - - - { - setNftDroped(undefined); - setNftDropedAdjustment(undefined); - }} - width={56} - size="M" - backgroundColor="#F46F761A" - style={{ borderWidth: 1, borderRadius: 6 }} - borderColor={errorColor} - /> - { - setTransactionPaymentModalVisible(true); - }} - text="Submit" - /> - - - - ); - }, -); - -export default NftAdjustments; - -// FIXME: remove StyleSheet.create -// eslint-disable-next-line no-restricted-syntax -const styles = StyleSheet.create({ - container: { - width: 220, - flex: 1, - }, - textTitle: { - fontSize: 14, - color: neutral77, - }, - separator: { - height: 1, - backgroundColor: neutral33, - marginVertical: 20, - }, - rowCenter: { - flexDirection: "row", - alignItems: "center", - justifyContent: "space-between", - }, -}); diff --git a/packages/components/riotersFooter/NftDragResizerCorner.tsx b/packages/components/riotersFooter/NftDragResizerCorner.tsx deleted file mode 100644 index 277af64921..0000000000 --- a/packages/components/riotersFooter/NftDragResizerCorner.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import React, { memo } from "react"; -import { View, ViewStyle } from "react-native"; -import { PanGestureHandler } from "react-native-gesture-handler"; -import { useAnimatedGestureHandler } from "react-native-reanimated"; -import { clamp } from "react-native-redash"; - -import { primaryColor } from "../../utils/style/colors"; -import { NFTDropedAdjustmentType, FooterNftData } from "../../utils/types/nft"; - -const NftDragResizerCorner: React.FC<{ - nftDropedAdjustment: NFTDropedAdjustmentType; - oldNftPositions: FooterNftData[]; - style: ViewStyle | ViewStyle[]; - onResize: (adjustment: { - x?: number; - y?: number; - width: number; - height: number; - }) => void; - cornerPosition: "topLeft" | "topRight" | "bottomLeft" | "bottomRight"; -}> = memo( - ({ - nftDropedAdjustment, - oldNftPositions, - style, - onResize, - cornerPosition, - }) => { - const onGestureEvent = useAnimatedGestureHandler({ - onStart: (_, ctx: any) => { - ctx.offsetX = nftDropedAdjustment.x; - ctx.offsetY = nftDropedAdjustment.y; - ctx.width = nftDropedAdjustment.width; - ctx.height = nftDropedAdjustment.height; - }, - onActive: (event, ctx) => { - const positions: { - x?: number; - y?: number; - width: number; - height: number; - } = { - width: 0, - height: 0, - }; - let x = null; - let y = null; - - switch (cornerPosition) { - case "topLeft": - x = - ctx.width - event.translationX <= 10 || - ctx.width - event.translationX >= 200 - ? null - : ctx.offsetX + event.translationX; - y = - ctx.height - event.translationY <= 10 || - ctx.height - event.translationY >= 200 - ? null - : ctx.offsetY + event.translationY; - positions.width = clamp(ctx.width - event.translationX, 10, 200); - positions.height = clamp(ctx.height - event.translationY, 10, 200); - x && (positions.x = x); - y && (positions.y = y); - break; - case "topRight": - y = - ctx.height - event.translationY <= 10 || - ctx.height - event.translationY >= 200 - ? null - : ctx.offsetY + event.translationY; - positions.width = clamp(ctx.width + event.translationX, 10, 200); - positions.height = clamp(ctx.height - event.translationY, 10, 200); - y && (positions.y = y); - break; - case "bottomLeft": - x = - ctx.width - event.translationX <= 10 || - ctx.width - event.translationX >= 200 - ? null - : ctx.offsetX + event.translationX; - positions.width = clamp(ctx.width - event.translationX, 10, 200); - positions.height = clamp(ctx.height + event.translationY, 10, 200); - x && (positions.x = x); - break; - case "bottomRight": - positions.width = clamp(ctx.width + event.translationX, 10, 200); - positions.height = clamp(ctx.height + event.translationY, 10, 200); - break; - } - onResize(positions); - }, - }); - - return ( - - - - ); - }, -); - -export default NftDragResizerCorner; diff --git a/packages/components/riotersFooter/NftTypeTab.tsx b/packages/components/riotersFooter/NftTypeTab.tsx deleted file mode 100644 index 822e56c071..0000000000 --- a/packages/components/riotersFooter/NftTypeTab.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import React, { memo } from "react"; -import { StyleSheet, TouchableOpacity, View } from "react-native"; - -import { BrandText } from "../../components/BrandText"; -import { neutral33, primaryColor } from "../../utils/style/colors"; - -const NftTypeTab: React.FC<{ - tabName: string; - setTabName: (text: string) => void; -}> = memo(({ tabName, setTabName }) => { - return ( - - - setTabName("New")}> - - - New - - - - setTabName("Existing")} - > - - - Existing - - - - - - ); -}); - -export default NftTypeTab; - -// FIXME: remove StyleSheet.create -// eslint-disable-next-line no-restricted-syntax -const styles = StyleSheet.create({ - container: { - marginTop: 12, - height: 40, - borderRadius: 10, - borderColor: neutral33, - borderWidth: 1, - }, - tab: { - width: "50%", - justifyContent: "center", - alignItems: "center", - }, - tabText: { - textAlign: "center", - fontSize: 14, - }, - tabButton: { - width: "96%", - height: "90%", - justifyContent: "center", - }, -}); diff --git a/packages/components/riotersFooter/SelectedNewNft.tsx b/packages/components/riotersFooter/SelectedNewNft.tsx deleted file mode 100644 index f07db9c7e7..0000000000 --- a/packages/components/riotersFooter/SelectedNewNft.tsx +++ /dev/null @@ -1,165 +0,0 @@ -import React, { memo, useCallback } from "react"; -import { Image, StyleSheet, TouchableOpacity, View } from "react-native"; -import { DraxList, DraxView } from "react-native-drax"; - -import shapeSvg from "../../../assets/icons/shape.svg"; -import { - Collection, - NFT, - Sort, - SortDirection, -} from "../../api/marketplace/v1/marketplace"; -import { BrandText } from "../../components/BrandText"; -import { SVG } from "../../components/SVG"; -import { useNFTs } from "../../hooks/useNFTs"; -import { alignDown } from "../../utils/align"; -import { neutral33, neutral77 } from "../../utils/style/colors"; -import { CollectionInfoInline } from "../collections/CollectionInfoInline"; -import { TextInputCustomBorder } from "../inputs/TextInputCustomBorder"; - -const SelectNewNft: React.FC<{ - nftCollectionId: string; - setNftCollectionId: (text: string) => void; - searchNft: string; - setSearchNft: (text: string) => void; - currentCollection: Collection; -}> = memo( - ({ - nftCollectionId, - setNftCollectionId, - searchNft, - setSearchNft, - currentCollection, - }) => { - const { nfts, fetchMore } = useNFTs({ - collectionId: nftCollectionId, - ownerId: "", - limit: alignDown(20, 2) || 2, - offset: 0, - sort: Sort.SORT_PRICE, - sortDirection: SortDirection.SORT_DIRECTION_ASCENDING, - attributes: [], - isListed: false, - priceRange: undefined, - }); - - const RenderItem: React.FC<{ item: NFT }> = useCallback( - ({ item }) => ( - - { - console.log("start drag id", JSON.stringify(item)); - }} - animateSnapback={false} - dragPayload={JSON.stringify(item)} - draggingStyle={{ opacity: 0.5 }} - > - - - - {item.name} - - - ), - [], - ); - - const keyExtractor = useCallback(({ name }: NFT) => name, []); - - const getItemLayout = useCallback( - (_: any, index: number) => ({ - length: 130, - offset: (130 + 12) * index, - index, - }), - [], - ); - - return ( - - - - Collection - - - - - - - - { - setNftCollectionId(""); - }} - > - - - - Choose NFT Artwork - - - - - } - numColumns={2} - columnWrapperStyle={{ justifyContent: "space-between" }} - getItemLayout={getItemLayout} - contentContainerStyle={{ width: 220, paddingTop: 20 }} - style={{ flex: 1 }} - onEndReached={() => fetchMore()} - scrollEventThrottle={16} - /> - - ); - }, -); - -export default SelectNewNft; - -// FIXME: remove StyleSheet.create -// eslint-disable-next-line no-restricted-syntax -const styles = StyleSheet.create({ - separator: { - height: 1, - backgroundColor: neutral33, - marginTop: 20, - }, -}); diff --git a/packages/contracts-clients/rioter-footer-nft/RioterFooterNft.client.ts b/packages/contracts-clients/rioter-footer-nft/RioterFooterNft.client.ts deleted file mode 100644 index 66bc9f59e0..0000000000 --- a/packages/contracts-clients/rioter-footer-nft/RioterFooterNft.client.ts +++ /dev/null @@ -1,199 +0,0 @@ -/** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.7. -* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, -* and run the @cosmwasm/ts-codegen generate command to regenerate this file. -*/ - -import { CosmWasmClient, SigningCosmWasmClient, ExecuteResult } from "@cosmjs/cosmwasm-stargate"; -import { Coin, StdFee } from "@cosmjs/amino"; -import { Addr, ConfigResponse, Config, ExecuteMsg, Uint128, NftPosition, FeeConfig, InstantiateMsg, MapSize, NftData, QueryFeeConfigResponse, QueryMapSizeResponse, QueryMsg, QueryNftCountResponse, QueryNftsResponse } from "./RioterFooterNft.types"; -export interface RioterFooterNftReadOnlyInterface { - contractAddress: string; - config: () => Promise; - queryFeeConfig: () => Promise; - queryMapSize: () => Promise; - queryNftCount: () => Promise; - queryNfts: ({ - from, - to - }: { - from: number; - to: number; - }) => Promise; -} -export class RioterFooterNftQueryClient implements RioterFooterNftReadOnlyInterface { - client: CosmWasmClient; - contractAddress: string; - - constructor(client: CosmWasmClient, contractAddress: string) { - this.client = client; - this.contractAddress = contractAddress; - this.config = this.config.bind(this); - this.queryFeeConfig = this.queryFeeConfig.bind(this); - this.queryMapSize = this.queryMapSize.bind(this); - this.queryNftCount = this.queryNftCount.bind(this); - this.queryNfts = this.queryNfts.bind(this); - } - - config = async (): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - config: {} - }); - }; - queryFeeConfig = async (): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - query_fee_config: {} - }); - }; - queryMapSize = async (): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - query_map_size: {} - }); - }; - queryNftCount = async (): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - query_nft_count: {} - }); - }; - queryNfts = async ({ - from, - to - }: { - from: number; - to: number; - }): Promise => { - return this.client.queryContractSmart(this.contractAddress, { - query_nfts: { - from, - to - } - }); - }; -} -export interface RioterFooterNftInterface extends RioterFooterNftReadOnlyInterface { - contractAddress: string; - sender: string; - updateConfig: ({ - owner - }: { - owner: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - updateFeeConfig: ({ - feePerSize - }: { - feePerSize: Uint128; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - updateMapSize: ({ - height, - width - }: { - height: Uint128; - width: Uint128; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - setWhitelistedCollection: ({ - collection, - whitelist - }: { - collection: string; - whitelist: boolean; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; - addMyNft: ({ - additional, - contractAddress, - position, - tokenId - }: { - additional: string; - contractAddress: string; - position: NftPosition; - tokenId: string; - }, fee?: number | StdFee | "auto", memo?: string, _funds?: Coin[]) => Promise; -} -export class RioterFooterNftClient extends RioterFooterNftQueryClient implements RioterFooterNftInterface { - client: SigningCosmWasmClient; - sender: string; - contractAddress: string; - - constructor(client: SigningCosmWasmClient, sender: string, contractAddress: string) { - super(client, contractAddress); - this.client = client; - this.sender = sender; - this.contractAddress = contractAddress; - this.updateConfig = this.updateConfig.bind(this); - this.updateFeeConfig = this.updateFeeConfig.bind(this); - this.updateMapSize = this.updateMapSize.bind(this); - this.setWhitelistedCollection = this.setWhitelistedCollection.bind(this); - this.addMyNft = this.addMyNft.bind(this); - } - - updateConfig = async ({ - owner - }: { - owner: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - update_config: { - owner - } - }, fee, memo, _funds); - }; - updateFeeConfig = async ({ - feePerSize - }: { - feePerSize: Uint128; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - update_fee_config: { - fee_per_size: feePerSize - } - }, fee, memo, _funds); - }; - updateMapSize = async ({ - height, - width - }: { - height: Uint128; - width: Uint128; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - update_map_size: { - height, - width - } - }, fee, memo, _funds); - }; - setWhitelistedCollection = async ({ - collection, - whitelist - }: { - collection: string; - whitelist: boolean; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - set_whitelisted_collection: { - collection, - whitelist - } - }, fee, memo, _funds); - }; - addMyNft = async ({ - additional, - contractAddress, - position, - tokenId - }: { - additional: string; - contractAddress: string; - position: NftPosition; - tokenId: string; - }, fee: number | StdFee | "auto" = "auto", memo?: string, _funds?: Coin[]): Promise => { - return await this.client.execute(this.sender, this.contractAddress, { - add_my_nft: { - additional, - contract_address: contractAddress, - position, - token_id: tokenId - } - }, fee, memo, _funds); - }; -} \ No newline at end of file diff --git a/packages/contracts-clients/rioter-footer-nft/RioterFooterNft.types.ts b/packages/contracts-clients/rioter-footer-nft/RioterFooterNft.types.ts deleted file mode 100644 index 2852762834..0000000000 --- a/packages/contracts-clients/rioter-footer-nft/RioterFooterNft.types.ts +++ /dev/null @@ -1,110 +0,0 @@ -/** -* This file was automatically generated by @cosmwasm/ts-codegen@0.35.7. -* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, -* and run the @cosmwasm/ts-codegen generate command to regenerate this file. -*/ - -export type Addr = string; -export interface ConfigResponse { - owner: Addr; - [k: string]: unknown; -} -export interface Config { - owner: Addr; - [k: string]: unknown; -} -export type ExecuteMsg = { - update_config: { - owner: string; - [k: string]: unknown; - }; -} | { - update_fee_config: { - fee_per_size: Uint128; - [k: string]: unknown; - }; -} | { - update_map_size: { - height: Uint128; - width: Uint128; - [k: string]: unknown; - }; -} | { - set_whitelisted_collection: { - collection: string; - whitelist: boolean; - [k: string]: unknown; - }; -} | { - add_my_nft: { - additional: string; - contract_address: string; - position: NftPosition; - token_id: string; - [k: string]: unknown; - }; -}; -export type Uint128 = string; -export interface NftPosition { - height: Uint128; - width: Uint128; - x: Uint128; - y: Uint128; - [k: string]: unknown; -} -export interface FeeConfig { - fee_per_size: Uint128; - [k: string]: unknown; -} -export interface InstantiateMsg { - fee_per_size: Uint128; - height: Uint128; - width: Uint128; - [k: string]: unknown; -} -export interface MapSize { - height: Uint128; - width: Uint128; - [k: string]: unknown; -} -export interface NftData { - additional: string; - contract_address: string; - position: NftPosition; - token_id: string; - [k: string]: unknown; -} -export interface QueryFeeConfigResponse { - fee_per_size: Uint128; - [k: string]: unknown; -} -export interface QueryMapSizeResponse { - height: Uint128; - width: Uint128; - [k: string]: unknown; -} -export type QueryMsg = { - config: { - [k: string]: unknown; - }; -} | { - query_fee_config: { - [k: string]: unknown; - }; -} | { - query_map_size: { - [k: string]: unknown; - }; -} | { - query_nft_count: { - [k: string]: unknown; - }; -} | { - query_nfts: { - from: number; - to: number; - [k: string]: unknown; - }; -}; -export type QueryNftCountResponse = number; -export type QueryNftsResponse = NftData[]; \ No newline at end of file diff --git a/packages/networks/teritori-localnet/index.ts b/packages/networks/teritori-localnet/index.ts index d8738204ad..518544a2a8 100644 --- a/packages/networks/teritori-localnet/index.ts +++ b/packages/networks/teritori-localnet/index.ts @@ -56,7 +56,6 @@ export const teritoriLocalnetNetwork: NetworkInfo = { riotSquadStakingContractAddressV1: "", riotSquadStakingContractAddressV2: "", distributorContractAddress: "", - riotersFooterContractAddress: "", secondaryDuringMintList: [ nameServiceContractAddress, riotContractAddressGen1, diff --git a/packages/networks/teritori-testnet/index.ts b/packages/networks/teritori-testnet/index.ts index e0ed91553c..4aa32d14d0 100644 --- a/packages/networks/teritori-testnet/index.ts +++ b/packages/networks/teritori-testnet/index.ts @@ -90,7 +90,6 @@ export const teritoriTestnetNetwork: CosmosNetworkInfo = { riotSquadStakingContractAddressV1: "", riotSquadStakingContractAddressV2: "", distributorContractAddress: "", - riotersFooterContractAddress: "", secondaryDuringMintList: [ premiumFeedFeature.membershipContractAddress, nameServiceContractAddress, diff --git a/packages/networks/teritori/index.ts b/packages/networks/teritori/index.ts index 8df8010c78..f836a12770 100644 --- a/packages/networks/teritori/index.ts +++ b/packages/networks/teritori/index.ts @@ -73,8 +73,6 @@ export const teritoriNetwork: CosmosNetworkInfo = { "tori1kvjk9m7dk0es35y6ah0k28llllvle3n7xgvh0gh568ta0paf8awsml2xev", distributorContractAddress: "tori1mnem0rhjaxcsghe0xw692xysra63xwwdee2wth9s0rkfwh4dxpaq76qqre", - riotersFooterContractAddress: - "tori1m6g3l3j5t988zwmp965hrhsxvm8jrkf2ulw4gmwj8hx8pd84tvcqeearsd", secondaryDuringMintList: [ nameServiceContractAddress, riotContractAddressGen1, diff --git a/packages/networks/types.ts b/packages/networks/types.ts index 6349851cdb..b1be6efb2d 100644 --- a/packages/networks/types.ts +++ b/packages/networks/types.ts @@ -58,7 +58,6 @@ export type CosmosNetworkInfo = NetworkInfoBase & { vaultContractAddress?: string; riotSquadStakingContractAddressV1?: string; riotSquadStakingContractAddressV2?: string; - riotersFooterContractAddress?: string; socialFeedCodeId?: number; socialFeedContractAddress?: string; daoCw20CodeId?: number; diff --git a/packages/screens/RiotersFooter/RiotersFooterScreen.tsx b/packages/screens/RiotersFooter/RiotersFooterScreen.tsx deleted file mode 100644 index 1259715c05..0000000000 --- a/packages/screens/RiotersFooter/RiotersFooterScreen.tsx +++ /dev/null @@ -1,577 +0,0 @@ -import React, { useCallback, useEffect, useState } from "react"; -import { - Image, - NativeScrollEvent, - ScrollView, - StyleSheet, - View, -} from "react-native"; -import { DraxProvider, DraxView } from "react-native-drax"; - -import teritorriSvg from "../../../assets/icons/networks/teritori.svg"; -import DraxViewReceiverContent from "../../components/riotersFooter/DraxViewReceiverContent"; -import ExistingNftType from "../../components/riotersFooter/ExistingNftType"; -import NewNftType from "../../components/riotersFooter/NewNftType"; -import NftAdjustments from "../../components/riotersFooter/NftAdjustments"; -import NftTypeTab from "../../components/riotersFooter/NftTypeTab"; -import SelectNewNft from "../../components/riotersFooter/SelectedNewNft"; -import useSelectedWallet from "../../hooks/useSelectedWallet"; - -import { - Collection, - MintState, - NFT, - Sort, - SortDirection, -} from "@/api/marketplace/v1/marketplace"; -import { BrandText } from "@/components/BrandText"; -import { SVG } from "@/components/SVG"; -import { ScreenContainer } from "@/components/ScreenContainer"; -import { SecondaryButton } from "@/components/buttons/SecondaryButton"; -import { TransactionPaymentModal } from "@/components/modals/transaction/TransactionPaymentModal"; -import { TransactionPendingModal } from "@/components/modals/transaction/TransactionPendingModal"; -import { TransactionSuccessModal } from "@/components/modals/transaction/TransactionSuccessModal"; -import { - RioterFooterNftClient, - RioterFooterNftQueryClient, -} from "@/contracts-clients/rioter-footer-nft/RioterFooterNft.client"; -import { Uint128 } from "@/contracts-clients/rioter-footer-nft/RioterFooterNft.types"; -import { TeritoriBunkerMinterQueryClient } from "@/contracts-clients/teritori-bunker-minter/TeritoriBunkerMinter.client"; -import { TeritoriNftQueryClient } from "@/contracts-clients/teritori-nft/TeritoriNft.client"; -import { useCollections } from "@/hooks/useCollections"; -import { useSelectedNetworkId } from "@/hooks/useSelectedNetwork"; -import { - getCosmosNetwork, - mustGetNonSigningCosmWasmClient, - parseNftId, -} from "@/networks"; -import { getKeplrSigningCosmWasmClient } from "@/networks/signer"; -import { web3ToWeb2URI } from "@/utils/ipfs"; -import { neutral33, neutral77 } from "@/utils/style/colors"; -import { fontSemibold14 } from "@/utils/style/fonts"; -import { FooterNftData, NFTDropedAdjustmentType } from "@/utils/types/nft"; - -export const RiotersFooterScreen: React.FC = () => { - const selectedNetworkId = useSelectedNetworkId(); - const [tabName, setTabName] = useState("New"); - const [searchNewNftCollection, setSearchNewNftCollection] = - useState(""); - const [searchNft, setSearchNft] = useState(""); - - const [nftCollectionId, setNftCollectionId] = useState(""); - const [currentCollection, setCurrentCollection] = useState< - Collection | undefined - >(undefined); - - const [nftDroped, setNftDroped] = useState(undefined); - const [nftDropedAdjustment, setNftDropedAdjustment] = useState< - NFTDropedAdjustmentType | undefined - >(undefined); - - const [oldNftPositions, setOldNftPositions] = useState([]); - - const [price, setPrice] = useState(undefined); - - const [isPreview, setIsPreview] = useState(false); - - const [transactionPaymentModalVisible, setTransactionPaymentModalVisible] = - useState(false); - const [transactionPendingModalVisible, setTransactionPendingModalVisible] = - useState(false); - const [transactionSuccessModalVisible, setTransactionSuccessModalVisible] = - useState(false); - const [transactionHash, setTransactionHash] = useState(""); - const [client, setClient] = useState( - undefined, - ); - const [mapSize, setMapsize] = useState<{ height: Uint128; width: Uint128 }>({ - height: "552", - width: "1030", - }); - - const wallet = useSelectedWallet(); - - const getFeeConfig = useCallback(async () => { - if (client) { - const { fee_per_size } = await client.queryFeeConfig(); - return parseFloat(fee_per_size); - } - return 1; - }, [client]); - - const getPrice = useCallback(async () => { - if (client && nftDropedAdjustment) { - const feePerSize = await getFeeConfig(); - return ( - nftDropedAdjustment.width * nftDropedAdjustment.height * feePerSize - ); - } - return undefined; - }, [client, nftDropedAdjustment, getFeeConfig]); - - useEffect(() => { - const effect = async () => { - setPrice(await getPrice()); - }; - effect(); - }, [nftDropedAdjustment, client, getPrice]); - - useEffect(() => { - const effect = async () => { - const cosmwasmClient = - await mustGetNonSigningCosmWasmClient(selectedNetworkId); - const network = getCosmosNetwork(selectedNetworkId); - const rioterFooterClient = new RioterFooterNftQueryClient( - cosmwasmClient, - network?.riotersFooterContractAddress || "", - ); - setClient(rioterFooterClient); - setMapsize(await rioterFooterClient.queryMapSize()); - }; - effect(); - }, [selectedNetworkId]); - - useEffect(() => { - const effect = async () => { - if (!client) { - return; - } - try { - const nftCount = await client.queryNftCount(); - const cosmwasmClient = - await getKeplrSigningCosmWasmClient(selectedNetworkId); - const allNfts: FooterNftData[] = []; - for (let i = 0; i < nftCount; i += 11) { - const nfts = await client.queryNfts({ - from: i, - to: i + 10 > nftCount ? nftCount : i + 10, - }); - const newNfts: FooterNftData[] = []; - for (const nft of nfts) { - const nftClient = new TeritoriNftQueryClient( - cosmwasmClient, - nft.contract_address, - ); - const nftInfo = await nftClient.nftInfo({ - tokenId: nft.token_id, - }); - if (!nftInfo || !nftInfo.token_uri) { - continue; - } - const ipfs = web3ToWeb2URI(nftInfo.token_uri); - const response = await fetch(ipfs); - const responseJSON = await response.json(); - newNfts.push({ - ...nft, - imageUri: responseJSON.image.startsWith("ipfs://") - ? web3ToWeb2URI(responseJSON.image) - : responseJSON.image, - // FIXME: sanitize - // eslint-disable-next-line no-restricted-syntax - borderRadius: JSON.parse(nft.additional).borderRadius || 0, - }); - } - allNfts.push(...newNfts); - } - setOldNftPositions(allNfts); - } catch (e) { - console.log(e); - } - }; - effect(); - }, [client, selectedNetworkId]); - - const { collections, fetchMore: fetchMoreCollections } = useCollections({ - networkId: selectedNetworkId, - sortDirection: SortDirection.SORT_DIRECTION_DESCENDING, - upcoming: false, - sort: Sort.SORT_VOLUME, - limit: 24, - offset: 0, - mintState: MintState.MINT_STATE_UNSPECIFIED, - }); - - useEffect(() => { - const current: Collection | undefined = collections.find( - (collection) => collection.id === nftCollectionId, - ); - setCurrentCollection(current); - }, [collections, nftCollectionId]); - - const MapNftType = new Map([ - [ - "New", - , - ], - ["Existing", ], - ]); - - const handleBuy = useCallback(async () => { - setTransactionPaymentModalVisible(false); - const finalPrice = await getPrice(); - if (!nftDropedAdjustment || finalPrice === undefined || !wallet) return; - const cosmwasmClientSignIn = - await getKeplrSigningCosmWasmClient(selectedNetworkId); - const network = getCosmosNetwork(selectedNetworkId); - const rioterFooterClient = new RioterFooterNftClient( - cosmwasmClientSignIn, - wallet.address, - network?.riotersFooterContractAddress || "", - ); - if (!rioterFooterClient) return; - setTransactionPendingModalVisible(true); - try { - const [, nftMinterContractAddress, nftTokenId] = parseNftId( - nftDroped?.id, - ); - if (!nftMinterContractAddress || !nftTokenId) { - console.log("nftMinterContractAddress or nftTokenId is undefined"); - return; - } - const cosmwasmClient = - await mustGetNonSigningCosmWasmClient(selectedNetworkId); - const minterClient = new TeritoriBunkerMinterQueryClient( - cosmwasmClient, - nftMinterContractAddress.toString(), - ); - const nftContractAddress = (await minterClient.config()).nft_addr; - const response = await rioterFooterClient.addMyNft( - { - contractAddress: nftContractAddress, - tokenId: nftTokenId, - additional: JSON.stringify({ - borderRadius: nftDropedAdjustment.borderRadius, - }), - position: { - x: Math.ceil(nftDropedAdjustment.x || 0).toString(), - y: Math.ceil(nftDropedAdjustment.y || 0).toString(), - width: Math.ceil(nftDropedAdjustment.width || 0).toString(), - height: Math.ceil(nftDropedAdjustment.height || 0).toString(), - }, - }, - "auto", - undefined, - [ - { - amount: finalPrice.toString(), - denom: "utori", // FIXME: don't harcode - }, - ], - ); - setTransactionHash(response.transactionHash); - setTransactionPendingModalVisible(false); - setTransactionSuccessModalVisible(true); - } catch (e) { - setTransactionPendingModalVisible(false); - console.log("error", e); - } - }, [getPrice, nftDroped?.id, nftDropedAdjustment, selectedNetworkId, wallet]); - - const isCloseToBottom = useCallback( - ({ layoutMeasurement, contentOffset, contentSize }: NativeScrollEvent) => { - const paddingToBottom = 60; - return ( - layoutMeasurement.height + contentOffset.y >= - contentSize.height - paddingToBottom - ); - }, - [], - ); - - const renderContent = useCallback( - () => - oldNftPositions && ( - - ), - [oldNftPositions, nftDroped, nftDropedAdjustment], - ); - - const onReceiveDragDrop = useCallback( - (event: any) => { - // FIXME: sanitize - // eslint-disable-next-line no-restricted-syntax - const nft: NFT = JSON.parse(event.dragged.payload); - if ( - !nftDroped || - (nftDroped && nftDroped.name === event.dragged.payload) - ) { - if (!nftDroped) { - setNftDroped(nft); - } - } - setNftDropedAdjustment({ - width: 104, - height: 104, - borderRadius: 0, - ...nftDropedAdjustment, - x: event.receiver.receiveOffset.x - event.dragged.grabOffset.x, - y: event.receiver.receiveOffset.y - event.dragged.grabOffset.y, - }); - }, - [nftDroped, nftDropedAdjustment], - ); - - return ( - - {!isPreview ? ( - - - - {!nftCollectionId ? ( - <> - - - NFT type for the Rioters’ Footer - - - - - { - if (tabName === "New" && isCloseToBottom(nativeEvent)) { - fetchMoreCollections(24); - } - }} - scrollEventThrottle={16} - > - - {MapNftType.get(tabName)} - - - - ) : nftDroped && nftDropedAdjustment && currentCollection ? ( - - ) : ( - currentCollection && ( - - ) - )} - - - - - Choose the exact position in footer - - - { - setIsPreview(true); - }} - width={126} - size="M" - /> - - - - - - - ) : ( - - - { - setIsPreview(false); - }} - width={126} - size="M" - /> - - - - {oldNftPositions && - oldNftPositions.map((nft: FooterNftData, index: number) => ( - - ))} - {nftDroped && nftDropedAdjustment && ( - - - - )} - - - )} - {/* ====== "Buy this NFT" three modals*/} - {/* TODO: Handle these 3 modales with a component, or a hook - - {/* ----- Modal to process payment*/} - {price !== undefined && ( - setTransactionPaymentModalVisible(false)} - visible={transactionPaymentModalVisible} - price={price.toString()} - priceDenom="utori" // FIXME: don't hardcode - label="Pay $Tori" - textComponent={ - - - You are about to put a{" "} - - {nftDroped?.name} - - {" "} - to Rioters footer - - - } - /> - )} - - {/* ----- Modal with loader, witing for wallet approbation*/} - setTransactionPendingModalVisible(false)} - /> - - {/* ----- Success modal*/} - - - You successfully puted{" "} - - {nftDroped?.name} - - {" "} - to Rioters footer - - - } - onClose={() => setTransactionSuccessModalVisible(false)} - /> - - ); -}; - -// FIXME: remove StyleSheet.create -// eslint-disable-next-line no-restricted-syntax -const styles = StyleSheet.create({ - container: { - flex: 1, - flexDirection: "row", - marginLeft: -110, - width: "100%", - }, - menu: { - width: 240, - paddingTop: 24, - borderRightWidth: 1, - borderColor: neutral33, - }, - separator: { height: 1, backgroundColor: neutral33, marginTop: 16 }, - headerChosePosition: { - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - marginTop: 24, - marginBottom: 16, - width: "100%", - }, - chosePositionContainer: { - borderRadius: 12, - borderWidth: 1, - borderColor: neutral33, - backgroundColor: "black", - alignSelf: "center", - overflow: "hidden", - }, - oldNftPositions: { - position: "absolute", - borderWidth: 0, - padding: 4, - }, -}); diff --git a/packages/utils/navigation.ts b/packages/utils/navigation.ts index adff9bbb23..def597c6a3 100644 --- a/packages/utils/navigation.ts +++ b/packages/utils/navigation.ts @@ -29,7 +29,6 @@ export type RootStackParamList = { GovernanceProposal: { id: string; }; - RiotersFooter: undefined; Launchpad: undefined; LaunchpadApply: undefined; @@ -196,7 +195,6 @@ const navConfig: { Governance: "governance", GovernanceProposal: "governance/:id", UserPublicProfile: "user/:id/:tab?", - RiotersFooter: "rioters-footer", // === RiotGame RiotGame: "riot-game", diff --git a/packages/utils/sidebar.ts b/packages/utils/sidebar.ts index f7451e447d..ec80f3c88b 100644 --- a/packages/utils/sidebar.ts +++ b/packages/utils/sidebar.ts @@ -2,7 +2,6 @@ import { SidebarRecordType } from "./types/sidebar"; import daoSVG from "../../assets/icons/dao.svg"; import dappStoreSVG from "../../assets/icons/dapp-store.svg"; import feedSVG from "../../assets/icons/feed.svg"; -import rioterFooterSVG from "../../assets/icons/footer-rioters.svg"; import governanceSVG from "../../assets/icons/governance.svg"; import gridSVG from "../../assets/icons/grid.svg"; import launchpadApplySVG from "../../assets/icons/launchpad-apply.svg"; @@ -136,12 +135,6 @@ export const SIDEBAR_LIST: SidebarRecordType = { route: "Projects", icon: projectsProgramSVG, }, - riotersFooter: { - title: "Rioters Footer", - id: "Rioters Footer", - route: "ComingSoon", - icon: rioterFooterSVG, - }, DAppsStore: { title: "dApp Store", id: "dApp Store", diff --git a/packages/utils/types/nft.ts b/packages/utils/types/nft.ts index 81bca29e15..33055a7837 100644 --- a/packages/utils/types/nft.ts +++ b/packages/utils/types/nft.ts @@ -1,24 +1,9 @@ -import { NftData } from "../../contracts-clients/rioter-footer-nft/RioterFooterNft.types"; - export interface NFTAttribute { trait_type: string; value: string; display_type?: string; } -export type NFTDropedAdjustmentType = { - x: number; - y: number; - width: number; - height: number; - borderRadius: number; -}; - -export type FooterNftData = NftData & { - imageUri: string; - borderRadius: number; -}; - export interface NFTInfo { name: string; description: string; diff --git a/yarn.lock b/yarn.lock index 764cde2450..240fc5ed44 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7323,13 +7323,6 @@ __metadata: languageName: node linkType: hard -"abs-svg-path@npm:^0.1.1": - version: 0.1.1 - resolution: "abs-svg-path@npm:0.1.1" - checksum: af1a167c09e8bdb76c80adca7333f3d828e5b50e37b9702aa03675e271919e7b1eeaa35cce939970ecba14769953b7465ea34c2129ab683ddff9d973a07f164f - languageName: node - linkType: hard - "accepts@npm:^1.3.7, accepts@npm:^1.3.8, accepts@npm:~1.3.5, accepts@npm:~1.3.7": version: 1.3.8 resolution: "accepts@npm:1.3.8" @@ -16242,15 +16235,6 @@ __metadata: languageName: node linkType: hard -"normalize-svg-path@npm:^1.0.1": - version: 1.1.0 - resolution: "normalize-svg-path@npm:1.1.0" - dependencies: - svg-arc-to-cubic-bezier: ^3.0.0 - checksum: 106e108b2f99e9e222a1c6edfc859523c6c3c2b0a6ba64743ed08af120b23b9bc2c16682bc2ae043a24c011c34c8252376c68525cf11735c6f110b571740eb2e - languageName: node - linkType: hard - "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" @@ -16776,13 +16760,6 @@ __metadata: languageName: node linkType: hard -"parse-svg-path@npm:^0.1.2": - version: 0.1.2 - resolution: "parse-svg-path@npm:0.1.2" - checksum: bba7d4b4207fcc9eaf553b0d34db96ea8a1173635bc94528b5b66e1581902d4792d8d6229103764f01af4d839274234e97a4fa1c6f0fe7dcce195383848cec56 - languageName: node - linkType: hard - "parsel-js@npm:1.1.1": version: 1.1.1 resolution: "parsel-js@npm:1.1.1" @@ -17900,22 +17877,6 @@ __metadata: languageName: node linkType: hard -"react-native-redash@npm:^18.0.0": - version: 18.1.3 - resolution: "react-native-redash@npm:18.1.3" - dependencies: - abs-svg-path: ^0.1.1 - normalize-svg-path: ^1.0.1 - parse-svg-path: ^0.1.2 - peerDependencies: - react: "*" - react-native: "*" - react-native-gesture-handler: "*" - react-native-reanimated: ">=2.0.0" - checksum: 8ef94db8d05b29c76ff05e095233a94dcb8d9cf1f1ae569a27b55c3f83c0224a8fd2d36228c9a36eb74c6ed32d0e1d5019ec7a3154dc0ee5ab8433fe3bbbde2a - languageName: node - linkType: hard - "react-native-safe-area-context@npm:4.8.2": version: 4.8.2 resolution: "react-native-safe-area-context@npm:4.8.2" @@ -20044,13 +20005,6 @@ __metadata: languageName: node linkType: hard -"svg-arc-to-cubic-bezier@npm:^3.0.0": - version: 3.2.0 - resolution: "svg-arc-to-cubic-bezier@npm:3.2.0" - checksum: 55bf17756d558b9c0daddf636a6c9f2fe01fd5ac412229dfa2d4b29740226a82c980bcd3b5eb09ce311cbea282106c7549d97f8c8dba3a5a7b75f786bcb5e155 - languageName: node - linkType: hard - "svg-parser@npm:^2.0.4": version: 2.0.4 resolution: "svg-parser@npm:2.0.4" @@ -20325,7 +20279,6 @@ __metadata: react-native-reanimated: ^3.6.2 react-native-reanimated-carousel: 4.0.0-alpha.9 react-native-reanimated-table: ^0.0.2 - react-native-redash: ^18.0.0 react-native-safe-area-context: 4.8.2 react-native-screens: ~3.29.0 react-native-smooth-slider: ^1.3.6