garmoshka-mo / nemobile

nepotom client
1 stars 0 forks source link

if (lastSession) { #2

Closed garmoshka-mo closed 9 years ago

garmoshka-mo commented 9 years ago

https://github.com/garmoshka-mo/nepotom/blob/master/www/js/services/userService.js#L244

В чем смысл этого условия?

davoam commented 9 years ago

смысл этого условия в проверки была ли получена последняя не истекшая сессия. Так как сессия может храниться в памяти и чтобы ее извлечь будет необходимо время (т.е. будет асинхронная операция и обработка сообщения будет проходить асинхронно function handleChatSessionAsync) следовательно условие не выполнится (будет равно undefined). Такие ситуации возникают, когда допустим вы пишите человеку, а он только открыл приложение. Ваше сообщение приходит, приложение определяет, что у вас был с ним чат, он не истек и сессия хранится с памяти, и оно асинхронно достает сессию со стореджа, а потом обрабатывает сообщение. Когда придет сообщение в следующий раз, сессия уже будет в оперативной памяти и условие сработает.

garmoshka-mo commented 9 years ago

Такой код не годится - это адовая каша по монитору - в скоупе есть переменная, но непонятно можно ли ей пользоватья и в какой момент

Для этого существует парадигма деления логики на классы и ее инкапсуляция - чтобы все условности были скрыты внутри а из вне вызывалось всегда одно

Есть чат, который занимается внутри себя сессиями, а во вне имеет предельно простой, интуитивно понятный интерфейс Тот, кто работает с чатом, вообще ничего не знает о том, что у чата, оказывается внутри еще и сессии бывают - для него это черный ящик - он только вызывает методы чата. lastUnexpiredChatSession - переделать на приватную переменную - var lastUnexpiredChatSession = ...;

Нужно прорефактроить это в рамках #1