@effectai/sdk
Version:
Effect Network Javscript/Typescript SDK (for [https://effect.network](https://effect.network))
54 lines • 1.88 kB
JavaScript
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