Skip to content

Commit dec3f9a

Browse files
Update key_off.js
1 parent 7480df2 commit dec3f9a

1 file changed

Lines changed: 40 additions & 21 deletions

File tree

‎key_off.js‎

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,25 @@
3333
function getHiddenLanguages() {
3434
// Отримуємо збережений масив прихованих мов
3535
const stored = Lampa.Storage.get('keyboard_hidden_layouts', '[]');
36+
log('getHiddenLanguages: stored string=' + stored);
3637
try {
3738
const parsed = JSON.parse(stored);
3839
log('getHiddenLanguages: parsed=' + JSON.stringify(parsed));
3940
return Array.isArray(parsed) ? parsed : [];
4041
} catch (e) {
41-
log('getHiddenLanguages: parse error, returning []');
42+
log('getHiddenLanguages: parse error=' + e.message + ', returning []');
4243
return [];
4344
}
4445
}
4546

4647
function saveHiddenLanguages(hiddenCodes) {
4748
log('saveHiddenLanguages: saving ' + JSON.stringify(hiddenCodes));
48-
Lampa.Storage.set('keyboard_hidden_layouts', JSON.stringify(hiddenCodes));
49+
const jsonString = JSON.stringify(hiddenCodes);
50+
Lampa.Storage.set('keyboard_hidden_layouts', jsonString);
51+
52+
// Перевіряємо, що збереглося
53+
const verified = Lampa.Storage.get('keyboard_hidden_layouts', '[]');
54+
log('saveHiddenLanguages: verified stored value=' + verified);
4955

5056
// Також зберігаємо в окремі ключі для зворотної сумісності
5157
LANGUAGES.forEach(lang => {
@@ -143,19 +149,21 @@
143149
function showHideLayoutsDialog() {
144150
log('showHideLayoutsDialog: opened');
145151
const defaultCode = getDefaultCode();
146-
const hiddenCodes = getHiddenLanguages();
147152

148-
log('showHideLayoutsDialog: defaultCode=' + defaultCode + ' hiddenCodes=' + JSON.stringify(hiddenCodes));
149-
150-
// Створюємо копію масиву для роботи
151-
let workingHiddenCodes = [...hiddenCodes];
153+
// ВАЖЛИВО: отримуємо поточний стан з Storage кожного разу
154+
let hiddenCodes = getHiddenLanguages();
155+
log('showHideLayoutsDialog: initial hiddenCodes=' + JSON.stringify(hiddenCodes));
152156

153157
function buildItems() {
158+
// Перечитуємо поточний стан перед побудовою
159+
hiddenCodes = getHiddenLanguages();
160+
log('buildItems: current hiddenCodes=' + JSON.stringify(hiddenCodes));
161+
154162
// Виключаємо розкладку за замовчуванням зі списку
155163
return LANGUAGES
156164
.filter(lang => lang.code !== defaultCode)
157165
.map(lang => {
158-
const selected = workingHiddenCodes.includes(lang.code);
166+
const selected = hiddenCodes.includes(lang.code);
159167
log('buildItems: lang=' + lang.title + ' code=' + lang.code + ' selected=' + selected);
160168
return {
161169
title: lang.title,
@@ -172,40 +180,47 @@
172180
title: 'Приховати розкладки',
173181
items: items,
174182
onSelect(item) {
175-
log('showHideLayoutsDialog onSelect: item.title=' + item.title + ' item.code=' + item.code);
183+
log('showHideLayoutsDialog onSelect: START - item.title=' + item.title + ' item.code=' + item.code);
176184

177185
if (!item || !item.code) {
178186
log('showHideLayoutsDialog onSelect: no item.code, abort');
179187
return;
180188
}
181189

182-
// Перемикаємо стан в робочому масиві
183-
const index = workingHiddenCodes.indexOf(item.code);
190+
// Отримуємо ПОТОЧНИЙ стан з Storage
191+
let currentHiddenCodes = getHiddenLanguages();
192+
log('showHideLayoutsDialog onSelect: BEFORE toggle, currentHiddenCodes=' + JSON.stringify(currentHiddenCodes));
193+
194+
// Перемикаємо стан
195+
const index = currentHiddenCodes.indexOf(item.code);
184196
if (index > -1) {
185197
// Видаляємо з прихованих
186-
workingHiddenCodes.splice(index, 1);
187-
log('showHideLayoutsDialog onSelect: removed ' + item.code + ', new array=' + JSON.stringify(workingHiddenCodes));
198+
currentHiddenCodes.splice(index, 1);
199+
log('showHideLayoutsDialog onSelect: REMOVED ' + item.code);
188200
} else {
189201
// Додаємо до прихованих
190-
workingHiddenCodes.push(item.code);
191-
log('showHideLayoutsDialog onSelect: added ' + item.code + ', new array=' + JSON.stringify(workingHiddenCodes));
202+
currentHiddenCodes.push(item.code);
203+
log('showHideLayoutsDialog onSelect: ADDED ' + item.code);
192204
}
193205

194-
// Зберігаємо оновлений масив
195-
saveHiddenLanguages(workingHiddenCodes);
206+
log('showHideLayoutsDialog onSelect: AFTER toggle, currentHiddenCodes=' + JSON.stringify(currentHiddenCodes));
207+
208+
// ЗБЕРІГАЄМО НЕГАЙНО
209+
saveHiddenLanguages(currentHiddenCodes);
196210

197-
// Оновлюємо стан чекбокса
198-
item.selected = workingHiddenCodes.includes(item.code);
199-
log('showHideLayoutsDialog onSelect: item.selected=' + item.selected);
211+
// Перевіряємо, що збереглося
212+
const verifyHidden = getHiddenLanguages();
213+
log('showHideLayoutsDialog onSelect: VERIFIED after save=' + JSON.stringify(verifyHidden));
200214

201215
// Оновлюємо клавіатуру
202216
if (window.keyboard) {
203217
window.keyboard.init();
204218
log('showHideLayoutsDialog onSelect: keyboard reinitialized');
205219
}
206220

207-
// Перебудовуємо список елементів
221+
// Перебудовуємо список елементів (це заново прочитає з Storage)
208222
items = buildItems();
223+
log('showHideLayoutsDialog onSelect: items rebuilt, count=' + items.length);
209224

210225
// Оновлюємо Select dialog
211226
if (typeof Lampa.Select.update === 'function') {
@@ -219,9 +234,13 @@
219234

220235
// Оновлюємо відображення в налаштуваннях
221236
updateHideDisplay();
237+
238+
log('showHideLayoutsDialog onSelect: END');
222239
},
223240
onBack() {
224241
log('showHideLayoutsDialog onBack');
242+
// При закритті оновлюємо відображення
243+
updateHideDisplay();
225244
Lampa.Controller.toggle('settings_component');
226245
}
227246
});

0 commit comments

Comments
 (0)