Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В конце октября, после волны статей от хайповых авторов, я написал небольшое расширение для Хрома которое позволяет прятать нежелательные статьи из ленты. Расширение было встречено очень тепло (+285, 53_000 просмотров и 70+ звезд на гитхаб) и я даже опубликовал его в Chrome Extension Store. Потом был опрос о наиболее желаемой следующей фиче и самой востребованной (129 голосов) оказалась поддержка Firefox. И вот, спустя месяц, расширение опубликовано в Firefox Addons.
Кому интересно по каким граблям пришлось потоптаться, прошу под кат!
Про Firefox
Признаюсь честно, поддержка FF далась мне не с первого раза. Несмотря на то, что в результате изменения были минимальными, в какой-то момент я уже думал сдаться, потому что все шло не так.
Сначала тестовый код не хотел даже загружаться в Firefox из-за неверного формата манифеста. Пришлось гуглить и пробовать несколько раз, причем даже манифест из официального примера работать не захотел. Потом, после того как Firefox вдруг принял файлы, он, естественно, отказался их запускать, потому что "файлы не проверены, подписи не сделаны, работать не буду". В гугле нашелся специальный флаг -xpinstall.signatures.required = false
который нужно выставить что бы разрешить загрузку расширений без подписи, но ни в стабильной версии ни в бете он не работает. Помогло только в Nightly.
Потом, поскольку мне нужно использовать хранилище что-бы хранить настройки, Firefox потребовал дать ему id (ставится в "browser_specific_settings":{"gecko": {"id":"{GUID}"}})
). На что Chrome тут же заявил, что свойство browser_specific_settings
он не знает и выдал предупреждение. Это исправить так и не удалось, но все вроде бы работает.
Следом возникли проблемы со страницей настроек. Если в Firefox она отображалась красиво, то в Chrome — в виде отдельного окна. Полечилось с помощью изменения options
в манифесте на "options_ui": {"page": "options.html", pen_in_tab": true}
После чего все наконец то запустилось, и я решил, что наконец-то всех победил. Но не тут-то было. Когда вы грузите бандл, Firefox автоматически запускает линтинг кода и если что-то ему не так, отказывает в загрузке для проверки. В моем случае не так было использования свойств классов (что не страшно и легко лечится), а также использование es6 модулей, что, внезапно, лечится гораздо хуже. Сначала я думал свалить все в один файл (благо размер кодовой базы просто смешной), но потом решил "не комильфо" и настроил WebPack для билда (все равно давно хотел посмотреть на 4ый вебпак)
Кстати, несмотря на то что теперь я публикую собранные артефакты, вы все еще можете использовать код как есть, прямо из src
папки. Так что все осталось так же прозрачно, как и было. Мне по-прежнему можно не верить и пользоваться простым и понятным кодом из репозитория.
После WebPack-а все пошло почти гладко. Пришлось еще немного помучаться с описанием расширения (Огнелис подхватил мою дефолтную локаль), но это уже были мелочи.
В результате, 20.12.2020 я отправил расширение на ревью (и был 63 в очереди), а уже 21.12.2020 получил письмо счастья о том, что оно одобрено к публикации. Спасибо команде ревьверов за оперативность.
Новый функционал
Кроме публикации в Firefox я решил добавить еще одну фичу о которой тоже просили (ledascho) — блокировка хаба по имени. Сейчас нет возможности отписаться от конкретного хаба и новая возможность это устраняет. Эта функциональность позволяет полностью скрыть статью, даже если она принадлежит и другим хабам на которые вы подписаны.
Итого, на сегодняшний день реализована блокировка:
- По нику автора
- По имени компании
- По имени хаба
UI остался прежним, одно поле для всех.
Если вы не используете маркет, возможно стоит выкачать свежую версию с GitHub, тем более что в последний релиз так же вошли исправления мелких, но досадных багов (например, не работающий клик на кнопке, если идеально попасть по SVG элементу).
А, да чуть не забыл. Была идея как-то трекать авторов которых чаще всего блокируют, но это потребовало бы собирать и отправлять информацию об использовании приложения, чего я делать не хочу. Во-первых, это благодатная почва для паранойи, во-вторых, более серьезное ревью от маркета. Поэтому, если вы хотите поделиться своим конфигом вы можете сделать пулл реквест сюда, там есть пример.
И немного статистики
Сейчас у расширения 68 :) пользователей и три оценки. Так что мои опасения что расширение может хоть как-нибудь повлиять на сам Хабр и навредить ему оказались полностью беспочвенными. 40 пользователей из России, 11 из Украины, и еще по нескольку из Казахстана, Узбекистана, Чехии, Штатов, Британии и Израиля.
На этом все. Добавлять новые фичи я пока не планирую (в этом году точно, у меня скоро отпуск в котором я хочу наконец-то довести до ума еще один пет проект об измерении производительности веб-сайтов
Если есть пожелания или вы нашли баг, пишите в комментариях или в issues — кому как удобнее.
Ссылки:
- Firefox
- Chrome
- Repo
Всех с наступающими праздниками, и хорошего нового года!
P.S. Спасибо Sharon McCutcheon за КПДВ Mozilla Corporation за их лого