forge/arma/ui/apps/main/bridge.js
2026-03-07 19:54:17 -06:00

124 lines
3.6 KiB
JavaScript

(function () {
const RegistryApp = (window.RegistryApp = window.RegistryApp || {});
const store = RegistryApp.store;
function sendEvent(event, data) {
if (
typeof A3API !== "undefined" &&
typeof A3API.SendAlert === "function"
) {
A3API.SendAlert(
JSON.stringify({
event,
data,
}),
);
return true;
}
return false;
}
function getMockPayload() {
const OrgPortal = window.OrgPortal;
return {
session: JSON.parse(JSON.stringify(OrgPortal.data.session)),
portalData: JSON.parse(JSON.stringify(OrgPortal.data.portalData)),
};
}
function requestLogin(credentials) {
store.startLogin();
const sent = sendEvent("org::login::request", credentials);
if (sent) {
return;
}
window.setTimeout(() => {
store.completeLogin(getMockPayload());
}, 350);
}
function requestCreateOrg(registration) {
store.startCreate();
const sent = sendEvent("org::create::request", registration);
if (sent) {
return;
}
window.setTimeout(() => {
const orgName = String(registration.orgName || "").trim();
if (!orgName) {
store.failCreate("Enter an organization name.");
return;
}
const payload = getMockPayload();
payload.portalData.org.name = orgName;
payload.portalData.org.tag = String(Date.now()).slice(-10);
payload.portalData.org.owner =
payload.session.actorName || "Unknown";
payload.portalData.org.ownerUid = payload.session.actorUid || "";
payload.portalData.org.isDefault = false;
payload.session.role = "Leader";
payload.session.ceo = false;
payload.portalData.members = [
{ name: payload.session.actorName || "Unknown" },
];
store.completeCreate(payload);
}, 350);
}
function receive(eventOrPayload, data = {}) {
const event =
typeof eventOrPayload === "object" && eventOrPayload !== null
? eventOrPayload.event
: eventOrPayload;
const payloadData =
typeof eventOrPayload === "object" && eventOrPayload !== null
? eventOrPayload.data || {}
: data;
if (event === "org::login::success") {
store.completeLogin(payloadData);
return;
}
if (event === "org::login::failure") {
store.failLogin(payloadData.message || "Authentication failed.");
return;
}
if (event === "org::create::success") {
store.completeCreate(payloadData);
return;
}
if (event === "org::create::failure") {
store.failCreate(
payloadData.message || "Organization registration failed.",
);
}
}
RegistryApp.bridge = {
requestLogin,
requestCreateOrg,
receive,
sendEvent,
};
window.OrgUIBridge = {
requestLogin,
requestCreateOrg,
receive,
receiveLoginSuccess: (data) => receive("org::login::success", data),
receiveLoginFailure: (data) => receive("org::login::failure", data),
receiveCreateSuccess: (data) => receive("org::create::success", data),
receiveCreateFailure: (data) => receive("org::create::failure", data),
};
})();