feat(lampa): register P365X in left menu with fallback

This commit is contained in:
OpenClaw Assistant
2026-03-03 11:34:50 +03:00
parent a643572211
commit 693224d8eb

View File

@@ -209,37 +209,47 @@
v.load();
};
addLampaMenuButton();
registerLeftMenuEntry();
log('UI mounted');
}
function addLampaMenuButton() {
function registerLeftMenuEntry() {
try {
if (!window.Lampa || !Lampa.SettingsApi || !Lampa.SettingsApi.addParam) return;
if (!window.Lampa) return;
Lampa.SettingsApi.addParam({
component: 'interface',
param: {
name: 'p365x_open_btn',
type: 'button'
},
field: {
name: 'P365X каталог',
description: 'Открыть каталог P365X'
},
onChange: function () {
openPanel();
}
});
// Основной путь: пункт в левом меню
if (Lampa.Menu && typeof Lampa.Menu.add === 'function') {
Lampa.Menu.add({
title: 'P365X',
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>',
onSelect: function () { openPanel(); },
onClick: function () { openPanel(); },
action: function () { openPanel(); }
});
log('Left menu entry registered via Lampa.Menu.add');
}
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) {
log('Settings button error: ' + (e && e.message ? e.message : e));
log('Menu registration error: ' + (e && e.message ? e.message : e));
}
}
function start() {
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();
} catch (e) {
log('Start error: ' + (e && e.message ? e.message : e));
@@ -253,6 +263,9 @@
if (e && e.type === 'ready') start();
});
} else {
window.addEventListener('load', start);
// fallback, чтобы не падать в старых оболочках
window.addEventListener('load', function () {
setTimeout(start, 300);
});
}
})();