feat: Añadir sincronización en tiempo real para la gestión de aplicaciones
This commit is contained in:
@@ -1731,6 +1731,8 @@ var TS_INSTALLED_APPS_CACHE_KEY = '';
|
|||||||
var TS_INSTALLED_APPS_LOADING = false;
|
var TS_INSTALLED_APPS_LOADING = false;
|
||||||
var TS_ESSENTIAL_APPS = new Set(['index', 'personas', 'dataman']);
|
var TS_ESSENTIAL_APPS = new Set(['index', 'personas', 'dataman']);
|
||||||
var TS_LOCKED_APPS = new Set(['index', 'personas', 'dataman']);
|
var TS_LOCKED_APPS = new Set(['index', 'personas', 'dataman']);
|
||||||
|
var TS_APPS_SYNC_LISTENER_ID = null;
|
||||||
|
var TS_APPS_SYNC_REFRESH_PENDING = false;
|
||||||
|
|
||||||
function TS_getAppInstallStorageKey() {
|
function TS_getAppInstallStorageKey() {
|
||||||
var dbName = 'telesec';
|
var dbName = 'telesec';
|
||||||
@@ -2250,6 +2252,90 @@ function TS_resetAppsToDefault() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function TS_queueAppsUIRefresh() {
|
||||||
|
if (TS_APPS_SYNC_REFRESH_PENDING) return;
|
||||||
|
TS_APPS_SYNC_REFRESH_PENDING = true;
|
||||||
|
setTimeout(() => {
|
||||||
|
TS_APPS_SYNC_REFRESH_PENDING = false;
|
||||||
|
try {
|
||||||
|
SetPages();
|
||||||
|
var currentPage = location.hash.replace('#', '').split('?')[0].split(',')[0];
|
||||||
|
if (currentPage === 'tienda_apps' && PAGES.tienda_apps && typeof PAGES.tienda_apps.index === 'function') {
|
||||||
|
PAGES.tienda_apps.index();
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Apps UI refresh warning', e);
|
||||||
|
}
|
||||||
|
}, 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
function TS_applyInstalledAppsFromConfigValue(raw, key) {
|
||||||
|
if (key !== TS_getAppInstallDocId()) return;
|
||||||
|
if (raw == null) {
|
||||||
|
TS_setInstalledAppsCache(TS_buildDefaultInstalledSet());
|
||||||
|
TS_queueAppsUIRefresh();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (typeof raw === 'string') {
|
||||||
|
TS_decrypt(
|
||||||
|
raw,
|
||||||
|
SECRET,
|
||||||
|
(decrypted) => {
|
||||||
|
var parsed = TS_parseInstalledAppsPayload(decrypted);
|
||||||
|
if (parsed) {
|
||||||
|
TS_setInstalledAppsCache(parsed);
|
||||||
|
TS_queueAppsUIRefresh();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'config',
|
||||||
|
key
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var parsed = TS_parseInstalledAppsPayload(raw);
|
||||||
|
if (parsed) {
|
||||||
|
TS_setInstalledAppsCache(parsed);
|
||||||
|
TS_queueAppsUIRefresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function TS_applyExternalAppsFromConfigValue(raw, key) {
|
||||||
|
if (key !== TS_getExternalAppsDocId()) return;
|
||||||
|
if (raw == null) {
|
||||||
|
TS_setExternalAppsCache([]);
|
||||||
|
TS_queueAppsUIRefresh();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (typeof raw === 'string') {
|
||||||
|
TS_decrypt(
|
||||||
|
raw,
|
||||||
|
SECRET,
|
||||||
|
(decrypted) => {
|
||||||
|
var parsed = TS_parseExternalAppsPayload(decrypted);
|
||||||
|
TS_setExternalAppsCache(parsed);
|
||||||
|
TS_applyExternalAppsRegistry(TS_EXTERNAL_APPS_CACHE);
|
||||||
|
TS_queueAppsUIRefresh();
|
||||||
|
},
|
||||||
|
'config',
|
||||||
|
key
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var parsed = TS_parseExternalAppsPayload(raw);
|
||||||
|
TS_setExternalAppsCache(parsed);
|
||||||
|
TS_applyExternalAppsRegistry(TS_EXTERNAL_APPS_CACHE);
|
||||||
|
TS_queueAppsUIRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
function TS_initAppsRealtimeSync() {
|
||||||
|
if (!window.DB || typeof DB.map !== 'function') return;
|
||||||
|
if (TS_APPS_SYNC_LISTENER_ID) return;
|
||||||
|
TS_APPS_SYNC_LISTENER_ID = DB.map('config', (data, key) => {
|
||||||
|
TS_applyInstalledAppsFromConfigValue(data, key);
|
||||||
|
TS_applyExternalAppsFromConfigValue(data, key);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function checkRole(role) {
|
function checkRole(role) {
|
||||||
var roles = SUB_LOGGED_IN_DETAILS.Roles || '';
|
var roles = SUB_LOGGED_IN_DETAILS.Roles || '';
|
||||||
var rolesArr = roles.split(',');
|
var rolesArr = roles.split(',');
|
||||||
@@ -2260,6 +2346,7 @@ function checkRole(role) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function SetPages() {
|
function SetPages() {
|
||||||
|
TS_initAppsRealtimeSync();
|
||||||
var expectedExternalKey = TS_getExternalAppsDocId();
|
var expectedExternalKey = TS_getExternalAppsDocId();
|
||||||
if (!TS_EXTERNAL_APPS_READY || TS_EXTERNAL_APPS_CACHE_KEY !== expectedExternalKey) {
|
if (!TS_EXTERNAL_APPS_READY || TS_EXTERNAL_APPS_CACHE_KEY !== expectedExternalKey) {
|
||||||
TS_loadExternalAppsFromDB().then(() => {
|
TS_loadExternalAppsFromDB().then(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user