From 0776e733f6dd9ac08c12481a11f1047fa29beee9 Mon Sep 17 00:00:00 2001 From: KryptoJ Date: Tue, 11 Oct 2022 21:46:42 +1100 Subject: [PATCH] Make address linkable to marketplace profile url --- src/lib/discord/notifyDiscordSale.ts | 16 +++++++++++++--- src/lib/marketplaces/alphaArt.ts | 2 ++ src/lib/marketplaces/digitalEyes.ts | 2 ++ src/lib/marketplaces/exchangeArt.ts | 2 ++ src/lib/marketplaces/magicEden.ts | 1 + src/lib/marketplaces/openSea.ts | 1 + src/lib/marketplaces/solanart.ts | 2 ++ src/lib/marketplaces/solsea.ts | 2 ++ src/lib/marketplaces/types.ts | 1 + 9 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/lib/discord/notifyDiscordSale.ts b/src/lib/discord/notifyDiscordSale.ts index fa3f31b..fc624ca 100644 --- a/src/lib/discord/notifyDiscordSale.ts +++ b/src/lib/discord/notifyDiscordSale.ts @@ -3,7 +3,7 @@ import Discord, { MessageEmbed, TextChannel, } from "discord.js"; -import { NFTSale, SaleMethod } from "lib/marketplaces"; +import { Marketplace, NFTSale, SaleMethod } from "lib/marketplaces"; import truncateForAddress from "lib/truncateForAddress"; import logger from "lib/logger"; import { fetchDiscordChannel } from "./index"; @@ -80,12 +80,14 @@ export default async function notifyDiscordSale( }, { name: "Buyer", - value: truncateForAddress(nftSale.buyer), + value: formatAddress(marketplace, nftSale.buyer), inline: true, }, { name: "Seller", - value: nftSale.seller ? truncateForAddress(nftSale.seller) : "unknown", + value: nftSale.seller + ? formatAddress(marketplace, nftSale.seller) + : "unknown", inline: true, }, ], @@ -113,3 +115,11 @@ export default async function notifyDiscordSale( status.totalNotified++; } } + +function formatAddress(marketplace: Marketplace, address: string): string { + if (!address) { + return ""; + } + + return `[${truncateForAddress(address)}](${marketplace.profileURL(address)})`; +} diff --git a/src/lib/marketplaces/alphaArt.ts b/src/lib/marketplaces/alphaArt.ts index 73fef1b..b2bc0d0 100644 --- a/src/lib/marketplaces/alphaArt.ts +++ b/src/lib/marketplaces/alphaArt.ts @@ -6,6 +6,8 @@ const alphaArt: Marketplace = { iconURL: "https://alpha.art/favicon.ico", programId: ["HZaWndaNWHFDd9Dhk5pqUUtsmoBCqzb1MLu3NAh1VX6B"], itemURL: (token: String) => `https://alpha.art/t/${token}`, + profileURL: (address: String) => + `https://explorer.solana.com/address/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this, 1); }, diff --git a/src/lib/marketplaces/digitalEyes.ts b/src/lib/marketplaces/digitalEyes.ts index 17bac38..a4e51cb 100644 --- a/src/lib/marketplaces/digitalEyes.ts +++ b/src/lib/marketplaces/digitalEyes.ts @@ -6,6 +6,8 @@ const digitalEyes: Marketplace = { programId: ["A7p8451ktDCHq5yYaHczeLMYsjRsAkzc3hCXcSrwYHU7"], iconURL: "https://digitaleyes.market/apple-touch-icon.png", itemURL: (token: String) => `https://digitaleyes.market/item/${token}`, + profileURL: (address: String) => + `https://explorer.solana.com/address/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this, 1); }, diff --git a/src/lib/marketplaces/exchangeArt.ts b/src/lib/marketplaces/exchangeArt.ts index f6a9c4e..c815c91 100644 --- a/src/lib/marketplaces/exchangeArt.ts +++ b/src/lib/marketplaces/exchangeArt.ts @@ -6,6 +6,8 @@ const exchangeArt: Marketplace = { programId: ["AmK5g2XcyptVLCFESBCJqoSfwV3znGoVYQnqEnaAZKWn"], iconURL: "https://cdn.exchange.art/static/apple-meta-logo.png", itemURL: (token: String) => `https://exchange.art/single/${token}`, + profileURL: (address: String) => + `https://explorer.solana.com/address/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this); }, diff --git a/src/lib/marketplaces/magicEden.ts b/src/lib/marketplaces/magicEden.ts index 3c100a2..f695095 100644 --- a/src/lib/marketplaces/magicEden.ts +++ b/src/lib/marketplaces/magicEden.ts @@ -9,6 +9,7 @@ const magicEden: Marketplace = { ], iconURL: "https://www.magiceden.io/img/favicon.png", itemURL: (token: String) => `https://magiceden.io/item-details/${token}`, + profileURL: (address: String) => `https://magiceden.io/u/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this); }, diff --git a/src/lib/marketplaces/openSea.ts b/src/lib/marketplaces/openSea.ts index b34b58d..df5f10e 100644 --- a/src/lib/marketplaces/openSea.ts +++ b/src/lib/marketplaces/openSea.ts @@ -7,6 +7,7 @@ const openSea: Marketplace = { iconURL: "https://storage.googleapis.com/opensea-static/Logomark/Logomark-Blue.png", itemURL: (token: String) => `https://opensea.io/assets/solana/${token}`, + profileURL: (address: String) => `https://opensea.io/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this); }, diff --git a/src/lib/marketplaces/solanart.ts b/src/lib/marketplaces/solanart.ts index 3dd2b32..e6597d5 100644 --- a/src/lib/marketplaces/solanart.ts +++ b/src/lib/marketplaces/solanart.ts @@ -6,6 +6,8 @@ const solanart: Marketplace = { programId: ["CJsLwbP1iu5DuUikHEJnLfANgKy6stB2uFgvBBHoyxwz"], iconURL: "https://solanart.io/logo192.png", itemURL: (token: String) => `https://solanart.io/nft/${token}`, + profileURL: (address: String) => + `https://explorer.solana.com/address/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this); }, diff --git a/src/lib/marketplaces/solsea.ts b/src/lib/marketplaces/solsea.ts index 0ae517a..d880eb4 100644 --- a/src/lib/marketplaces/solsea.ts +++ b/src/lib/marketplaces/solsea.ts @@ -6,6 +6,8 @@ const solsea: Marketplace = { programId: ["617jbWo616ggkDxvW1Le8pV38XLbVSyWY8ae6QUmGBAU"], iconURL: "https://solsea.io/logo_solo.svg", itemURL: (token: String) => `https://solsea.io/nft/${token}`, + profileURL: (address: String) => + `https://explorer.solana.com/address/${address}`, parseNFTSale(web3Conn, txResp): Promise { return parseNFTSaleOnTx(web3Conn, txResp, this, 0); }, diff --git a/src/lib/marketplaces/types.ts b/src/lib/marketplaces/types.ts index aa03524..079d8c0 100644 --- a/src/lib/marketplaces/types.ts +++ b/src/lib/marketplaces/types.ts @@ -11,6 +11,7 @@ export interface Marketplace { programId: string[]; iconURL: string; itemURL: (token: String) => string; + profileURL: (address: String) => string; parseNFTSale: ( web3Conn: Connection, tx: ParsedConfirmedTransaction