Skip to main content
⚠️ Legacy SDK DocumentationThis documentation uses our older SDK (@handcash/handcash-connect), but the v3 SDK does not support this feature yet.

Lock and Unlock Items

Prevent items from being transferred by locking them, or unlock them to allow transfers again.

Prerequisites

  • User must be connected with the ITEMS_WRITE permission
  • Your application must be the creator of the item

Setup

import { HandCashConnect } from '@handcash/handcash-connect';

const handCashConnect = new HandCashConnect({
  appId: '<app-id>',
  appSecret: '<secret>',
});

const account = handCashConnect.getAccountFromAuthToken(token);

Lock Items

You can prevent an item from being transferred by locking it:
const origin = '0a3eb965a039cb15e731e2b1b2a67b7c024e6a6b59c1f7c32a9cec1d6b5bb7e7_48';
await account.items.lockItems(origin);

Lock Multiple Items

const origins = [
  'item-origin-1',
  'item-origin-2',
  'item-origin-3'
];

for (const origin of origins) {
  await account.items.lockItems(origin);
}

Unlock Items

Later on, you can unlock items to allow transfers again:
const origin = '0a3eb965a039cb15e731e2b1b2a67b7c024e6a6b59c1f7c32a9cec1d6b5bb7e7_48';
await account.items.unlockItems(origin);

Unlock Multiple Items

const origins = [
  'item-origin-1',
  'item-origin-2',
  'item-origin-3'
];

for (const origin of origins) {
  await account.items.unlockItems(origin);
}

Get Locked Items

Retrieve a list of locked items:
const lockedItems = await account.items.getLockedItems({
  from: 0,
  to: 10,
  fetchAttributes: true,
});

console.log(`User has ${lockedItems.length} locked items`);

Parameters

  • from: Starting index (default: 0)
  • to: Ending index (default: 10)
  • fetchAttributes: Whether to include item attributes (default: false)

Use Cases

Lock Valuable Items

async function lockValuableItems() {
  // Get user's inventory (use v3 Connect.getItemsInventory for this)
  // Filter for valuable items
  const valuableOrigins = [
    'legendary-item-origin-1',
    'epic-item-origin-2'
  ];
  
  for (const origin of valuableOrigins) {
    await account.items.lockItems(origin);
  }
  
  console.log(`Locked ${valuableOrigins.length} valuable items`);
}

Unlock Before Transfer

async function transferItem(itemOrigin: string, destination: string) {
  // Unlock item first
  await account.items.unlockItems(itemOrigin);
  
  // Then transfer
  const result = await account.items.transfer({
    destinationsWithOrigins: [
      {
        destination: destination,
        origins: [itemOrigin]
      }
    ]
  });
  
  return result.transactionId;
}

Important Notes

  • Locked items cannot be transferred until they are unlocked
  • Only the app that created the item can lock/unlock it
  • Locking is useful for preventing accidental transfers of valuable items
  • Use getLockedItems() to check which items are currently locked