2020-11-04 18:42:04 +01:00
|
|
|
package sushi.hardcore.droidfs
|
|
|
|
|
2022-03-05 12:51:02 +01:00
|
|
|
import android.os.Parcel
|
|
|
|
import android.os.Parcelable
|
|
|
|
import sushi.hardcore.droidfs.util.PathUtils
|
|
|
|
import java.io.File
|
|
|
|
|
2022-06-18 21:13:16 +02:00
|
|
|
class SavedVolume(val name: String, val isHidden: Boolean = false, val type: Byte, var encryptedHash: ByteArray? = null, var iv: ByteArray? = null): Parcelable {
|
2022-03-05 12:51:02 +01:00
|
|
|
|
|
|
|
constructor(parcel: Parcel) : this(
|
|
|
|
parcel.readString()!!,
|
|
|
|
parcel.readByte() != 0.toByte(),
|
2022-06-18 21:13:16 +02:00
|
|
|
parcel.readByte(),
|
2022-03-05 12:51:02 +01:00
|
|
|
parcel.createByteArray(),
|
|
|
|
parcel.createByteArray()
|
|
|
|
)
|
|
|
|
|
|
|
|
val shortName: String by lazy {
|
|
|
|
File(name).name
|
|
|
|
}
|
|
|
|
|
|
|
|
fun getFullPath(filesDir: String): String {
|
|
|
|
return if (isHidden)
|
2022-06-18 21:13:16 +02:00
|
|
|
getHiddenVolumeFullPath(filesDir, name)
|
2022-03-05 12:51:02 +01:00
|
|
|
else
|
|
|
|
name
|
|
|
|
}
|
|
|
|
|
|
|
|
fun canWrite(filesDir: String): Boolean {
|
|
|
|
return File(getFullPath(filesDir)).canWrite()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun describeContents(): Int {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun writeToParcel(dest: Parcel, flags: Int) {
|
|
|
|
with (dest) {
|
|
|
|
writeString(name)
|
|
|
|
writeByte(if (isHidden) 1 else 0)
|
2022-06-18 21:13:16 +02:00
|
|
|
writeByte(type)
|
2022-03-05 12:51:02 +01:00
|
|
|
writeByteArray(encryptedHash)
|
|
|
|
writeByteArray(iv)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-06-18 21:13:16 +02:00
|
|
|
companion object {
|
|
|
|
const val VOLUMES_DIRECTORY = "volumes"
|
|
|
|
|
|
|
|
@JvmField
|
|
|
|
val CREATOR = object : Parcelable.Creator<SavedVolume> {
|
|
|
|
override fun createFromParcel(parcel: Parcel) = SavedVolume(parcel)
|
|
|
|
override fun newArray(size: Int) = arrayOfNulls<SavedVolume>(size)
|
2022-03-05 12:51:02 +01:00
|
|
|
}
|
|
|
|
|
2022-06-18 21:13:16 +02:00
|
|
|
fun getHiddenVolumeFullPath(filesDir: String, name: String): String {
|
|
|
|
return PathUtils.pathJoin(filesDir, VOLUMES_DIRECTORY, name)
|
2022-03-05 12:51:02 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|