From 57c515aaa27838f05afdbc1e4ce16666a1aaa51c Mon Sep 17 00:00:00 2001 From: quantum Date: Thu, 24 Jul 2025 02:59:21 -0500 Subject: [PATCH 1/2] feat: add username search --- packages/wasm-sdk/index.html | 63 ++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/packages/wasm-sdk/index.html b/packages/wasm-sdk/index.html index 1996061fe50..ed09820b410 100644 --- a/packages/wasm-sdk/index.html +++ b/packages/wasm-sdk/index.html @@ -1591,6 +1591,14 @@

Results

inputs: [ { name: "name", type: "text", label: "DPNS Name", required: true, placeholder: "Enter name (e.g., alice or alice.dash)" } ] + }, + dpnsSearch: { + label: "DPNS Search Name", + description: "Search for DPNS names that start with a given prefix", + inputs: [ + { name: "prefix", type: "text", label: "Name Prefix", required: true, placeholder: "Enter prefix (e.g., ali)" }, + { name: "limit", type: "number", label: "Limit", required: false, placeholder: "Default: 10" } + ] } } }, @@ -3473,6 +3481,61 @@

Results

identityId: resolvedIdentityId, message: resolvedIdentityId ? `Resolved to identity: ${resolvedIdentityId}` : `Name "${values.name}" not found` }; + } else if (queryType === 'dpnsSearch') { + // Handle DPNS name search with starts-with query + const limit = values.limit || 10; + + // DPNS contract ID on testnet + const DPNS_CONTRACT_ID = "GWRSAVFMjXx8HpQFaNJMqBV7MBgMK4br5UESsB4S31Ec"; + const DPNS_DOCUMENT_TYPE = "domain"; + + // Build where clause for starts-with query on normalizedLabel + const whereClause = JSON.stringify([ + ["normalizedLabel", "startsWith", values.prefix.toLowerCase()], + ["normalizedParentDomainName", "==", "dash"] + ]); + + // Order by normalizedLabel ascending + const orderBy = JSON.stringify([ + ["normalizedLabel", "asc"] + ]); + + // Execute the document query + const documents = await get_documents( + sdk, + DPNS_CONTRACT_ID, + DPNS_DOCUMENT_TYPE, + whereClause, + orderBy, + limit, + null, // offset + null, // startAt + null // startAfter + ); + + // Transform the results to show username and owner identity + const searchResults = documents.map(doc => { + // Access the data field which contains the DPNS document fields + const data = doc.data || doc; + + return { + username: `${data.normalizedLabel || data.label || 'unknown'}.${data.normalizedParentDomainName || 'dash'}`, + label: data.label || '', + normalizedLabel: data.normalizedLabel || '', + ownerId: doc.ownerId || doc.$ownerId || '', + documentId: doc.id || doc.$id || '' + }; + }); + + result = { + prefix: values.prefix, + totalResults: searchResults.length, + limit: limit, + results: searchResults, + message: searchResults.length > 0 + ? `Found ${searchResults.length} name(s) starting with "${values.prefix}"` + : `No names found starting with "${values.prefix}"` + }; } // Protocol/Version queries else if (queryType === 'getProtocolVersionUpgradeState') { From 3de7f24a601d2ff7d0fbef0c71ae98c29e0117f9 Mon Sep 17 00:00:00 2001 From: quantum Date: Thu, 24 Jul 2025 04:00:47 -0500 Subject: [PATCH 2/2] fix --- packages/wasm-sdk/index.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/wasm-sdk/index.html b/packages/wasm-sdk/index.html index ed09820b410..c188c223f93 100644 --- a/packages/wasm-sdk/index.html +++ b/packages/wasm-sdk/index.html @@ -3508,9 +3508,8 @@

Results

whereClause, orderBy, limit, - null, // offset - null, // startAt - null // startAfter + null, // startAfter + null // startAt ); // Transform the results to show username and owner identity