@snap/camera-kit
Version:
Camera Kit Web
52 lines • 2.8 kB
JavaScript
import { __awaiter } from "tslib";
import { Injectable } from "../../dependency-injection/Injectable";
import { lensAssetError } from "../../namedErrors";
import { getLogger } from "../../logger/logger";
import { toPublicLens } from "../Lens";
import { lensRepositoryFactory } from "../LensRepository";
import { lensStateFactory } from "../../session/lensState";
import { lensCoreFactory } from "../../lens-core-module/loader/lensCoreFactory";
import { lensAssetRepositoryFactory } from "./LensAssetRepository";
const logger = getLogger("LensAssetProvider");
const maxConsecutiveErrors = 3;
export const registerLensAssetsProvider = Injectable("registerLensAssetsProvider", [
lensCoreFactory.token,
lensRepositoryFactory.token,
lensAssetRepositoryFactory.token,
lensStateFactory.token,
], (lensCore, lensRepository, lensAssetRepository, lensState) => {
const consecutiveErrorsPerAsset = new Map();
lensCore.setRemoteAssetsProvider((assetDescriptor) => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c, _d, _e;
const { assetId, assetType, effectId } = assetDescriptor;
try {
if (((_a = consecutiveErrorsPerAsset.get(assetId)) !== null && _a !== void 0 ? _a : 0) > maxConsecutiveErrors) {
throw new Error(`Maximum consecutive asset load errors reached for asset ${assetId}`);
}
const lensId = effectId !== null && effectId !== void 0 ? effectId : (_b = lensState.getState().data) === null || _b === void 0 ? void 0 : _b.id;
const lens = lensId ? lensRepository.getLensMetadata(lensId) : undefined;
yield lensAssetRepository.loadAsset({
assetDescriptor,
lens: lens && toPublicLens(lens),
assetManifest: (_d = (_c = lens === null || lens === void 0 ? void 0 : lens.content) === null || _c === void 0 ? void 0 : _c.assetManifest) !== null && _d !== void 0 ? _d : [],
lowPriority: false,
});
consecutiveErrorsPerAsset.set(assetId, 0);
}
catch (error) {
lensCore.provideRemoteAssetsResponse({
assetId,
assetType,
});
const consecutiveErrors = ((_e = consecutiveErrorsPerAsset.get(assetId)) !== null && _e !== void 0 ? _e : 0) + 1;
consecutiveErrorsPerAsset.set(assetId, consecutiveErrors);
if (consecutiveErrors <= maxConsecutiveErrors) {
logger.error(lensAssetError(`Error occurred while handling lens asset ${assetId} request.`, error));
}
else {
logger.warn(`Maximum consecutive asset load errors reached for asset ${assetId}`);
}
}
}));
});
//# sourceMappingURL=LensAssetsProvider.js.map