Skip to content

added tab support if window is undefine#19

Merged
ivanvit100 merged 5 commits into
ivanvit100:masterfrom
Dordovel:master
Jun 3, 2026
Merged

added tab support if window is undefine#19
ivanvit100 merged 5 commits into
ivanvit100:masterfrom
Dordovel:master

Conversation

@Dordovel

@Dordovel Dordovel commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Описание (Description)

На android не работает кнопка скачивание по причине "browserApi.windows is undefine".
Добавление поддержка открытия в новой вкладке

Тип изменений (Type of Changes)

  • [ x] ⚠️ Исправление бага (Bug fix)
  • ⚙️ Новая функция (New feature)
  • ♻️ Рефакторинг без изменения поведения (Refactoring, no behavior change)
  • ⚗️ Тесты (Tests)
  • ℹ️ Документация (Documentation)
  • ✏️ Сборка / CI / зависимости (Build / CI / dependencies)

Чеклист (Checklist)

  • [ x] Тесты проходят локально — npm test (Tests pass locally)
  • Покрытие кода не снизилось — npm run test:coverage (Code coverage has not decreased)
  • [ x] Код следует стилю проекта (Code follows the project style)
  • Добавлены / обновлены тесты для изменённой логики (Tests added / updated for changed logic)
  • Документация обновлена, если требуется (Documentation updated if needed)

@ivanvit100 ivanvit100 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Благодарю за Ваш вклад!
Использование расширения в мобильных браузерах на данный момент вообще не предполагалось: в Chrome на Android, насколько мне известно, расширений не предусмотрено, а для мобильного Firefox поддержка была мной отключена при сборке в addons.mozilla.org.
Поэтому, если не секрет, поделитесь, как и на какой браузер получилось установить дополнение?

Обязательно протестирую работу расширения на мобильных устройствах, если проблема портирования заключалась только во вкладках.

P.S. Небольшой совет по оформлению PR: для корректного рендера чекбокса в [] должен стоять либо пробел, либо x. Если дописать x, но не стереть пробел - он не будет рендерится. Чтобы не редактировать эти списки вручную можно открыть PR без отметок в чекбоксах, после чего прожать их на уже отрендеренной странице.

Comment thread background/Background.js Outdated
});
if (tab && tab.id) browserAPI.tabs.update(tab.id, { active: true });
}
sendResponse({ ok: true });

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не связано с изменённым кодом напрямую, и всё же раз идёт изменение этого блока, то стоит sendResponse обрабатывать отдельно в каждой ветке и дополнительно ввести что-то в роде

else sendResponse({ ok: false, error: 'No window/tab API available' });

@Dordovel Dordovel Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Firefox Developer Edition + Firefox Nightly. В Firefox Nightly входим в режим Debug и выбираем install extension from file. Можно включить USB Debugging и через Firefox Developer Edition отлаживать расширения.

Упаковка: zip -r -FS ../DLoadLib.zip * --exclude '.git'

Comment thread ui/PopupController.js
Comment on lines +622 to +631
else if(browserAPI.tabs) {
const tab = await browserAPI.tabs.create({
url: fileUploadUrl,
active: true
});
if (tab && tab.id) {
await new Promise(resolve => setTimeout(resolve, 500));
browserAPI.tabs.update(tab.id, { active: true });
} else console.warn('Tab created but no ID found:', tab);
}

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 одинаковых фрагмента кода: здесь и на строчках 694-718. Имеет смысл вынести в отдельную функцию для удобства редактирования в будущем.
Похожий фрагмент также есть в Background.js - если получится, было бы прекрасно заменить его тем же единым обработчиком, но это уже опционально.

@Dordovel Dordovel Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не успею сделать, меня некоторое время не будет

Comment thread ui/PopupController.js Outdated
});
if (tab && tab.id) {
await new Promise(resolve => setTimeout(resolve, 500));
browserAPI.tabs.update(tab.id, { active: true });

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tabs.update избыточен в данном случае, поскольку вкладка устанавливается активной уже на этапе create. Для windows сценария подобный механизм был введён вследствие специфики некоторых оконных менеджеров, которые могут отложить установку фокуса при создании окна, однако в случае вкладок подобная перестраховка навряд-ли имеет смысл.

@ivanvit100 ivanvit100 merged commit 5a0aec6 into ivanvit100:master Jun 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants