Боюсь, это невозможно.
У этих свойств нет сеттеров; даже если бы они были, ваши изменения применялись бы только временно в первом окне. Как только пользователь перейдёт на вторую вкладку, данные будут основываться на том, что хранится в базе данных. Темы не имеют доступа к бэкенду; они могут изменять только фронтенд.
Что вы можете сделать, так это добавить хеш к вашей ссылке и проверить его, например, так:
import { withPluginApi } from "discourse/lib/plugin-api";
import bootbox from "bootbox";
export default {
name: "first-login-bootbox",
initialize() {
withPluginApi("0.8", api => {
const user = api.getCurrentUser();
if (!user) return;
if (
!user.read_first_notification &&
!user.enforcedSecondFactor &&
!window.location.hash
) {
const text = `Lorem ipsum dolor sit amet <a href="http://localhost:3000/new-topic#some-hash" target="_blank">Ссылка</a>, consectetur adipiscing elit, sed do eiusmod tempor`;
bootbox.alert(text);
}
});
}
};
Не уверен, была ли ссылка на “/new-topic” в вашем посте просто примером или это то, что вы хотите сделать. Если это желаемый результат, то у вас есть ещё одна проблема. Даже если bootbox не отображается на странице с хешем, пользователь всё равно увидит это…
…и композер не откроется, что логично, так как пользователю совершенно неожиданно начать писать тему сразу при первом просмотре страницы.
Можно ли спросить, чего вы пытаетесь добиться здесь? Вы хотите сообщить пользователю что-то конкретное?
Способ, который я видел на других сайтах, — это редактирование приветственного сообщения, но если это возможно, есть и альтернативы.
Вот что я предлагаю:
- Создайте тему и добавьте туда всю нужную информацию.
- Опубликуйте эту тему.
- Добавьте ссылку на эту тему в bootbox и откройте её в новой вкладке.
Таким образом, когда пользователь нажмёт на ссылку, он увидит что-то вроде этого (без оверлея):
После того как он закончит с этой страницей, сможет вернуться на первую вкладку, закрыть bootbox, прочитать первое уведомление и продолжить работу на сайте.
Таким образом, вам даже не нужно добавлять или проверять хеш. Вот пример фрагмента кода:
import { withPluginApi } from "discourse/lib/plugin-api";
import bootbox from "bootbox";
export default {
name: "first-login-bootbox",
initialize() {
withPluginApi("0.8", api => {
const user = api.getCurrentUser();
if (!user) return;
if (!user.read_first_notification && !user.enforcedSecondFactor) {
const text = `Lorem ipsum dolor sit amet <a href="http://my.site.com/pub/bentley-flying-spur-s-production-milestone" target="_blank">Ссылка</a>, consectetur adipiscing elit, sed do eiusmod tempor`;
bootbox.alert(text);
}
});
}
};