124 lines
3.6 KiB
JavaScript
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),
|
|
};
|
|
})();
|