diff --git a/emails/AccountCreatedReferral.ts b/emails/AccountCreatedReferral.ts
deleted file mode 100644
index 32d8c978..00000000
--- a/emails/AccountCreatedReferral.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Events } from '@nft/webhook'
-import invariant from 'ts-invariant'
-
-export default function AccountCreatedReferral({
- address,
- username,
- referrer,
-}: Events['ACCOUNT_CREATED']): {
- html: string
- subject: string
- to: string
-} | null {
- invariant(process.env.NEXT_PUBLIC_BASE_URL)
- if (!referrer?.email) return null
- return {
- to: referrer.email,
- subject: `${
- username || address
- } successfully registered with your referral link`,
- html: `Hi ${referrer.username || referrer.address},
-
-We are pleased to let you know that ${
- username || address
- } successfully registered on ${
- process.env.NEXT_PUBLIC_BASE_URL
- } with your referral link.
-
`,
- }
-}
diff --git a/emails/BidAccepted.ts b/emails/BidAccepted.ts
deleted file mode 100644
index c81226f1..00000000
--- a/emails/BidAccepted.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { BigNumber } from '@ethersproject/bignumber'
-import { formatUnits } from '@ethersproject/units'
-import { Events } from '@nft/webhook'
-import invariant from 'ts-invariant'
-
-export default function BidAccepted({
- unitPrice,
- currency,
- quantity,
- buyer,
- seller,
- offer: { asset, type },
-}: Events['TRADE_CREATED']): {
- html: string
- subject: string
- to: string
-} | null {
- invariant(process.env.NEXT_PUBLIC_BASE_URL)
- if (type !== 'BUY') return null
- if (!buyer?.email) return null
- return {
- to: buyer.email,
- subject: `Your bid for ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of ${asset.name} for ${formatUnits(unitPrice, currency.decimals)} ${
- currency.symbol
- }${BigNumber.from(quantity).gt(1) ? ' each' : ''} has been accepted`,
- html: `Hi ${buyer.username || buyer.address},
-
- We are pleased to let you know that your bid for ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of the NFT ${asset.name} for ${formatUnits(
- unitPrice,
- currency.decimals,
- )} ${currency.symbol}${
- BigNumber.from(quantity).gt(1) ? ' each' : ''
- } has been accepted by ${
- seller.username || seller.address
- }.
-
- The NFT ownership has been transferred. No additional actions are required on your side.
-
- View my NFT
`,
- }
-}
diff --git a/emails/BidCreated.ts b/emails/BidCreated.ts
deleted file mode 100644
index 9ac6c016..00000000
--- a/emails/BidCreated.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { BigNumber } from '@ethersproject/bignumber'
-import { formatUnits } from '@ethersproject/units'
-import { Events } from '@nft/webhook'
-import invariant from 'ts-invariant'
-import { formatDate } from '../utils'
-
-export default function BidCreated({
- asset,
- maker,
- taker,
- unitPrice,
- currency,
- quantity,
- expiredAt,
-}: Events['BID_CREATED']): {
- html: string
- subject: string
- to: string
-} | null {
- invariant(process.env.NEXT_PUBLIC_BASE_URL)
- if (!taker?.email) return null
- return {
- to: taker.email,
- subject: `New bid received for ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of ${asset.name} for ${formatUnits(unitPrice, currency.decimals)} ${
- currency.symbol
- }${BigNumber.from(quantity).gt(1) ? ' each' : ''}`,
- html: `Hi ${taker.username || taker.address},
-
- We are pleased to let you know that you have received a new bid from ${
- maker.username || maker.address
- } for ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of your NFT ${asset.name} for ${formatUnits(
- unitPrice,
- currency.decimals,
- )} ${currency.symbol}${
- BigNumber.from(quantity).gt(1) ? ' each' : ''
- }.
-
- You have until the ${formatDate(
- expiredAt,
- )} to accept it. After that the bid will be expired.
-
- To do so just click the link below that will redirect you to it.
-
- Go to the NFT page
`,
- }
-}
diff --git a/emails/BidExpired.ts b/emails/BidExpired.ts
deleted file mode 100644
index 21385d6e..00000000
--- a/emails/BidExpired.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { BigNumber } from '@ethersproject/bignumber'
-import { formatUnits } from '@ethersproject/units'
-import { Events } from '@nft/webhook'
-import invariant from 'ts-invariant'
-
-export default function BidExpired({
- asset,
- maker,
- unitPrice,
- currency,
- quantity,
-}: Events['BID_EXPIRED']): {
- html: string
- subject: string
- to: string
-} | null {
- invariant(process.env.NEXT_PUBLIC_BASE_URL)
- const amount = BigNumber.from(quantity).mul(unitPrice)
- if (!maker?.email) return null
- return {
- to: maker.email,
- subject: `Your bid for ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of ${asset.name} for ${formatUnits(unitPrice, currency.decimals)} ${
- currency.symbol
- }${
- BigNumber.from(quantity).gt(1) ? ' each' : ''
- } has met the expiration date`,
- html: `Hi ${maker.username || maker.address},
-
- Your bid for ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of the NFT ${asset.name} for ${formatUnits(
- amount,
- currency.decimals,
- )} ${currency.symbol}${
- BigNumber.from(quantity).gt(1) ? ' each' : ''
- } has met the expiration date. The bid has been canceled.
-
- You can place a new bid for this NFT at anytime. To do so just click the link below that will redirect you to it.
-
- Place a new bid
`,
- }
-}
diff --git a/emails/OfferExpired.ts b/emails/OfferExpired.ts
deleted file mode 100644
index cd932962..00000000
--- a/emails/OfferExpired.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { Events } from '@nft/webhook'
-import invariant from 'ts-invariant'
-
-export default function OfferExpired({
- asset,
- maker,
-}: Events['OFFER_EXPIRED']): {
- html: string
- subject: string
- to: string
-} | null {
- invariant(process.env.NEXT_PUBLIC_BASE_URL)
- if (!maker?.email) return null
- return {
- to: maker.email,
- subject: `The expiration date has been met for your sale on ${asset.name}`,
- html: `Hi ${maker.username || maker.address},
-
- The expiration date has been met for ${
- asset.name
- }. The sale has been canceled.
-
- You can create a new sale for this NFT at anytime. To do so just click the link below that will redirect you to it.
-
- Create a new sale
`,
- }
-}
diff --git a/emails/OfferPurchased.ts b/emails/OfferPurchased.ts
deleted file mode 100644
index d7e52dbf..00000000
--- a/emails/OfferPurchased.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { BigNumber } from '@ethersproject/bignumber'
-import { formatUnits } from '@ethersproject/units'
-import { Events } from '@nft/webhook'
-import invariant from 'ts-invariant'
-
-export default function OfferPurchased({
- unitPrice,
- currency,
- quantity,
- buyer,
- seller,
- offer: { asset, type },
-}: Events['TRADE_CREATED']): {
- html: string
- subject: string
- to: string
-} | null {
- invariant(process.env.NEXT_PUBLIC_BASE_URL)
- if (type !== 'SALE') return null
- if (!seller?.email) return null
- return {
- to: seller.email,
- subject: `You sold ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of ${asset.name}`,
- html: `Hi ${seller.username || seller.address},
-
- We are pleased to let you know that you have sold ${quantity} edition${
- BigNumber.from(quantity).gt(1) ? 's' : ''
- } of your NFT ${asset.name} to ${
- buyer?.username || buyer.address
- } for ${formatUnits(unitPrice, currency.decimals)} ${
- currency.symbol
- }${BigNumber.from(quantity).gt(1) ? ' each' : ''}.
-
- No additional actions are required on your side. The NFT ownership has been transferred and your wallet has been credited with the funds.
-
- Check my wallet balance`,
- }
-}
diff --git a/package-lock.json b/package-lock.json
index 52b9e0f3..711863ed 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "starter-kit",
- "version": "2.1.1",
+ "version": "3.6.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "starter-kit",
- "version": "2.1.1",
+ "version": "3.6.1",
"dependencies": {
"@apollo/client": "^3.8.9",
"@bugsnag/js": "^7.22.3",
@@ -19,7 +19,6 @@
"@magiclabs/wagmi-connector": "^1.1.6",
"@metamask/jazzicon": "^2.0.0",
"@nft/chat": "^0.2.0",
- "@nft/webhook": "^1.0.0-beta.51",
"@rainbow-me/rainbowkit": "^1.3.3",
"@react-icons/all-files": "^4.1.0",
"@uiw/react-markdown-preview": "^5.0.7",
@@ -33,7 +32,6 @@
"next-remove-imports": "^1.0.12",
"next-translate": "^2.6.2",
"nextjs-google-analytics": "^2.3.3",
- "nodemailer": "^6.9.8",
"nprogress": "^0.2.0",
"numbro": "^2.4.0",
"react": "^18.2.0",
@@ -54,7 +52,6 @@
"@graphql-eslint/eslint-plugin": "^3.20.1",
"@next/bundle-analyzer": "^14.0.4",
"@nft/api-graphql": "^1.0.0-beta.60",
- "@types/nodemailer": "^6.4.14",
"@types/nprogress": "^0.2.3",
"@types/react": "^18.2.48",
"@types/react-linkify": "^1.0.4",
@@ -6551,26 +6548,6 @@
"react-dom": ">=17"
}
},
- "node_modules/@nft/webhook": {
- "version": "1.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@nft/webhook/-/webhook-1.0.0-beta.51.tgz",
- "integrity": "sha512-gX9Rj+wBga2uGQ6yfY3ZcHu0dh5VSVMcfUcfZg5ObkeupJSvLBB7R42dY4DKz0CzfQVMtNnsu1J03gnmE8VCMQ==",
- "dependencies": {
- "raw-body": "^2.5.1",
- "ts-invariant": "^0.9.4"
- }
- },
- "node_modules/@nft/webhook/node_modules/ts-invariant": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.9.4.tgz",
- "integrity": "sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ==",
- "dependencies": {
- "tslib": "^2.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/@noble/curves": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz",
@@ -7637,15 +7614,6 @@
"undici-types": "~5.26.4"
}
},
- "node_modules/@types/nodemailer": {
- "version": "6.4.14",
- "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.14.tgz",
- "integrity": "sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/normalize-package-data": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
@@ -9867,14 +9835,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/call-bind": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
@@ -10925,14 +10885,6 @@
"node": ">=0.10"
}
},
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/dependency-graph": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
@@ -13566,21 +13518,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/http-https": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz",
@@ -16504,14 +16441,6 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
},
- "node_modules/nodemailer": {
- "version": "6.9.8",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.8.tgz",
- "integrity": "sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==",
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -17584,20 +17513,6 @@
"safe-buffer": "^5.1.0"
}
},
- "node_modules/raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -18818,11 +18733,6 @@
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
"node_modules/sha.js": {
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
@@ -19183,14 +19093,6 @@
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="
},
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/std-env": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
@@ -19710,14 +19612,6 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
},
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
"node_modules/totalist": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
@@ -20339,14 +20233,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/unstorage": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz",
@@ -26351,25 +26237,6 @@
"react-emoji-render": "^1.2.4"
}
},
- "@nft/webhook": {
- "version": "1.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@nft/webhook/-/webhook-1.0.0-beta.51.tgz",
- "integrity": "sha512-gX9Rj+wBga2uGQ6yfY3ZcHu0dh5VSVMcfUcfZg5ObkeupJSvLBB7R42dY4DKz0CzfQVMtNnsu1J03gnmE8VCMQ==",
- "requires": {
- "raw-body": "^2.5.1",
- "ts-invariant": "^0.9.4"
- },
- "dependencies": {
- "ts-invariant": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.9.4.tgz",
- "integrity": "sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ==",
- "requires": {
- "tslib": "^2.1.0"
- }
- }
- }
- },
"@noble/curves": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz",
@@ -27137,15 +27004,6 @@
"undici-types": "~5.26.4"
}
},
- "@types/nodemailer": {
- "version": "6.4.14",
- "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.14.tgz",
- "integrity": "sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
"@types/normalize-package-data": {
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
@@ -28963,11 +28821,6 @@
"resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
"integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q=="
},
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
"call-bind": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
@@ -29735,11 +29588,6 @@
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="
},
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
"dependency-graph": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
@@ -31760,18 +31608,6 @@
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
"integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="
},
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
"http-https": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz",
@@ -33819,11 +33655,6 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz",
"integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ=="
},
- "nodemailer": {
- "version": "6.9.8",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.8.tgz",
- "integrity": "sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ=="
- },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -34618,17 +34449,6 @@
"safe-buffer": "^5.1.0"
}
},
- "raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
"react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -35490,11 +35310,6 @@
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
"sha.js": {
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
@@ -35781,11 +35596,6 @@
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz",
"integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A=="
},
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- },
"std-env": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
@@ -36159,11 +35969,6 @@
"resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
"integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
},
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
"totalist": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
@@ -36618,11 +36423,6 @@
"normalize-path": "^2.1.1"
}
},
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
"unstorage": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz",
diff --git a/package.json b/package.json
index 2e9c5237..91e3c673 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,6 @@
"@magiclabs/wagmi-connector": "^1.1.6",
"@metamask/jazzicon": "^2.0.0",
"@nft/chat": "^0.2.0",
- "@nft/webhook": "^1.0.0-beta.51",
"@rainbow-me/rainbowkit": "^1.3.3",
"@react-icons/all-files": "^4.1.0",
"@uiw/react-markdown-preview": "^5.0.7",
@@ -41,7 +40,6 @@
"next-remove-imports": "^1.0.12",
"next-translate": "^2.6.2",
"nextjs-google-analytics": "^2.3.3",
- "nodemailer": "^6.9.8",
"nprogress": "^0.2.0",
"numbro": "^2.4.0",
"react": "^18.2.0",
@@ -62,7 +60,6 @@
"@graphql-eslint/eslint-plugin": "^3.20.1",
"@next/bundle-analyzer": "^14.0.4",
"@nft/api-graphql": "^1.0.0-beta.60",
- "@types/nodemailer": "^6.4.14",
"@types/nprogress": "^0.2.3",
"@types/react": "^18.2.48",
"@types/react-linkify": "^1.0.4",
diff --git a/pages/api/notification.ts b/pages/api/notification.ts
deleted file mode 100644
index 4637b165..00000000
--- a/pages/api/notification.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { Events, parseAndVerifyRequest } from '@nft/webhook'
-import { NextApiRequest, NextApiResponse } from 'next'
-import nodemailer, { SendMailOptions } from 'nodemailer'
-import invariant from 'ts-invariant'
-import AccountCreatedReferral from '../../emails/AccountCreatedReferral'
-import BidAccepted from '../../emails/BidAccepted'
-import BidCreated from '../../emails/BidCreated'
-import BidExpired from '../../emails/BidExpired'
-import OfferExpired from '../../emails/OfferExpired'
-import OfferPurchased from '../../emails/OfferPurchased'
-
-invariant(process.env.EMAIL_HOST, 'env EMAIL_HOST is required')
-invariant(process.env.EMAIL_PORT, 'env EMAIL_PORT is required')
-invariant(process.env.EMAIL_USERNAME, 'env EMAIL_USERNAME is required')
-invariant(process.env.EMAIL_PASSWORD, 'env EMAIL_PASSWORD is required')
-invariant(
- process.env.LITEFLOW_WEBHOOK_SECRET,
- 'env LITEFLOW_WEBHOOK_SECRET is required',
-)
-const liteflowSecret = process.env.LITEFLOW_WEBHOOK_SECRET
-
-const transporter = nodemailer.createTransport({
- host: process.env.EMAIL_HOST,
- port: Number(process.env.EMAIL_PORT),
- auth: {
- user: process.env.EMAIL_USERNAME,
- pass: process.env.EMAIL_PASSWORD,
- },
-})
-
-const emails = new Map SendMailOptions | null)[]>(
- [
- ['BID_CREATED', [BidCreated]],
- ['OFFER_CREATED', []],
- ['BID_EXPIRED', [BidExpired]],
- ['OFFER_EXPIRED', [OfferExpired]],
- ['TRADE_CREATED', [BidAccepted, OfferPurchased]],
- ['ACCOUNT_CREATED', [AccountCreatedReferral]],
- ],
-)
-
-export default async function notification(
- req: NextApiRequest,
- res: NextApiResponse,
-): Promise {
- const { data, type } = await parseAndVerifyRequest(req, liteflowSecret)
- const emailTemplates = emails.get(type)
- if (!emailTemplates)
- throw new Error(`Email template for event ${type} does not exist`)
- await Promise.all(
- emailTemplates
- .map((template) => template(data))
- .filter(Boolean)
- .map((email) =>
- transporter.sendMail({
- ...email,
- from: process.env.EMAIL_FROM,
- }),
- ),
- )
-
- res.status(200).end()
-}
-
-export const config = {
- api: {
- bodyParser: false,
- },
-}