UNPKG

solid-ui

Version:

UI library for writing Solid read-write-web applications

74 lines (70 loc) 2.48 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Signup = Signup; var _configDefault = _interopRequireDefault(require("./config-default")); /** * Provides functionality for signing up with a Solid provider * @module signup */ /** * Creates a Signup UI manager * @class */ function Signup(config) { this.config = config || _configDefault["default"]; } /** * Sets up an event listener to monitor login messages from child window/iframe * @method listen * @return {Promise<String>} Event listener promise, resolves to user's WebID */ Signup.prototype.listen = function listen() { var promise = new Promise(function (resolve, reject) { var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent'; var eventListener = window[eventMethod]; var messageEvent = eventMethod === 'attachEvent' ? 'onmessage' : 'message'; eventListener(messageEvent, function (e) { var u = e.data; if (u.slice(0, 5) === 'User:') { var user = u.slice(5, u.length); if (user && user.length > 0 && user.slice(0, 4) === 'http') { return resolve(user); } else { return reject(user); } } }, true); }); return promise; }; /** * Opens a signup popup window, sets up `listen()`. * @method signup * @static * @param signupUrl {String} Location of a Solid server for user signup. * @return {Promise<String>} Returns a listener promise, resolves with signed * up user's WebID. */ Signup.prototype.signup = function signup(signupUrl) { signupUrl = signupUrl || this.config.signupEndpoint; var width = this.config.signupWindowWidth; var height = this.config.signupWindowHeight; // set borders var leftPosition = window.screen.width / 2 - (width / 2 + 10); // set title and status bars var topPosition = window.screen.height / 2 - (height / 2 + 50); var windowTitle = 'Solid signup'; var windowUrl = signupUrl + '?origin=' + encodeURIComponent(window.location.origin); var windowSpecs = 'resizable,scrollbars,status,width=' + width + ',height=' + height + ',left=' + leftPosition + ',top=' + topPosition; window.open(windowUrl, windowTitle, windowSpecs); var self = this; return new Promise(function (resolve) { self.listen().then(function (webid) { return resolve(webid); }); }); }; //# sourceMappingURL=signup.js.map