Почему нельзя LocalContext.current вызывать в Use Case или репозитории

Ответ

LocalContext.current нельзя вызывать в Use Case или репозитории, потому что эти слои должны быть независимы от Android-специфичных компонентов. Это нарушает принципы чистой архитектуры и усложняет тестирование.

Контекст нужен только во ViewModel или UI-слое, где его можно передать через параметры или DI.

Пример правильного подхода:

class MyUseCase {
    fun execute(context: Context) { ... }
}

// В ViewModel:
val result = useCase.execute(LocalContext.current)

Ответ 18+ 🔞

Ах ты ж ёпта, ну и намудрили же тут, блядь! Смотри, чувак, тут ситуация такая, что волнение ебать. Люди пытаются в Use Case или репозитории вызвать LocalContext.current, а это, блядь, как пытаться завести машину, вставив ключ в выхлопную трубу — нихуя не выйдет, только вонять будет.

Почему? Да потому что эти слои — они как святые отшельники в архитектуре, должны быть независимы от всей этой андроидовской суеты. Как только ты туда суёшь контекст, ты сразу нарушаешь все принципы чистой архитектуры, и тестирование превращается в пиздец, где надо городить огород из моков и стабов. Это как пытаться взвесить слона на кухонных весах — нихуя неудобно и всё развалится.

Правильный путь, блядь, проще пареной репы! Контекст нужен только там, где ему и место — в ViewModel или в UI-слое. А оттуда его уже, как почтового голубя, передают туда, куда надо. Смотри, как это выглядит без всяких выебонов:

class MyUseCase {
    // Вот тут мы честно говорим: "Дай мне контекст, я с ним поработаю"
    fun execute(context: Context) {
        // ... делаем что-то полезное с context
    }
}

// А в ViewModel, где контекст как раз и водится, мы его и подсовываем:
val result = useCase.execute(LocalContext.current)

Всё, блядь! Чисто, прозрачно, и доверия ебать ноль к тому, что что-то сломается. Use Case не знает, откуда контекст прилетел — с неба упал или из-под земли вырос. Он просто его получил и отработал. А тестировать это — одно удовольствие, можно любой контекст-пустышку подсунуть.

Запомни раз и навсегда: LocalContext.current — это как горячая картошка, ловить её нужно только в UI-слое, а не тащить её в глубины бизнес-логики, а то обожжёшься.