diff --git a/app/src/main/java/com/radiola/data/local/dao/StationDao.kt b/app/src/main/java/com/radiola/data/local/dao/StationDao.kt index 336a759..3364a71 100644 --- a/app/src/main/java/com/radiola/data/local/dao/StationDao.kt +++ b/app/src/main/java/com/radiola/data/local/dao/StationDao.kt @@ -37,4 +37,9 @@ interface StationDao { @Query("SELECT id FROM stations WHERE isFavorite = 1") fun getFavoriteIds(): Flow> + + // Разовое чтение id избранного — чтобы при пересоздании каталога (refreshStations) + // не потерять отметки «избранное» (insertAll = REPLACE затирает строки). + @Query("SELECT id FROM stations WHERE isFavorite = 1") + suspend fun getFavoriteIdsOnce(): List } diff --git a/app/src/main/java/com/radiola/data/repository/StationRepositoryImpl.kt b/app/src/main/java/com/radiola/data/repository/StationRepositoryImpl.kt index 63f507d..d2d69c4 100644 --- a/app/src/main/java/com/radiola/data/repository/StationRepositoryImpl.kt +++ b/app/src/main/java/com/radiola/data/repository/StationRepositoryImpl.kt @@ -72,8 +72,10 @@ class StationRepositoryImpl @Inject constructor( } } - // 4. Save to DB - android.util.Log.d("StationRepo", "Saving ${merged.size} merged stations to DB") + // 4. Save to DB. Сохраняем текущие отметки «избранное», иначе REPLACE + // в insertAll затрёт их при каждом пересоздании каталога (на старте). + val favoriteIds = db.stationDao().getFavoriteIdsOnce().toSet() + android.util.Log.d("StationRepo", "Saving ${merged.size} merged stations to DB (избранных сохранено: ${favoriteIds.size})") val entities = merged.mapIndexed { index, station -> StationEntity( id = station.id, @@ -85,7 +87,7 @@ class StationRepositoryImpl @Inject constructor( tags = station.tags.joinToString(","), sortOrder = index, source = station.source, - isFavorite = false, + isFavorite = station.id in favoriteIds, qualities = encodeQualities(station.qualities) ) }