Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sageprotocol.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Channel owners can update channel information including descriptions, avatars, banners, and the casing of channel names. Updates require explicitly providing all fields to avoid unintended overwrites; unchanged fields should retain existing values. React Hook Example for Updating Channels:
import { useChannel } from '@sageprotocol/sdk/react';
import { useWallet } from '@suiet/wallet-kit';

function UpdateChannel({ channel }) {
  const { update } = useChannel();
  const { account, signAndExecuteTransaction } = useWallet();

  async function handleUpdate() {
    const result = await update({
      amounts: [0, 0],                                // Required protocol fees
      avatar: channel.avatar,                         // Existing or updated blob ID
      banner: channel.banner,                         // Existing or updated blob ID
      channelId: channel.id,                          // Channel ID
      channelName: channel.name,                      // Casing updates only (e.g., 'crypto-art' → 'CRYPTO-ART')
      description: '**Updated community guidelines and information**', // Markdown-supported description
      self: account.address                           // Channel owner's wallet address
    });

    if (result.ok) {
      await signAndExecuteTransaction({ transaction: result.transaction });
      console.log("Channel updated successfully!");
    } else {
      console.error("Error updating channel:", result.err);
    }
  }

  return <button onClick={handleUpdate}>Update Channel</button>;
}

export default UpdateChannel;
import { SageClient } from '@sageprotocol/sdk';

const sageClient = new SageClient({
  appId: 'your-app-id',                      // Required application ID
  channelRegistryId: 'your-registry-id',     // Required channel registry ID
  network: 'testnet'                         // 'testnet' or 'mainnet'
});

await sageClient.initialize();

async function updateChannel(channel, walletAddress) {
  const result = await sageClient.updateChannel({
    amounts: [0, 0],                                     // Required protocol fees
    avatar: channel.avatar,                              // Existing or updated blob ID
    banner: channel.banner,                              // Existing or updated blob ID
    channelId: channel.id,                               // Channel ID
    channelName: channel.name,                           // Casing updates only
    description: '**Updated community guidelines and information**', // Markdown-supported description
    self: walletAddress                                  // Channel owner's wallet address
  });

  if (result.ok) {
    await signAndExecuteTransaction({ transaction: result.transaction });
    console.log("Channel updated successfully!");
  } else {
    console.error("Error updating channel:", result.err);
  }
}

updateChannel({
  id: 'your-channel-id',
  avatar: 12345,
  banner: 67890,
  name: 'crypto-art'
}, walletAddress);

Important Notes:

  • Complete Replacement: Updates are full replacements; explicitly provide all fields, using existing values for unchanged fieldsdocssage_sdk.
  • Name Casing Restrictions: Channel names can only be modified by changing letter casing, not by introducing new characters or wordssage_sdk.
  • Transaction Signing: All updates require explicit signing and execution via the owner’s walletdocs.