Skip to content

Commit 996ac70

Browse files
committed
Change the shape of LicenseKeyValidationResult
1 parent d3cc29a commit 996ac70

File tree

4 files changed

+34
-10
lines changed

4 files changed

+34
-10
lines changed

packages/monetization/src/gumroad/private/script.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
async function main() {
2+
const emptyLicense = {
3+
email: null,
4+
licenseKey: null,
5+
purchaseTimestamp: null,
6+
validationTimestamp: null
7+
}
28
async function validateLicenseKeyAsync() {
39
try {
410
const response = await window.fetch(
@@ -23,7 +29,7 @@ async function main() {
2329
purchase.disputed === true ||
2430
purchase.refunded === true
2531
) {
26-
return { result: 'INVALID' }
32+
return { ...emptyLicense, result: 'INVALID' }
2733
}
2834
return {
2935
email: purchase.email,
@@ -33,7 +39,7 @@ async function main() {
3339
validationTimestamp: '__validationTimestamp__'
3440
}
3541
} catch {
36-
return { result: 'ENDPOINT_DOWN' }
42+
return { ...emptyLicense, result: 'ENDPOINT_DOWN' }
3743
}
3844
}
3945
window.parent.postMessage(

packages/monetization/src/gumroad/validate-gumroad-license-key-main-async.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { LicenseKeyValidationResult } from '../utilities/types.js'
22

3+
const emptyLicense = {
4+
email: null,
5+
licenseKey: null,
6+
purchaseTimestamp: null,
7+
validationTimestamp: null
8+
}
9+
310
export async function validateGumroadLicenseKeyMainAsync(options: {
411
incrementUsesCount: boolean
512
licenseKey: string
@@ -8,10 +15,10 @@ export async function validateGumroadLicenseKeyMainAsync(options: {
815
const { incrementUsesCount, licenseKey, productPermalink } = options
916
const trimmedLicenseKey = licenseKey.trim()
1017
if (trimmedLicenseKey === '') {
11-
return { result: 'EMPTY' }
18+
return { ...emptyLicense, result: 'INVALID_EMPTY' }
1219
}
1320
if (trimmedLicenseKey.length !== 35) {
14-
return { result: 'INVALID' }
21+
return { ...emptyLicense, result: 'INVALID' }
1522
}
1623
const onmessage = figma.ui.onmessage // Keep a reference to the previous `figma.ui.onmessage`
1724
return new Promise(function (
@@ -24,7 +31,7 @@ export async function validateGumroadLicenseKeyMainAsync(options: {
2431
}
2532
const validationTimestamp = new Date().toISOString()
2633
// The script below is inserted via `scripts/interpolate-gumroad-script.ts`
27-
const __html__ = `<script>async function main(){async function n(){try{const t=await(await window.fetch("https://api.gumroad.com/v2/licenses/verify",{body:"increment_uses_count=${incrementUsesCount}&license_key="+encodeURIComponent("${trimmedLicenseKey}")+"&product_permalink="+encodeURIComponent("${productPermalink}"),headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},method:"POST"})).json(),{purchase:e,success:s}=t;return s===!1||e.chargebacked===!0||e.disputed===!0||e.refunded===!0?{result:"INVALID"}:{email:e.email,licenseKey:"${trimmedLicenseKey}",purchaseTimestamp:e.sale_timestamp,result:"VALID",validationTimestamp:"${validationTimestamp}"}}catch{return{result:"ENDPOINT_DOWN"}}}window.parent.postMessage({pluginMessage:await n()},"*")}main();</script>`
34+
const __html__ = `<script>async function main(){const n={email:null,licenseKey:null,purchaseTimestamp:null,validationTimestamp:null};async function t(){try{const s=await(await window.fetch("https://api.gumroad.com/v2/licenses/verify",{body:"increment_uses_count=${incrementUsesCount}&license_key="+encodeURIComponent("${trimmedLicenseKey}")+"&product_permalink="+encodeURIComponent("${productPermalink}"),headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},method:"POST"})).json(),{purchase:e,success:a}=s;return a===!1||e.chargebacked===!0||e.disputed===!0||e.refunded===!0?{...n,result:"INVALID"}:{email:e.email,licenseKey:"${trimmedLicenseKey}",purchaseTimestamp:e.sale_timestamp,result:"VALID",validationTimestamp:"${validationTimestamp}"}}catch{return{...n,result:"ENDPOINT_DOWN"}}}window.parent.postMessage({pluginMessage:await t()},"*")}main();</script>`
2835
figma.showUI(__html__, { visible: false })
2936
})
3037
}

packages/monetization/src/gumroad/validate-gumroad-license-key-ui-async.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { LicenseKeyValidationResult } from '../utilities/types.js'
22

3+
const emptyLicense = {
4+
email: null,
5+
licenseKey: null,
6+
purchaseTimestamp: null,
7+
validationTimestamp: null
8+
}
9+
310
export async function validateGumroadLicenseKeyUiAsync(options: {
411
incrementUsesCount: boolean
512
licenseKey: string
@@ -8,10 +15,10 @@ export async function validateGumroadLicenseKeyUiAsync(options: {
815
const { incrementUsesCount, licenseKey, productPermalink } = options
916
const trimmedLicenseKey = licenseKey.trim()
1017
if (trimmedLicenseKey === '') {
11-
return { result: 'EMPTY' }
18+
return { ...emptyLicense, result: 'INVALID_EMPTY' }
1219
}
1320
if (trimmedLicenseKey.length !== 35) {
14-
return { result: 'INVALID' }
21+
return { ...emptyLicense, result: 'INVALID' }
1522
}
1623
try {
1724
const response = await window.fetch(
@@ -38,7 +45,7 @@ export async function validateGumroadLicenseKeyUiAsync(options: {
3845
purchase.disputed === true ||
3946
purchase.refunded === true
4047
) {
41-
return { result: 'INVALID' }
48+
return { ...emptyLicense, result: 'INVALID' }
4249
}
4350
return {
4451
email: purchase.email,
@@ -48,6 +55,6 @@ export async function validateGumroadLicenseKeyUiAsync(options: {
4855
validationTimestamp: new Date().toISOString()
4956
}
5057
} catch {
51-
return { result: 'ENDPOINT_DOWN' }
58+
return { ...emptyLicense, result: 'ENDPOINT_DOWN' }
5259
}
5360
}

packages/monetization/src/utilities/types.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
export type LicenseKeyValidationResult =
22
| {
3-
result: 'EMPTY' | 'ENDPOINT_DOWN' | 'INVALID'
3+
result: 'ENDPOINT_DOWN' | 'INVALID' | 'INVALID_EMPTY'
4+
email: null
5+
licenseKey: null
6+
purchaseTimestamp: null
7+
validationTimestamp: null
48
}
59
| {
610
result: 'VALID'

0 commit comments

Comments
 (0)