1.10.20 • Published 12 months ago

@align-network/align-sdk v1.10.20

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

background

!CAUTION UNSTABLE. This repo changes rapidly and the contracts are updated frequently. An SDK for interacting with the Align Network

Usage

To use the SDK, ensure that your root component is wrapped with the AlignProvider.

Example

import { alignEnv } from "@/app/providers";
import { AlignDefaults, interactionStationABI } from "@align-network/align-sdk";

// Step 1. Upload to Network
const handleFileUpload = async (event: React.ChangeEvent<HTMLInputElement>) => {
  let file = event.target.files?.[0];
  if (!file) return;
  if (event.target.files?.[0]) {
    setFileStatus(true);
  }
  let fileBuffer = await readFileAsUint8Array(file);
  let data = await uploadFile(file.name, fileBuffer, file, env);
  console.log("data", data);
  setImage(data.cid);
  if (!data.error) {
    toast.success("Upload Success", {
      position: "top-center",
    });
  } else {
    toast.error("Upload Failed", {
      description: data.result,
      position: "top-center",
    });
  }
};

// Step 2
export async function interactFile(
  toAlignId: bigint,
  cid: string,
  type: "file" | "meme" | "nft"
) {
  //if (!data) return;
  //let uploadedInteraction = await upload(data, true);
  // interact with the interaction type
  try {
    const { request } = await simulateContract(wagmiConfig, {
      address: alignEnv.interactionStation,
      abi: interactionStationABI,
      functionName: "interact",
      args: [
        toAlignId,
        AlignDefaults[type].iTypeKey as `0x${string}`,
        cid,
        "0x0000000000000000000000000000000000000000000000000000000000000000" as `0x${string}`,
      ],
      value: parseEther("0.00028"),
    });
    const hash = await writeContract(wagmiConfig, request);

    const receipt = await waitForTransactionReceipt(wagmiConfig, {
      hash: hash,
    });
    return {
      success: true,
      receipt: receipt,
    };
  } catch (err) {
    if (err instanceof BaseError) {
      const revertError = err.walk(
        (err) => err instanceof ContractFunctionRevertedError
      );
      if (revertError instanceof ContractFunctionRevertedError) {
        const errorName = revertError.data?.errorName ?? "";
        throw new InteractError(errorName);
      }
    }
    console.log("err", err);
    throw new InteractError("Unknown error, make sure you have an Align Id");
  }
}

return (
  <>
    <Button className="w-full" variant="outline" onClick={handleButtonClick}>
      <UploadIcon className="" color="black" />
    </Button>
    <input
      type="file"
      ref={fileInputRef}
      style={{ display: "none" }}
      onChange={handleFileUpload}
    />
    <Button
      className="w-1/3"
      disabled={!fileStatus}
      onMouseDown={async () => {
        try {
          let data = await interactFile(alignId as bigint, image, fileType);
          if (data.success) {
            toast.success("Pinning Success", {
              position: "top-center",
            });
          }
        } catch (e) {
          console.log(e);
          toast.error("Pinning Failed", {
            description: (e as InteractError)?.message,
            position: "top-center",
          });
        }
      }}
    >
      Pin
    </Button>
  </>
);

Align Default Interaction Types:

  1. file
  2. nft
  3. meme
1.10.5

12 months ago

1.10.4

12 months ago

1.10.3

12 months ago

1.10.2

12 months ago

1.10.9

12 months ago

1.10.8

12 months ago

1.10.7

12 months ago

1.10.6

12 months ago

1.6.1

1 year ago

1.6.0

1 year ago

1.9.1

12 months ago

1.5.5

1 year ago

1.9.0

12 months ago

1.5.4

1 year ago

1.5.3

1 year ago

1.5.2

1 year ago

1.5.1

1 year ago

1.5.0

1 year ago

1.4.10

1 year ago

1.10.1

12 months ago

1.10.0

12 months ago

1.8.2

1 year ago

1.4.6

1 year ago

1.8.1

1 year ago

1.4.5

1 year ago

1.8.0

1 year ago

1.4.4

1 year ago

1.4.3

1 year ago

1.4.2

1 year ago

1.4.1

1 year ago

1.4.0

1 year ago

1.9.5

12 months ago

1.5.9

1 year ago

1.9.4

12 months ago

1.5.8

1 year ago

1.9.3

12 months ago

1.5.7

1 year ago

1.9.2

12 months ago

1.5.6

1 year ago

1.7.0

1 year ago

1.5.10

1 year ago

1.10.20

12 months ago

1.5.12

1 year ago

1.5.11

1 year ago

1.5.14

1 year ago

1.5.13

1 year ago

1.5.16

1 year ago

1.5.15

1 year ago

1.5.18

1 year ago

1.5.17

1 year ago

1.5.19

1 year ago

1.10.15

12 months ago

1.10.16

12 months ago

1.8.9

1 year ago

1.10.13

12 months ago

1.8.10

1 year ago

1.8.8

1 year ago

1.10.14

12 months ago

1.8.11

1 year ago

1.8.7

1 year ago

1.10.11

12 months ago

1.8.12

1 year ago

1.8.6

1 year ago

1.10.12

12 months ago

1.8.13

1 year ago

1.8.5

1 year ago

1.5.20

1 year ago

1.4.9

1 year ago

1.8.14

1 year ago

1.8.4

1 year ago

1.4.8

1 year ago

1.10.10

12 months ago

1.8.15

1 year ago

1.8.3

1 year ago

1.4.7

1 year ago

1.8.16

12 months ago

1.8.17

12 months ago

1.8.18

12 months ago

1.10.19

12 months ago

1.10.17

12 months ago

1.10.18

12 months ago

1.2.0

1 year ago

1.3.7

1 year ago

1.3.6

1 year ago

1.3.5

1 year ago

1.3.4

1 year ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.3.31

1 year ago

1.3.10

1 year ago

1.3.30

1 year ago

1.3.13

1 year ago

1.3.14

1 year ago

1.3.11

1 year ago

1.3.12

1 year ago

1.3.17

1 year ago

1.3.18

1 year ago

1.3.15

1 year ago

1.3.16

1 year ago

1.3.19

1 year ago

1.3.20

1 year ago

1.3.21

1 year ago

1.3.9

1 year ago

1.3.8

1 year ago

1.3.24

1 year ago

1.3.25

1 year ago

1.3.22

1 year ago

1.3.23

1 year ago

1.3.28

1 year ago

1.3.29

1 year ago

1.3.26

1 year ago

1.3.27

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.7

1 year ago