forked from upstream-mirrors/quik
Show list of backups on restore click
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Moez Bhatti <moez.bhatti@gmail.com>
|
||||
*
|
||||
* This file is part of QKSMS.
|
||||
*
|
||||
* QKSMS is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QKSMS is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QKSMS. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.moez.QKSMS.repository
|
||||
|
||||
import android.os.Environment
|
||||
import com.moez.QKSMS.model.Backup
|
||||
import com.moez.QKSMS.util.QkFileObserver
|
||||
import io.reactivex.Observable
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
class BackupRepositoryImpl @Inject constructor() : BackupRepository {
|
||||
|
||||
companion object {
|
||||
private val BACKUP_LOCATION = Environment.getExternalStorageDirectory().toString() + "/QKSMS/Backups"
|
||||
}
|
||||
|
||||
override fun getBackups(): Observable<List<Backup>> = QkFileObserver(BACKUP_LOCATION)
|
||||
.observable
|
||||
.map { path -> File(path).listFiles() }
|
||||
.map { files ->
|
||||
files.map { file ->
|
||||
val date = file.lastModified()
|
||||
val size = file.length()
|
||||
Backup(date, listOf(), size)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Moez Bhatti <moez.bhatti@gmail.com>
|
||||
*
|
||||
* This file is part of QKSMS.
|
||||
*
|
||||
* QKSMS is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QKSMS is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QKSMS. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.moez.QKSMS.util
|
||||
|
||||
import android.os.FileObserver
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.subjects.BehaviorSubject
|
||||
|
||||
class QkFileObserver(path: String) : FileObserver(path) {
|
||||
|
||||
private val subject = BehaviorSubject.createDefault<String>(path).toSerialized()
|
||||
|
||||
val observable: Observable<String> = subject
|
||||
.doOnSubscribe { startWatching() }
|
||||
.doOnDispose { stopWatching() }
|
||||
.share()
|
||||
|
||||
override fun onEvent(event: Int, path: String?) {
|
||||
path?.let(subject::onNext)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user