/
DanLiz456
/
NMedia12
Обзор
Документация
Войти
/
DanLiz456
/
NMedia12
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
PostRepositoryInMemoryImpl.kt
80 строк
3 KB
Даниил Ушаков
create: MainActivity.kt, Post.kt, PostRepositoryInMemoryImpl.kt, PostRepository.kt, PostViewModel.kt
30 апр 2026, 21:32
Верифицирован
30 апр 2026, 21:32
8fe651a
Код
Авторство
О чём код?
package ru.netology.nmedia.repository import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import ru.netology.nmedia.dto.Post import java.util.concurrent.CopyOnWriteArrayList private const val EMPTY = "" class PostRepositoryInMemoryImpl : PostRepository { private val posts = CopyOnWriteArrayList<Post>() private val _data = MutableLiveData<List<Post>>() init { posts.add( Post( id = 1, author = "Нетология. Университет интернет-профессий будущего", content = "Привет, это новая Нетология! Когда-то Нетология начиналась с интенсивов по онлайн-маркетингу. Затем появились курсы по дизайну, разработке, аналитике и управлению. Мы растём сами и помогаем расти студентам: от новичков до уверенных профессионалов. Но самое важное остаётся с нами: мы верим, что в каждом уже есть сила, которая заставляет хотеть больше, целиться выше, бежать быстрее. Наша миссия — помочь встать на путь роста и начать цепочку перемен → http://netolo.gy/fyb", published = "21 мая в 18:36", likedByMe = false, likes = 0, shares = 0 ) ) _data.value = posts } override val data: LiveData<List<Post>> get() = _data override fun likeById(id: Long) { val index = posts.indexOfFirst { it.id == id } if (index == -1) return val post = posts[index] val wasLikedByMe = post.likedByMe // Сохраняем предыдущее состояние val updatedPost = post.copy( likedByMe = !wasLikedByMe, likes = if (wasLikedByMe) post.likes - 1 else post.likes + 1 ) posts[index] = updatedPost _data.value = posts } override fun shareById(id: Long) { val index = posts.indexOfFirst { it.id == id } if (index == -1) return val post = posts[index] val updatedPost = post.copy(shares = post.shares + 1) posts[index] = updatedPost _data.value = posts } override fun removeById(id: Long) { posts.removeIf { it.id == id } _data.value = posts } override fun save(post: Post) { if (post.id == 0L) { val newPost = post.copy(id = System.currentTimeMillis(), likedByMe = false, likes = 0, shares = 0) posts.add(newPost) } else { val index = posts.indexOfFirst { it.id == post.id } if (index != -1) { posts[index] = post } } _data.value = posts } override fun edit(post: Post) { // Логика редактирования } override fun changeContent(content: String) { // Логика изменения содержания } }