aftermath-ts-sdk
Version:
Aftermath TypeScript SDK
116 lines (115 loc) • 3.92 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NftsApiCasting = void 0;
const helpers_1 = require("../utils/helpers");
class NftsApiCasting {
}
exports.NftsApiCasting = NftsApiCasting;
_a = NftsApiCasting;
// =========================================================================
// Public Methods
// =========================================================================
// =========================================================================
// Objects
// =========================================================================
NftsApiCasting.nftsFromSuiObjects = (objects) => {
const nfts = objects.filter((object) => { var _b; return (_b = object.data) === null || _b === void 0 ? void 0 : _b.display; });
return nfts
.map((nft) => _a.nftFromSuiObject(nft))
.filter((nft) => Object.keys(nft.display.suggested).length > 0 ||
Object.keys(nft.display.other).length > 0);
};
NftsApiCasting.nftFromSuiObject = (object) => {
const info = _a.nftInfoFromSuiObject(object);
const displayFields = helpers_1.Helpers.getObjectDisplay(object);
const display = _a.nftDisplayFromDisplayFields(displayFields);
return {
info,
display,
};
};
NftsApiCasting.kioskOwnerCapFromSuiObject = (object) => {
const fields = helpers_1.Helpers.getObjectFields(object);
const objectId = helpers_1.Helpers.getObjectId(object);
const objectType = helpers_1.Helpers.getObjectType(object);
return {
objectId,
objectType,
kioskObjectId: helpers_1.Helpers.addLeadingZeroesToType(fields.for),
};
};
NftsApiCasting.kioskOwnerCapFromPersonalKioskCapSuiObject = (object) => {
const fields = helpers_1.Helpers.getObjectFields(object);
const objectId = helpers_1.Helpers.getObjectId(object);
const objectType = helpers_1.Helpers.getObjectType(object);
return {
objectId,
objectType,
kioskObjectId: helpers_1.Helpers.addLeadingZeroesToType(fields.cap.fields.for),
};
};
// =========================================================================
// Private Methods
// =========================================================================
// =========================================================================
// Objects
// =========================================================================
NftsApiCasting.nftInfoFromSuiObject = (object) => {
const objectType = helpers_1.Helpers.getObjectType(object);
const objectId = helpers_1.Helpers.getObjectId(object);
if (!objectId || !objectType)
throw new Error("unable to obtain object info from sui object response");
return {
objectId,
objectType,
};
};
NftsApiCasting.nftDisplayFromDisplayFields = (displayFields) => {
const fields = displayFields.data;
if (fields === null ||
fields === undefined ||
displayFields.error !== null)
return {
suggested: {},
other: {},
};
const suggestedFields = [
{
onChain: "name",
offChain: "name",
},
{
onChain: "link",
offChain: "link",
},
{
onChain: "image_url",
offChain: "imageUrl",
},
{
onChain: "description",
offChain: "description",
},
{
onChain: "project_url",
offChain: "projectUrl",
},
{
onChain: "creator",
offChain: "creator",
},
];
let suggested = {};
let other = helpers_1.Helpers.deepCopy(fields);
for (const field of suggestedFields) {
if (!(field.onChain in other))
continue;
suggested[field.offChain] = other[field.onChain];
delete other[field.onChain];
}
return {
suggested,
other,
};
};