feat(lampa): register P365X in left menu with fallback
This commit is contained in:
@@ -209,37 +209,47 @@
|
|||||||
v.load();
|
v.load();
|
||||||
};
|
};
|
||||||
|
|
||||||
addLampaMenuButton();
|
registerLeftMenuEntry();
|
||||||
log('UI mounted');
|
log('UI mounted');
|
||||||
}
|
}
|
||||||
|
|
||||||
function addLampaMenuButton() {
|
function registerLeftMenuEntry() {
|
||||||
try {
|
try {
|
||||||
if (!window.Lampa || !Lampa.SettingsApi || !Lampa.SettingsApi.addParam) return;
|
if (!window.Lampa) return;
|
||||||
|
|
||||||
Lampa.SettingsApi.addParam({
|
// Основной путь: пункт в левом меню
|
||||||
component: 'interface',
|
if (Lampa.Menu && typeof Lampa.Menu.add === 'function') {
|
||||||
param: {
|
Lampa.Menu.add({
|
||||||
name: 'p365x_open_btn',
|
title: 'P365X',
|
||||||
type: 'button'
|
component: 'p365x_proxy_component',
|
||||||
},
|
icon: '<svg width="36" height="36" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg"><circle cx="32" cy="32" r="30" fill="currentColor" opacity="0.18"/><text x="32" y="39" text-anchor="middle" font-size="20" fill="currentColor" font-family="sans-serif">P</text></svg>',
|
||||||
field: {
|
onSelect: function () { openPanel(); },
|
||||||
name: 'P365X каталог',
|
onClick: function () { openPanel(); },
|
||||||
description: 'Открыть каталог P365X'
|
action: function () { openPanel(); }
|
||||||
},
|
});
|
||||||
onChange: function () {
|
log('Left menu entry registered via Lampa.Menu.add');
|
||||||
openPanel();
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
log('Settings button registered');
|
// Фолбэк: оставим кнопку в настройках, если API меню недоступно
|
||||||
|
if (Lampa.SettingsApi && typeof Lampa.SettingsApi.addParam === 'function') {
|
||||||
|
Lampa.SettingsApi.addParam({
|
||||||
|
component: 'interface',
|
||||||
|
param: { name: 'p365x_open_btn', type: 'button' },
|
||||||
|
field: { name: 'P365X каталог', description: 'Открыть каталог P365X' },
|
||||||
|
onChange: function () { openPanel(); }
|
||||||
|
});
|
||||||
|
log('Fallback settings button registered');
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log('Settings button error: ' + (e && e.message ? e.message : e));
|
log('Menu registration error: ' + (e && e.message ? e.message : e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function start() {
|
function start() {
|
||||||
try {
|
try {
|
||||||
|
// Принцип как у surs.js: запуск после готовности приложения + ветка по версии Lampa
|
||||||
|
var appDigital = (window.Lampa && Lampa.Manifest && Lampa.Manifest.app_digital) ? Number(Lampa.Manifest.app_digital) : 0;
|
||||||
|
log('Lampa app_digital=' + appDigital);
|
||||||
mountUi();
|
mountUi();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log('Start error: ' + (e && e.message ? e.message : e));
|
log('Start error: ' + (e && e.message ? e.message : e));
|
||||||
@@ -253,6 +263,9 @@
|
|||||||
if (e && e.type === 'ready') start();
|
if (e && e.type === 'ready') start();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
window.addEventListener('load', start);
|
// fallback, чтобы не падать в старых оболочках
|
||||||
|
window.addEventListener('load', function () {
|
||||||
|
setTimeout(start, 300);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user