Снижение частоты отображения предупреждения "Черновик редактируется в другом окне"

Здравствуйте.

Я являюсь участником форума Discourse (BlenderArtists.org) и у меня монитор 4K, который позволяет разместить две страницы форума рядом.

Иногда, когда я планирую написать длинный комментарий и готовлю ответ (с несколькими цитатами из текущей длинной темы), я открываю редактор сообщений на левой странице и просматриваю ту же тему на правой странице.

Однако при этом очень часто появляется следующее сообщение:

Черновик редактируется в другом окне. Пожалуйста, обновите эту страницу.

Я не против этого предупреждения (я уверен, что в некоторых ситуациях оно полезно).

Но возможно ли добавить опцию в настройках пользователя, чтобы отключить его? Или настроить частоту отображения (таймер)?

Это предупреждающее сообщение мешает спокойно писать сообщение.

Спасибо за рассмотрение возможности добавления этой опции.

5 лайков

Извините, но у нас было слишком много запросов в поддержку по этому вопросу, поэтому назойливые напоминания намеренные. Это очень рискованный рабочий процесс, и вы можете потерять весь свой пост.

Подождите секунду, вы действительно редактируете это в двух местах? Каков точный сценарий воспроизведения?

Просто открытие и просмотр не должны вызывать это предупреждение, вы должны редактировать из двух окон.

1 лайк

Мы автоматически (пытаемся) открыть черновик для редактирования, когда вы переходите в тему. Даже если вы сразу свернете редактор, он все равно будет активен и возникнут конфликты.

4 лайка

Да, я с этим сталкивался. Определённо раздражает, когда это происходит, но я согласен с Джеффом: нам нужно быть осторожными здесь из-за исторических проблем.

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

1 лайк

Это определённо ошибка: защита должна срабатывать только при начале ввода.

3 лайка

Хорошо, если у нас есть воспроизведение ошибки, мы сможем её исправить.

Со мной тоже случалось, что черновик открывался автоматически, но проблема не ограничивается просто предупреждением. Я продолжал печатать пост, а затем получал всплывающее окно, пытающееся перенаправить меня на другую вкладку с более старым черновиком. В этом случае, если я обновляю страницу, получаю только старую версию черновика, так что с этой точки зрения функция не выполняет свою задачу по предотвращению конфликтов.

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

Возможно ли и разумно ли добавить проверку: если в другой вкладке редактор уже открыт для данной темы, то не открывать его в новой вкладке?

4 лайка

На самом деле это слишком сложно… Возможно, мы сможем что-то сделать с помощью веб-воркеров, но это потребует колоссальных изменений, которых я бы не хотел делать.

Мне нужны точные пошаговые инструкции по воспроизведению проблемы. Наше предупреждение срабатывает очень рано; в худшем случае вы потеряете лишь несколько слов. Я полагаю, что если вы работаете офлайн, то могут возникнуть странные ситуации, но это очень редкий случай… Обходной путь — копирование и вставка.

Я только что взглянул на первое сообщение темы (OP).

Я не могу воспроизвести это. Можете ли вы предоставить точные шаги, приводящие к появлению этого ошибочного сообщения? Если вы не редактируете сообщение, существует только один пограничный случай, когда это сообщение может появиться, что можно считать ошибкой. Но это очень незначительный пограничный случай.

  1. Откройте вкладку 1… начните составлять ответ.
  2. Откройте вкладку 2… просматривайте страницу.
  3. На вкладке 1… продолжите составление ответа.
  4. На вкладке 2… сверните редактор (появится предупреждающее сообщение… но только один раз).

Вот что может происходить и сбивать вас с толку:

  1. Откройте вкладку 1… начните составлять ответ.
  2. Откройте вкладку 2… по ошибке вставьте что-то в цитату для ответа.
  3. На вкладке 1… продолжите составление… предупреждение останется… постоянно (потому что мы будем отбрасывать цитату из шага 2).

Я просто не уверен, что именно нужно исправить… Мне нужны инструкции по воспроизведению.

1 лайк

У меня определённо бывали случаи, когда я терял значительный объём контента. Однако из-за этого я стал тщательно избегать срабатывания этого предупреждения, поэтому сейчас не помню точных действий, которые привели к такой серьёзной потере.

Думаю, проблема может быть в том, что при этом сохраняется черновик, перезаписывая то, что вы сделали во вкладке 1. Если так и происходит, это может привести к значительной потере контента. Пока это лишь предположение, но я попробую воспроизвести проблему таким способом и сообщу вам.

Это невозможно, пожалуйста… Мне нужны шаги воспроизведения… Каждый раз при сохранении черновика выполняется тест на конфликт изменений.

Мне нужны пошаговые инструкции воспроизведения для любого случая значительной потери контента.

1 лайк

Понимаю, что вам нужны шаги для воспроизведения. Я поставил напоминание (:tada:) посмотреть это завтра вечером. Было бы полезно узнать (на высоком уровне), как работает тест на конфликты. Генерируется ли уникальный идентификатор при загрузке страницы или что-то в этом роде?

Каждый черновик тесно связан с редактором через уникальный идентификатор. Это работает только в одном направлении.

Что вы имеете в виду под этим?

Я имею в виду следующее: если возникает гонка… и два композитора отвечают на одну и ту же тему для одного и того же пользователя… то победит только один. Каждый раз при сохранении выбирается один владелец.

1 лайк

Хорошо, @sam, у меня есть шаги для воспроизведения. Не знаю, связано ли это с первоначальной проблемой автора темы (поскольку разговор немного свернул в сторону), но в любом случае вот что у меня есть. По сути, если открыть вкладку 2, но продолжить ввод в вкладке 1 до того, как вкладка 2 полностью загрузится, новая страница перейдет в некорректное состояние. Если продолжать ввод в вкладке 1, пока вкладка 2 еще загружается, вкладка 2 загрузит черновик из вкладки 1 таким, каким он был в момент открытия страницы, но вы всё равно сможете редактировать в вкладке 2 даже после того, как вкладка 1 сохранит дополнительные изменения (что приведет к их перезаписи). Вот шаги для воспроизведения:

  1. Откройте тему A и начните composing ответ.
  2. Остановите ввод, чтобы черновик был сохранен.
  3. Откройте тему A в новой вкладке (дублирование вкладки или щелчок правой/средней кнопкой мыши по названию темы — самый простой способ воспроизвести проблему, так как они должны выполнить полную загрузку страницы и поэтому работают медленнее).
  4. Немедленно продолжите composing ответ в вкладке 1, до того, как вкладка 2 закончит загрузку.
  5. Остановите ввод, чтобы черновик был сохранен снова (это должно успешно завершиться, как и ожидалось).
  6. Перейдите на вкладку 2 и введите текст в редакторе.
  7. Остановите ввод. Черновик будет сохранен, хотя должно было появиться предупреждение. Это перезапишет все дополнительные изменения, которые вы внесли в вкладке 1 на шаге #4. (Если вы получили предупреждение, как ожидалось, вероятно, вы слишком долго ждали перед началом ввода на шаге #4.) Обратите внимание, что на этом этапе вы больше не сможете вводить текст в вкладке 1 без перезагрузки этой вкладки.

Обратите внимание, что на шаге #4 вам на самом деле не нужно останавливать ввод и сохранять черновик до того, как вкладка 2 завершит загрузку. Достаточно просто начать ввод, чтобы всё перешло в некорректное состояние. На самом деле вполне разумно открыть дублирующую вкладку в фоновом режиме, чтобы позже проверить что-то, и продолжать ввод в вкладке 1 в это время. Но если сделать это слишком быстро, вкладки перейдут в некорректное состояние, и вы случайно перезапишете то, что добавили в вкладке 1. Конечно, сворачивание редактора также сохраняет черновик, поэтому, попав в это некорректное состояние, простое сворачивание редактора в вкладке 2, чтобы убрать его с пути, перезапишет ваш последний черновик из вкладки 1.

На этом этапе, если вы вернетесь на вкладку 1, где изначально составляли сообщение, вы больше не сможете вводить текст и получите предупреждение, которое должно было появиться в вкладке 2. Если вы поймете, что ваш черновик потерян, вы, конечно, можете скопировать содержимое редактора из вкладки 1. Но если вы не заметили этого и перезагрузите страницу (следуя инструкциям предупреждения), вы потеряете внесенные изменения и не сможете их восстановить.

Дайте знать, если у вас всё ещё возникают трудности с воспроизведением проблемы с помощью этих шагов. Я могу воспроизвести проблему довольно стабильно, следуя этим шагам (иногда переключаясь на новые темы, чтобы получить свежие черновики), поэтому, надеюсь, этой информации достаточно.

10 лайков

Отлично, у меня есть исправление:

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

Кажется, мой предыдущий ответ о том, как мы отслеживаем черновики, был немного размытым. Я думаю, что дело в том, что я был слишком наивен и одновременно слишком усложнял свой алгоритм. Это смертельное сочетание. Новый алгоритм объяснять гораздо проще.

  • Каждый раз, когда клиент сохраняет черновик, он сообщает серверу свой «номер последовательности».

  • Если номер последовательности совпадает, сервер увеличивает его на 1 и возвращает клиенту (это наш новый номер последовательности).

  • Если номер последовательности не совпадает, сервер сообщает клиенту о конфликте и не сохраняет черновик.

  • При перезагрузке или загрузке страницы сервер сообщает клиенту текущий номер последовательности.

Моя предыдущая реализация была излишне сложной: она пыталась избежать увеличения номера последовательности во многих случаях, отслеживая владельца последовательности. Ваш тестовый случай показал, насколько это плохо и как может привести к потере контента.

Это исправление уже доступно на meta. Дайте знать, если сможете найти ещё какие-либо пограничные случаи в этой системе.

10 лайков

Это очень лестный комплимент, @seanblue, тебе стоит гордиться этим результатом :tada:

4 лайка

У меня здесь та же проблема в meta:

  • Я открыл редактор и ввёл заголовок.
  • Чтобы сделать скриншот этой ошибки, я изменил тип с «новая тема» на «новое сообщение».
  • Я отменил создание темы (то есть сообщения), так как не смог вернуть его обратно в тему.
  • Затем я начал новую тему.

Было показано предупреждение некорректно (поскольку я уже отменил сообщение):

Теперь, даже когда я выбираю «отказаться от неё», каждые 10–20 секунд появляется это сообщение:

при этом других вкладок нет.

Это происходит только если я переключаюсь с темы на сообщение. Похоже, отмена сообщения на самом деле не отменяет его.

2 лайка

Это требует довольно много работы — переключения между вкладками в браузере, но да… в данном случае функция «отказаться» явно не работает как надо, нам стоит это исправить.

5 лайков