Баннер приветственной ссылки

Итак, теперь, когда я могу вернуть баннер, но он мешает работе каналов, как мне обойти эту проблему? Я подумал использовать CSS, чтобы скрыть баннер, когда каналы видны, предполагая, что URL изменится, но этого не происходит.

Есть ли какие-либо советы, как решить это, не отключая баннер на мобильных устройствах через страницу настроек?


ОБНОВЛЕНИЕ: Я ошибался, предполагая, что URL не меняется. Я просто увидел, что URL содержит “General”, что является одной из моих категорий, и предположил, что он не меняется. Так что ChatGPT помог мне достичь этого, если кому-то интересно (хотя это могло быть что-то, что сам компонент включил, чтобы не мешать каналам на мобильных устройствах):

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
  api.onPageChange(() => {
    const chatPath = /^\/chat(\/|$)/;

    let attempts = 0;
    const maxAttempts = 10;

    function hideBanner() {
      const banner = document.querySelector('.welcome-link-banner-wrapper');
      if (banner) {
        banner.style.display = chatPath.test(window.location.pathname) ? 'none' : 'block';
      } else if (attempts < maxAttempts) {
        attempts++;
        setTimeout(hideBanner, 200);
      }
    }

    hideBanner();
  });
});

Я добавил это в новый компонент, который создал под названием: Hide Welcome Banner on Channels (mobile), во вкладку JS.

Похоже, это работает. Если кто-то из экспертов по JavaScript видит, что можно подправить или улучшить, пожалуйста, поделитесь.

1 лайк

Вы могли бы заменить это на ‘block’, поскольку (если я правильно понимаю), оно должно быть display: block. Не уверен, однако, что это внесёт существенную разницу.

1 лайк

Спасибо. Я только что изменил это, и всё ещё работает, поэтому оставлю это как block. Также обновил скрипт здесь.

1 лайк