Hovhannes
четко ходит по строкам кода и исоплняет
Mike
step into делал?
Hovhannes
на андроид 7 не выполняет код и не останавливается там
Hovhannes
сделал но не копнул дальше
Hovhannes
сек
Hovhannes
гляну
Danile
предположу глупый вариант, но попробуй добавить строки в трайкетч
Danile
и снова продебаж
Hovhannes
да я б перерыл все к чертям. но бля. на андроид 9 все ок
Hovhannes
ладно. ща гляну спокойно
Hovhannes
но это нонсенс
Hovhannes
хотя. мне кажется факап в том, что я ухожу с прилаги в вк логин и возвращаюсь
Hovhannes
скоуп нул
Hovhannes
ВТФ?
Hovhannes
Кирилл
Баги дебаггера
Hovhannes
ОРУ
Hovhannes
ага.
Hovhannes
на сяоми 7
Кирилл
Для дебаггера нужен ещё один дебаггер
Hovhannes
а на сяоми 9 четка
Hovhannes
так фигня в том, что без дебага тож нифига не пашет
Hovhannes
на релизном билде
🐈 гав-гав
Когда Вьюмоделт эта, инитится?
Hovhannes
мне кажется я понял
Hovhannes
у меня включен режим разработчика - не хранить активити
Hovhannes
и когда он уходит в активити вк сдк то видимо чистит за собой дерьмо
Hovhannes
😁😁😁😁
Anton
Hovhannes
парам парам пам
Hovhannes
я был прав
Hovhannes
о да детка. Activity$onCreate with saved instance state != null
Hovhannes
LOL. охотник попался в свою же ловушку😂😂
Dug
Ты такой многословный
Hovhannes
Ты такой многословный
ты мой флуд канал не видел?))
Hovhannes
не ну согласись, такое раз в сто лет происходит
Dug
✝️
Liam
pastebin.com
спасибо
A
Привет. Есть вопрос по билд скриптам. У нас в проекте есть 4 флэйвора. Допустим flavA, flavB, flavC, flavD. И есть необходимость иметь разные dependency у разных флэйворов. Это впринципе легко сделать, гугл советует делать так: flavAImnplementation 'dependency1' И тут возникает вопрос. Я хочу сгруппировать флейворы, чтобы flavA & flavB имели один сет депенденси, а flavC & flavD второй сет. Никто не сталкивался с таким?
Anonymous
Гляньте плз может у кого будут идеи https://ru.stackoverflow.com/questions/1058331/showasaction-%d0%b2-%d1%82%d1%83%d0%bb%d0%b1%d0%b0%d1%80%d0%b5-%d0%bd%d0%b5-%d0%be%d1%82%d0%be%d0%b1%d1%80%d0%b0%d0%b6%d0%b0%d0%b5%d1%82-%d0%b8%d0%ba%d0%be%d0%bd%d0%ba%d1%83
A
у флейворов разные дименшины могут быть
можешь пример привести? я пробовал черед дименшены как то порешать, или найти пример, но так и не разрулил
Arsen
ну ты понял
Arsen
если было 4 варианта, то с добавлением нового дименшина с двумя типами (flavorOne flavorTwo) - уже будет восемь билд вариантов
Arsen
https://developer.android.com/studio/build/build-variants#flavor-dimensions
Arsen
там же можно с source set поиграть
V.Ilin
кто-то работал с AltBeacons?
A
если было 4 варианта, то с добавлением нового дименшина с двумя типами (flavorOne flavorTwo) - уже будет восемь билд вариантов
не нашел там главного. как связать дименшн и депенденси? а можно как-то без дименшнов группировать, чтоб не множить билд варианты?
Ivansuper
кто-то работал с AltBeacons?
Кто-то точно работал. Помогло?
V.Ilin
Кто-то точно работал. Помогло?
если я опишу проблему, строками кода из библиотеки, ты поймешь?
Ivansuper
если я опишу проблему, строками кода из библиотеки, ты поймешь?
Именно так и надо было задавать вопрос с самого начала
Ivansuper
Ты когда на рыбалку идешь, сначала суешь голову в воду и орешь туда "есть тут рыба?"? Нет, ты закидываешь удочку и ждешь результат
Hovhannes
Посоны Работал кто с userxpro? Не убивает вам мобилку?
Hovhannes
Гугол не ругается?
Никита 🙃
кто-то работал с AltBeacons?
Я работал. Хуйня, советую выкинуть
Никита 🙃
Могу аргументировать, если надо
Никита 🙃
Она то работает и по факту там нет ничего сложного, но если это для навигации. - то хуйня. Точность меньше 5м не получилось завести
Александр
Крч, сгорел пердак, помохите. Я джун, пишу сетевую часть для своей простенькой апки. Сгорел, когда попытался поработать с типом данных, который способен содержать информацию об ошибке. Either я не осилил(вообще не получается с ним работать, код покрывается тьмой when, не получается по человечески достать данные, короч отгрёб я от Either), поэтому запилил свой простой NewResult: sealed class NewResult<T> { data class Success<T>(val data: T) : NewResult<T>() data class Failure<T>(val error: T) : NewResult<T>() data class FailureWithException<T>(val error: Throwable) : NewResult<T>() } Ну как бы и чего, result и result. И он даже работает, и не поджигает мою джуниорскую жопу(т.к очень прост), однако есть пара нюансов. Первый, наиболее важный: я вынужден писать треш, когда я пытаюсь этот result куда - то выше прокинуть. В частности, 14 - ая строка интерактора: (на код не смотрите, там сейчас война идёт полнейшим ходом, настанет время я сам этот репозиторий вброшу на растерзание ревьюверов) https://github.com/KirstenLy/LibHelper3/blob/master/app/src/main/java/com/kirsten/libhelper/domain/interactors/Interactor.kt Конкретно: suspend fun getAllPatterns(): NewResult<*> Ну вы поняли. У NewResult такая сигнатура, что мне его обязательно нужно параметризовать чем - нибудь, а я ж заранее не знаю, что именно мне придёт - данные или ошибка. Поэтому пишу вот такую дичь, и в дальнейшем я просто делаю каст, узнав инстанс какого наследника мне по факту пришёл. Вопроса как такового нет. Хотелось бы чтобы вы сказали мне, где я больше всего херни наделал в таком подходе, и что мне сделать с моим NewResult, чтобы не писать в интеракторе такие вот вещи.
Ivansuper
Крч, сгорел пердак, помохите. Я джун, пишу сетевую часть для своей простенькой апки. Сгорел, когда попытался поработать с типом данных, который способен содержать информацию об ошибке. Either я не осилил(вообще не получается с ним работать, код покрывается тьмой when, не получается по человечески достать данные, короч отгрёб я от Either), поэтому запилил свой простой NewResult: sealed class NewResult<T> { data class Success<T>(val data: T) : NewResult<T>() data class Failure<T>(val error: T) : NewResult<T>() data class FailureWithException<T>(val error: Throwable) : NewResult<T>() } Ну как бы и чего, result и result. И он даже работает, и не поджигает мою джуниорскую жопу(т.к очень прост), однако есть пара нюансов. Первый, наиболее важный: я вынужден писать треш, когда я пытаюсь этот result куда - то выше прокинуть. В частности, 14 - ая строка интерактора: (на код не смотрите, там сейчас война идёт полнейшим ходом, настанет время я сам этот репозиторий вброшу на растерзание ревьюверов) https://github.com/KirstenLy/LibHelper3/blob/master/app/src/main/java/com/kirsten/libhelper/domain/interactors/Interactor.kt Конкретно: suspend fun getAllPatterns(): NewResult<*> Ну вы поняли. У NewResult такая сигнатура, что мне его обязательно нужно параметризовать чем - нибудь, а я ж заранее не знаю, что именно мне придёт - данные или ошибка. Поэтому пишу вот такую дичь, и в дальнейшем я просто делаю каст, узнав инстанс какого наследника мне по факту пришёл. Вопроса как такового нет. Хотелось бы чтобы вы сказали мне, где я больше всего херни наделал в таком подходе, и что мне сделать с моим NewResult, чтобы не писать в интеракторе такие вот вещи.
Раздели дженерики на тип ожидаемого ответа и тип ожидаемой ошибки. NewResult<TResult, TError>. Развернись от этой точки для начала. А то вообще там мясо какое то
Arsen
implementation flavorOneImplementation flavorTwoImplementation
т.е. у тебя 4 флавора + вот эти два чисто для зависимостей
Arsen
всего 6, но билдов 4х2 = 8
Nikita
Крч, сгорел пердак, помохите. Я джун, пишу сетевую часть для своей простенькой апки. Сгорел, когда попытался поработать с типом данных, который способен содержать информацию об ошибке. Either я не осилил(вообще не получается с ним работать, код покрывается тьмой when, не получается по человечески достать данные, короч отгрёб я от Either), поэтому запилил свой простой NewResult: sealed class NewResult<T> { data class Success<T>(val data: T) : NewResult<T>() data class Failure<T>(val error: T) : NewResult<T>() data class FailureWithException<T>(val error: Throwable) : NewResult<T>() } Ну как бы и чего, result и result. И он даже работает, и не поджигает мою джуниорскую жопу(т.к очень прост), однако есть пара нюансов. Первый, наиболее важный: я вынужден писать треш, когда я пытаюсь этот result куда - то выше прокинуть. В частности, 14 - ая строка интерактора: (на код не смотрите, там сейчас война идёт полнейшим ходом, настанет время я сам этот репозиторий вброшу на растерзание ревьюверов) https://github.com/KirstenLy/LibHelper3/blob/master/app/src/main/java/com/kirsten/libhelper/domain/interactors/Interactor.kt Конкретно: suspend fun getAllPatterns(): NewResult<*> Ну вы поняли. У NewResult такая сигнатура, что мне его обязательно нужно параметризовать чем - нибудь, а я ж заранее не знаю, что именно мне придёт - данные или ошибка. Поэтому пишу вот такую дичь, и в дальнейшем я просто делаю каст, узнав инстанс какого наследника мне по факту пришёл. Вопроса как такового нет. Хотелось бы чтобы вы сказали мне, где я больше всего херни наделал в таком подходе, и что мне сделать с моим NewResult, чтобы не писать в интеракторе такие вот вещи.
а если generic убрать из NewResult?
Ivansuper
Крч, сгорел пердак, помохите. Я джун, пишу сетевую часть для своей простенькой апки. Сгорел, когда попытался поработать с типом данных, который способен содержать информацию об ошибке. Either я не осилил(вообще не получается с ним работать, код покрывается тьмой when, не получается по человечески достать данные, короч отгрёб я от Either), поэтому запилил свой простой NewResult: sealed class NewResult<T> { data class Success<T>(val data: T) : NewResult<T>() data class Failure<T>(val error: T) : NewResult<T>() data class FailureWithException<T>(val error: Throwable) : NewResult<T>() } Ну как бы и чего, result и result. И он даже работает, и не поджигает мою джуниорскую жопу(т.к очень прост), однако есть пара нюансов. Первый, наиболее важный: я вынужден писать треш, когда я пытаюсь этот result куда - то выше прокинуть. В частности, 14 - ая строка интерактора: (на код не смотрите, там сейчас война идёт полнейшим ходом, настанет время я сам этот репозиторий вброшу на растерзание ревьюверов) https://github.com/KirstenLy/LibHelper3/blob/master/app/src/main/java/com/kirsten/libhelper/domain/interactors/Interactor.kt Конкретно: suspend fun getAllPatterns(): NewResult<*> Ну вы поняли. У NewResult такая сигнатура, что мне его обязательно нужно параметризовать чем - нибудь, а я ж заранее не знаю, что именно мне придёт - данные или ошибка. Поэтому пишу вот такую дичь, и в дальнейшем я просто делаю каст, узнав инстанс какого наследника мне по факту пришёл. Вопроса как такового нет. Хотелось бы чтобы вы сказали мне, где я больше всего херни наделал в таком подходе, и что мне сделать с моим NewResult, чтобы не писать в интеракторе такие вот вещи.
Самый важный момент — тебе надо параметризовать интерактор, чтобы для каждой конкретной имплементации интерактора подавался нужный тип, который потом попадет в NewResult как тип результата и ошибки
Kopusha
не, надо просто перестать звать Repository интерактором и ничего не нужно параметризировать )
Ivansuper
не, надо просто перестать звать Repository интерактором и ничего не нужно параметризировать )
Он скорее всего учится, а на этой стадии зачастую "архитектура" перевешивает полезный код
Nikita
что то вроде этого)
Ivansuper
Непонятно только почему есть просто "Interactor", который уже работает с конкретной моделью и еще с чем-то
Дмитрий
Во время теста приложения не отображаются кнопки, в чем может быть проблема?
Kopusha
лично у меня Result котлиновский, с ним таких проблем нет. Но видел и на sealed классах, пусть другие посоветуют.
Ivansuper
что то вроде этого)
И чего? Ты просто перенес звезду из одного места в другое
Ivansuper
Что-то не так в коде.
Слишком конкретный ответ
Nikita
И чего? Ты просто перенес звезду из одного места в другое
проблема вроде как была в том, что NewResult нужно обязательно параметризовать. Вот и здесь можно приделать классу методы isSuccessful и isError который внутри себя чекнет на инстанс, а потом уже чекать какие данные пришли
Александр
Самый важный момент — тебе надо параметризовать интерактор, чтобы для каждой конкретной имплементации интерактора подавался нужный тип, который потом попадет в NewResult как тип результата и ошибки
Как - то не осмысливается это, совсем. Для меня интерактор, в данном случае - это сущность, которая может запросить данные из нескольких репозиториев(которые отдадут разные модели), как - то ими поиграться(обьединить/отфильтровать/...) и прокинуть результат дальше. Зачем, и собственно как мне параметризовать интерактор?