Как было раньше: диалоги в МСДЖ это была одна сущность, то есть собственно таблицы диалогов и членств юзеров, а чаты гильдии — другая. Из-за этого как таковой месседжинг на ФКФВ был не очень консистентный: одни чаты перечислены в МСДЖ, другой важный чат лежит в гильдии, куда надо отдельно идти. Как результат, пропустить последние реплики от участников гильдии (а там люди нормально так пишут) в таком случае очень легко.
Как сейчас. Появились новые универсальные сущности: чаты и их членства. Чат может быть прикреплен к гильдии (и тогда там пишут до 4 человек), а может и нет (тогда это классический диалог 1:1). В этом случае ничто не мешает нам чат гильдии указать прямо в МСДЖ, чтобы можно было им любоваться и в общем перечне чатов, и на странице своей гильдии. Если вам удобнее, то чат гильдий пока останется на ее странице (в легендарных Тавернах!), хотя на этот счет есть некоторые планы. Вступление в гильдию значит и вступление в чат; выход из гильдии автоматом влечет за собой выход и из чата. По логике вещей, каркас универсальных чатов вполне может предложить и формат многопользовательских секретных чатов безо всяких гильдий (типа как инбосы на лепре), но в целесообразности этого я немного не уверен.
Архитектурно универсальные чаты это довольно зубодробительная задача, которая предполагает глубокий рефакторинг целой пачки моделей, контроллеров, полиси, вьюх и спеков — и вот это умножьте на два: Диалоги и Чаты Гильдий. Плюс бекфилл: нужно аккуратно перенести все мессаги, членства и чаты (личные и гильдийские) в новые сущности. Однако должен признаться, что это самый галимый техдолг в чистом виде: именно так, как сейчас, надо было проектировать все с самого начала. Мое оправдание: когда я запускал гильдии Вулича, работа с чатами была на обочине, и было важно запустить MVP, просто шоб работало. Ну короче все как всегда.
Заодно я решил прямо в одном ПР (сгорел сарай, гори и хата: 86 файлов, ну а че!!) переписать под ноль весь фронтенд МСДЖ как он есть. Я бы конечно никогда не мерджил рефакторинг вперемешку с полировкой UX, если бы не обнаружил, как много логики там прибито гвоздями куда не надо. Старые болячки всегда такие живучие. Ну да ладно: итак, МСДЖ стал визуально приятнее и с более сильными акцентами; вдобавок я покиллял целую пачку N+1 и заставил МСДЖ плотнее работать с рельсовыми бродкастами, что сильно ударило (в хорошем смысле) по скорости и нативности. Пока я доволен, хотя бродкасты скоро будут еще сильнее для лучшего UX. И пускай ВК/телегу по качеству догнать не получится никогда (там фронтенд-слой размером с крыло от самолета плюс лучшие умы планеты, в чей список я не ходок), мы все же подойдем на расстояние вытянутой руки.
У чатов немного сменились урлы, но обратная совместимость есть: по старым урлам чатов вас форварднет на новые. Спеки моделей, консернов, контроллеров написал вроде бы все какие надо, но смоук-тесты какие-то провел, какие-то нет (там с ума сойти можно от количества сценариев). Потихоньку сделаю и это, ну и вообще послежу за поведением. Сразу предупреждаю: первое время будут ошибки или какое-то не такое поведение; все пофикшу и позакрываю. (Например, сейчас вижу, что почему-то какие-то чаты отметились как все целиком непрочтенные, ну вы покликайте по ним, должно отойти.) Но я надеюсь, вы там еще 1,5 недели будете до Акрона как следует отдыхать, и время этим всем заняться у меня будет.
Проектно МСДЖ — потрясающая программистская разминка для мозгов и довольно сложный продукт ФКФВ. Мы привыкли к тому, что телега в кармане постоянно чето там блямкает нотифаями, но считаю, что написать с нуля свой подход к этому же снаряду — очень полезное упражнение.
Это МСДЖ версии уже аж 4.0! Считаю, это стоит новой минорной версии ФКФВ 7.4. (Мажорной 8.0 наверное не будет никогда)
Такие дела. Если что, пишите в МСДЖ!