UNPKG

@effectai/sdk

Version:

Effect Network Javscript/Typescript SDK (for [https://effect.network](https://effect.network))

54 lines 1.88 kB
import { SessionNotFoundError } from "../../../errors"; import { useEFXContracts } from "../../../utils/state"; import { uploadIpfsResource } from "../../ipfs/uploadIpfsResource"; export const createCampaignAction = ({ client, campaign, }) => { if (!client.session) { throw new SessionNotFoundError("Session is required for this method."); } const { actor } = client.session; const { tasks } = useEFXContracts(client); return { account: tasks, name: "mkcampaign", authorization: [ { actor, permission: "active", }, ], data: campaign, }; }; export const createCampaign = async ({ client, campaign, }) => { if (!client.session) { throw new SessionNotFoundError("Session is required for this method."); } const { transact } = client.session; const { token } = useEFXContracts(client); try { // Upload Campaign data to IPFS const hash = await uploadIpfsResource({ client, data: campaign }); const response = await transact({ action: createCampaignAction({ client, campaign: { max_task_time: campaign.maxTaskTime, reward: { quantity: `${campaign.reward.toFixed(4)} EFX`, // `1.0000 EFX` contract: token, }, payer: client.session.actor.toString(), content: { field_0: 0, field_1: hash }, qualis: campaign.qualifications ?? [], owner: ["name", client.session.actor.toString()], }, }), }); return response; } catch (error) { console.error(error); throw error; } }; //# sourceMappingURL=createCampaign.js.map