updateNameRegistryData static method

Future<TransactionInstruction> updateNameRegistryData({
  1. required SolanaRPC rpc,
  2. required String name,
  3. required int offset,
  4. required List<int> inputData,
  5. SolAddress? nameClass,
  6. SolAddress? nameParent,
})

Overwrite the data of the given name registry.

Implementation

static Future<TransactionInstruction> updateNameRegistryData(
    {
    /// The solana connection object to the RPC node
    required SolanaRPC rpc,

    /// The name of the name registry to update
    required String name,

    /// The offset to which the data should be written into the registry
    required int offset,

    /// The data to be written
    required List<int> inputData,

    /// The class of this name, if it exsists
    SolAddress? nameClass,

    /// The parent name of this name, if it exists
    SolAddress? nameParent}) async {
  final hashedName = NameServiceProgramUtils.getHashedName(name);
  final nameAccountKey = NameServiceProgramUtils.getNameAccountProgram(
    hashedName: hashedName,
    nameClass: nameClass,
    nameParent: nameParent,
  );

  SolAddress? signer = nameClass;
  if (signer == null) {
    final account = await rpc
        .request(SolanaRPCNameRegistryAccount(account: nameAccountKey));
    if (account == null) {
      throw const MessageException("Account not found.");
    }
    signer = account.owner;
  }

  return NameServiceProgram.update(
    nameAccountKey: nameAccountKey,
    layout: NameServiceUpdateLayout(inputData: inputData, offset: offset),
    nameUpdateSigner: signer,
    parentNameKey: nameParent,
  );
}