@snap/camera-kit
Version:
Camera Kit Web
43 lines • 1.49 kB
JavaScript
import { __awaiter } from "tslib";
import { getLogger } from "../logger/logger";
const logger = getLogger("persistingHandler");
export const createPersistingHandler = (persistence) => {
let needsRecovery = true;
const maybePerformRecovery = (next) => __awaiter(void 0, void 0, void 0, function* () {
if (!needsRecovery)
return;
needsRecovery = false;
try {
const requests = yield persistence.removeAll();
if (requests.length === 0)
return;
requests.forEach(([request, metadata]) => performRequest(next)(request, metadata).catch((error) => {
logger.error(error);
}));
}
catch (error) {
logger.error(error);
}
});
const performRequest = (next) => (req, metadata) => __awaiter(void 0, void 0, void 0, function* () {
maybePerformRecovery(next);
const keyPromise = persistence.store([req, metadata]).catch((error) => {
logger.error(error);
return null;
});
try {
return yield next(req, metadata);
}
finally {
keyPromise
.then((key) => {
if (key !== null)
return persistence.remove(key);
return;
})
.catch((error) => logger.error(error));
}
});
return performRequest;
};
//# sourceMappingURL=persistingHandler.js.map