properly fetch Favorite file sizes to avoid caching glitches
This commit is contained in:
parent
1ee12a2d0e
commit
f6c6b402c6
3 changed files with 25 additions and 5 deletions
|
@ -78,7 +78,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:da849e726f'
|
implementation 'com.github.SimpleMobileTools:Simple-Commons:7e0240b1e3'
|
||||||
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
|
||||||
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
implementation 'it.sephiroth.android.exif:library:1.0.1'
|
||||||
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.23'
|
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.23'
|
||||||
|
|
|
@ -913,7 +913,7 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val android11Files = mLastMediaFetcher?.getAndroid11FolderMedia(getImagesOnly, getVideosOnly, favoritePaths)
|
val android11Files = mLastMediaFetcher?.getAndroid11FolderMedia(getImagesOnly, getVideosOnly, favoritePaths, false)
|
||||||
try {
|
try {
|
||||||
for (directory in dirs) {
|
for (directory in dirs) {
|
||||||
if (mShouldStopFetching || isDestroyed || isFinishing) {
|
if (mShouldStopFetching || isDestroyed || isFinishing) {
|
||||||
|
|
|
@ -42,11 +42,11 @@ class MediaFetcher(val context: Context) {
|
||||||
curMedia.addAll(newMedia)
|
curMedia.addAll(newMedia)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (isRPlus() && curPath != FAVORITES && curPath != RECYCLE_BIN) {
|
if (curPath != FAVORITES && curPath != RECYCLE_BIN && isRPlus()) {
|
||||||
if (android11Files?.containsKey(curPath.toLowerCase()) == true) {
|
if (android11Files?.containsKey(curPath.toLowerCase()) == true) {
|
||||||
curMedia.addAll(android11Files[curPath.toLowerCase()]!!)
|
curMedia.addAll(android11Files[curPath.toLowerCase()]!!)
|
||||||
} else if (android11Files == null) {
|
} else if (android11Files == null) {
|
||||||
val files = getAndroid11FolderMedia(isPickImage, isPickVideo, favoritePaths)
|
val files = getAndroid11FolderMedia(isPickImage, isPickVideo, favoritePaths, false)
|
||||||
if (files.containsKey(curPath.toLowerCase())) {
|
if (files.containsKey(curPath.toLowerCase())) {
|
||||||
curMedia.addAll(files[curPath.toLowerCase()]!!)
|
curMedia.addAll(files[curPath.toLowerCase()]!!)
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,19 @@ class MediaFetcher(val context: Context) {
|
||||||
curPath, isPickImage, isPickVideo, filterMedia, getProperDateTaken, getProperLastModified, getProperFileSize,
|
curPath, isPickImage, isPickVideo, filterMedia, getProperDateTaken, getProperLastModified, getProperFileSize,
|
||||||
favoritePaths, getVideoDurations, lastModifieds.clone() as HashMap<String, Long>, dateTakens.clone() as HashMap<String, Long>
|
favoritePaths, getVideoDurations, lastModifieds.clone() as HashMap<String, Long>, dateTakens.clone() as HashMap<String, Long>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (curPath == FAVORITES && isRPlus()) {
|
||||||
|
val files = getAndroid11FolderMedia(isPickImage, isPickVideo, favoritePaths, true)
|
||||||
|
newMedia.forEach { newMedium ->
|
||||||
|
for ((folder, media) in files) {
|
||||||
|
media.forEach { medium ->
|
||||||
|
if (medium.path == newMedium.path) {
|
||||||
|
newMedium.size = medium.size
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
curMedia.addAll(newMedia)
|
curMedia.addAll(newMedia)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,7 +420,10 @@ class MediaFetcher(val context: Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getAndroid11FolderMedia(
|
fun getAndroid11FolderMedia(
|
||||||
isPickImage: Boolean, isPickVideo: Boolean, favoritePaths: ArrayList<String>
|
isPickImage: Boolean,
|
||||||
|
isPickVideo: Boolean,
|
||||||
|
favoritePaths: ArrayList<String>,
|
||||||
|
getFavoritePathsOnly: Boolean
|
||||||
): HashMap<String, ArrayList<Medium>> {
|
): HashMap<String, ArrayList<Medium>> {
|
||||||
val media = HashMap<String, ArrayList<Medium>>()
|
val media = HashMap<String, ArrayList<Medium>>()
|
||||||
if (!isRPlus()) {
|
if (!isRPlus()) {
|
||||||
|
@ -438,6 +454,10 @@ class MediaFetcher(val context: Context) {
|
||||||
val mediaStoreId = cursor.getLongValue(Images.Media._ID)
|
val mediaStoreId = cursor.getLongValue(Images.Media._ID)
|
||||||
val filename = cursor.getStringValue(Images.Media.DISPLAY_NAME)
|
val filename = cursor.getStringValue(Images.Media.DISPLAY_NAME)
|
||||||
val path = cursor.getStringValue(Images.Media.DATA)
|
val path = cursor.getStringValue(Images.Media.DATA)
|
||||||
|
if (getFavoritePathsOnly && !favoritePaths.contains(path)) {
|
||||||
|
return@queryCursor
|
||||||
|
}
|
||||||
|
|
||||||
val lastModified = cursor.getLongValue(Images.Media.DATE_MODIFIED) * 1000
|
val lastModified = cursor.getLongValue(Images.Media.DATE_MODIFIED) * 1000
|
||||||
var dateTaken = cursor.getLongValue(Images.Media.DATE_TAKEN)
|
var dateTaken = cursor.getLongValue(Images.Media.DATE_TAKEN)
|
||||||
val size = cursor.getLongValue(Images.Media.SIZE)
|
val size = cursor.getLongValue(Images.Media.SIZE)
|
||||||
|
|
Loading…
Reference in a new issue