import { CID_FOLLOW } from 'src/constants/app';
import { getTransactions } from 'src/services/transactions/lcd';
import { NeuronAddress, ParticleCid } from 'src/types/base';
import { getIpfsHash } from 'src/utils/ipfs/helpers';

export const getFollowsAsCid = async (
  address: NeuronAddress,
  signal?: AbortSignal
): Promise<ParticleCid[]> => {
  const response = await getTransactions({
    events: [
      {
        key: 'cyberlink.neuron',
        value: address,
      },
      {
        key: 'cyberlink.particleFrom',
        value: CID_FOLLOW,
      },
    ],
    pagination: {
      limit: 1000000000,
    },
    config: {
      signal,
    },
  });

  if (!response?.txResponses?.length) {
    return [];
  }

  return response.txResponses.map((item) => item?.tx?.body?.messages[0].links[0].to);
};

// use src/services/transactions/lcd.tsx
export const getFollowers = async (
  address: NeuronAddress,
  signal?: AbortSignal
): Promise<NeuronAddress[]> => {
  const addressHash = await getIpfsHash(address);

  const response = await getTransactions({
    events: [
      {
        key: 'cyberlink.particleFrom',
        value: CID_FOLLOW,
      },
      {
        key: 'cyberlink.particleTo',
        value: addressHash,
      },
    ],
    pagination: {
      limit: 1000000000,
    },
    config: {
      signal,
    },
  });

  if (!response?.txResponses?.length) {
    return [];
  }

  // debugger;
  // check

  return response.txResponses
    .map((item) => item?.tx?.body?.messages?.[0].value?.neuron)
    .filter(Boolean);
};

Synonyms

bostrom-mcp/src/clients/lcd.ts
cyb/src/services/passports/lcd.ts
cyber-ts/packages/cyber-ts/src/osmosis/lcd.ts
cyber-ts/packages/cyber-ts/src/cosmos/lcd.ts
cyber-ts/packages/cyber-ts/src/cyber/lcd.ts
cyber-ts/packages/cyber-ts/src/cosmwasm/lcd.ts
pussy-ts/src/services/backend/services/lcd/lcd.ts
pussy-ts/src/services/backend/services/dataSource/blockchain/lcd.ts

Neighbours