UNPKG

@launchmenu/applet-session-manager

Version:
43 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupSessionDisposer = void 0; const model_react_1 = require("model-react"); const _1 = require("."); /** * Sets up a session disposer that disposes non selected session that are on the homepage * @param LM The LM instance * @returns A function to dispose */ function setupSessionDisposer(LM) { const autoClose = new model_react_1.DataCacher(h => LM.getSettingsManager().getSettingsContext(h).get(_1.settings).autoCloseEmpty.get(h)); const sessionManager = LM.getSessionManager(); const homeSessions = new model_react_1.DataCacher(h => sessionManager.getSessions(h).filter(session => session.isHome(h))); let timeoutID = null; const observer = new model_react_1.Observer(h => { const ac = autoClose.get(h); return { autoClose: ac, homeSessions: ac && homeSessions.get(h), selected: sessionManager.getSelectedSession(h), }; }).listen(({ autoClose, homeSessions, selected }) => { if (autoClose && homeSessions) { // Wait a second before removing old sessions to allow for the transition to finish // TODO: find a proper way to deal with the transition, which doesn't depend on an arbitrary number if (timeoutID) clearTimeout(timeoutID); timeoutID = setTimeout(() => { // Remove all sessions that are empty and not selected homeSessions .filter(session => session != selected) .forEach(session => { sessionManager.removeSession(session); session.destroy(); }); }, 1000); } }); return () => observer.destroy(); } exports.setupSessionDisposer = setupSessionDisposer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBTZXNzaW9uRGlzcG9zZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2V0dXBTZXNzaW9uRGlzcG9zZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQWlEO0FBQ2pELHdCQUEyQjtBQUUzQjs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsRUFBYztJQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHdCQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3BGLENBQUM7SUFDRixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLHdCQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDcEMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JFLENBQUM7SUFFRixJQUFJLFNBQVMsR0FBMEIsSUFBSSxDQUFDO0lBQzVDLE1BQU0sUUFBUSxHQUFHLElBQUksc0JBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUM5QixNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE9BQU87WUFDSCxTQUFTLEVBQUUsRUFBRTtZQUNiLFlBQVksRUFBRSxFQUFFLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7U0FDakQsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUMsRUFBRSxFQUFFO1FBQzlDLElBQUksU0FBUyxJQUFJLFlBQVksRUFBRTtZQUMzQixtRkFBbUY7WUFDbkYsbUdBQW1HO1lBQ25HLElBQUksU0FBUztnQkFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3hCLHNEQUFzRDtnQkFDdEQsWUFBWTtxQkFDUCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDO3FCQUN0QyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ2YsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDdEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztZQUNYLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNaO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBbkNELG9EQW1DQyJ9