Tusky-App-Android/app/src/main/java/com/keylesspalace/tusky/usecase/DeveloperToolsUseCase.kt

47 lines
1.4 KiB
Kotlin

package com.keylesspalace.tusky.usecase
import android.util.Log
import androidx.room.withTransaction
import com.keylesspalace.tusky.db.AppDatabase
import com.keylesspalace.tusky.db.dao.TimelineDao
import javax.inject.Inject
/**
* Functionality that is only intended to be used by the "Developer Tools" menu when built
* in debug mode.
*/
class DeveloperToolsUseCase @Inject constructor(
private val db: AppDatabase
) {
private var timelineDao: TimelineDao = db.timelineDao()
/**
* Create a gap in the home timeline to make it easier to interactively experiment with
* different "Load more" behaviours.
*
* Do this by taking the 10 most recent statuses, keeping the first 2, deleting the next 7,
* and replacing the last one with a placeholder.
*/
suspend fun createLoadMoreGap(accountId: Long) {
db.withTransaction {
val ids = timelineDao.getMostRecentNHomeTimelineIds(accountId, 10)
val maxId = ids[2]
val minId = ids[8]
val placeHolderId = ids[9]
Log.d(
TAG,
"createLoadMoreGap: creating gap between $minId .. $maxId (new placeholder: $placeHolderId"
)
timelineDao.deleteRange(accountId, minId, maxId)
timelineDao.convertHomeTimelineItemToPlaceholder(placeHolderId)
}
}
companion object {
const val TAG = "DeveloperToolsUseCase"
}
}