70 lines
2.2 KiB
JavaScript
70 lines
2.2 KiB
JavaScript
(function () {
|
|
const SharedLogic = (window.SharedLogic = window.SharedLogic || {});
|
|
|
|
SharedLogic.createRegistryStore = function createRegistryStore({
|
|
createSignal,
|
|
onHydratePortal,
|
|
}) {
|
|
class RegistryStore {
|
|
constructor() {
|
|
[this.getView, this.setView] = createSignal("home");
|
|
[this.getIsAuthenticating, this.setIsAuthenticating] =
|
|
createSignal(false);
|
|
[this.getLoginError, this.setLoginError] = createSignal("");
|
|
[this.getIsCreating, this.setIsCreating] = createSignal(false);
|
|
[this.getCreateError, this.setCreateError] = createSignal("");
|
|
}
|
|
|
|
startLogin() {
|
|
this.setLoginError("");
|
|
this.setIsAuthenticating(true);
|
|
}
|
|
|
|
startCreate() {
|
|
this.setCreateError("");
|
|
this.setIsCreating(true);
|
|
}
|
|
|
|
failLogin(message) {
|
|
this.setIsAuthenticating(false);
|
|
this.setLoginError(message || "Authentication failed.");
|
|
}
|
|
|
|
failCreate(message) {
|
|
this.setIsCreating(false);
|
|
this.setCreateError(
|
|
message || "Organization registration failed.",
|
|
);
|
|
}
|
|
|
|
hydratePortal(payload) {
|
|
return Boolean(onHydratePortal && onHydratePortal(payload));
|
|
}
|
|
|
|
completeLogin(payload) {
|
|
if (!this.hydratePortal(payload)) {
|
|
this.failLogin("Login response was missing portal data.");
|
|
return;
|
|
}
|
|
|
|
this.setLoginError("");
|
|
this.setIsAuthenticating(false);
|
|
}
|
|
|
|
completeCreate(payload) {
|
|
if (!this.hydratePortal(payload)) {
|
|
this.failCreate(
|
|
"Organization registration response was missing portal data.",
|
|
);
|
|
return;
|
|
}
|
|
|
|
this.setCreateError("");
|
|
this.setIsCreating(false);
|
|
}
|
|
}
|
|
|
|
return new RegistryStore();
|
|
};
|
|
})();
|