EasyCodeRu
1.9K subscribers
842 photos
82 videos
98 files
1.51K links
Канал для тех, кто хочет научиться программированию с нуля
Java, Kotlin, TDD, ООП, Android
Github : https://github.com/johnnysc
YouTube: https://www.youtube.com/c/easyCodeRu

заходите в чат для обсуждения @easyCodeRuChat
если что - пишите в лс @JohnnySC
Download Telegram
Четвертое видео! Сам чат! Сообщения в реальном времени
Firebase, RealtimeDatabase

Лайк, подписка, Донатик !
проявите свое спасибо хотя бы комментарием под видео
37 минут всего, наслаждайтесь

https://www.youtube.com/watch?v=uH2lTiuRA9M
Под этим постом в комментариях можете накинуть идей что ещё нужно добавить в приложение ForcePush.
Спойлер: я попробую написать сам подсветку синтаксиса для джава и котлин
Щас пытался сделать кароче статусы сообщений : ошибка, повторить при ошибке, отправлено, (даже про прочтено и речи не зашло пока ) и угадайте что? не все так просто!

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

главное на самом деле двигаться постепенно и все будет

апдейт. уже придумал свое решение. кек
This media is not supported in your browser
VIEW IN TELEGRAM
2 состояния работают : прогресс и ошибка.
также надо будет прикрутить повторную отправку
и уже потом доставлено и прочтено
This media is not supported in your browser
VIEW IN TELEGRAM
прогресс и отправлено тоже ОК

п.с. записал весь экран потому что запись изнутри андроид студио (через логкат) убивает эмулятор (привет м1)
This media is not supported in your browser
VIEW IN TELEGRAM
отправляем
ошибка
повторная попытка
успех

п.с. просто добавил такой код
чтобы через раз был успех
private var count = 0
override suspend fun send(message: String) = try {
count++
if (count % 2 == 0)
repository.sendMessage(message)
else
false
This media is not supported in your browser
VIEW IN TELEGRAM
отправка : ошибка
отправка : успех
отправка : ошибка
повторная отправка
успех

п.с. уже совсем скоро запишу новое видео как это все работает
но вы должны помочь мне :
1. https://www.youtube.com/c/easyCodeRu подписывайтесь на канал
2. ставьте лайки видео из плейлиста https://www.youtube.com/playlist?list=PLQRyeBV1rkk2O36KzgDQgnUnOzjTrl9PN
3. пишите комментарии под роликами
спасибо!
Скажи: сколько у меня подписчиков на ютуб?)) Привет, трактористам
Пилю юнит тесты на вьюмодель

когда проще написать 180 линий кода теста нежели запускать эмулятор и проходить все тест кейсы

https://github.com/JohnnySC/ForcePush/blob/master/app/src/test/java/johnnysc/github/forcepush/ui/chat/ChatViewModelTest.kt
К вопросу о том, как не делать паблик констант доступных всем и каждому

делаем класс с 2 интерфейсами : чтения и записи
в одном месте кладем, в другом читаем

так что забудьте про паблик константы навсегда

https://github.com/JohnnySC/ForcePush/blob/master/app/src/main/java/johnnysc/github/forcepush/data/chat/UserId.kt
Запушил код чата на гитхаб во все ветки : feature/FP03_chat, develop, master

https://github.com/JohnnySC/ForcePush/commit/f2ca644d90687f1a34a844d9c10247bde23c277e

В следующем видео уже сделаем список чатов и/или статус прочтено_chat
Если у вас тоже исчез пункт гита из нижнего правого угла то восстановить можно вот так
Стартанул следующую фичу : статус сообщения "прочтено юзером"
EasyCodeRu
Стартанул следующую фичу : статус сообщения "прочтено юзером"
LOL. ГОТОВО!
осталось написать юнит тесты и можно пушить в ветку.
Спойлер: что делает этот код? Пишите в коментах


Апдейт: тот момент когда с первого раза все правильно написал и при тесте все ок
Чаты готовы! Завтра ждите видосик. А пока можете подписаться на ютуб канал и первым посмотреть когда выйдет

https://www.youtube.com/c/easyCodeRu

не забудьте включить уведомления
Обьявляется конкурс: кто напишет метод на джава или котлине который принимает аргументами 2 целых числа и выдает сумму

победившему дам ранний доступ к прилаге форспуш

решения пишите в комментариях к этому посту

апдейт : сорри, только джава!
апдейт 2 : только 7 джава!


окей. вот вам пояснение
победит тот, кто напишет самое красивое решение которое учитывает все возможные кейсы, а не тупое 2 плюс 2
👍1
когда т давно я решил еще одну задачу по джава

class Data(private val a :String = "", private val b : Int = 0) дефолтные значения в конструкторе

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

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