one
Version:
One is a React framework for web, iOS, and Android apps.
78 lines (77 loc) • 2.63 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var handlerState_exports = {};
__export(handlerState_exports, {
ForegroundHandler: () => ForegroundHandler,
normalizeBehavior: () => normalizeBehavior,
showAllBehavior: () => showAllBehavior,
suppressBehavior: () => suppressBehavior
});
module.exports = __toCommonJS(handlerState_exports);
const showAllBehavior = {
shouldShowBanner: true,
shouldShowList: true,
shouldPlaySound: true,
shouldSetBadge: true
};
const suppressBehavior = {
shouldShowBanner: false,
shouldShowList: false,
shouldPlaySound: false,
shouldSetBadge: false
};
function normalizeBehavior(input) {
if (!input || typeof input !== "object") return { ...suppressBehavior };
return {
shouldShowBanner: "shouldShowBanner" in input && input.shouldShowBanner === true,
shouldShowList: "shouldShowList" in input && input.shouldShowList === true,
shouldPlaySound: "shouldPlaySound" in input && input.shouldPlaySound === true,
shouldSetBadge: "shouldSetBadge" in input && input.shouldSetBadge === true
};
}
var ForegroundHandler = class {
constructor(present) {
this.present = present;
}
present;
handler = null;
nulled = false;
pending = /* @__PURE__ */ new Set();
setHandler(handler) {
this.handler = handler;
this.nulled = handler === null;
}
receive(requestId, notification) {
if (this.pending.has(requestId)) return false;
if (!this.handler) {
this.present(requestId, { ...this.nulled ? suppressBehavior : showAllBehavior });
return true;
}
const handler = this.handler;
this.pending.add(requestId);
Promise.resolve().then(() => handler.handleNotification(notification)).then((behavior) => this.settle(requestId, normalizeBehavior(behavior)), () => this.settle(requestId, showAllBehavior));
return true;
}
settle(requestId, behavior) {
if (!this.pending.delete(requestId)) return;
this.present(requestId, { ...behavior });
}
};