mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-12-23 13:26:59 +00:00
Fix downloaded check logic
This commit is contained in:
parent
9b691a453e
commit
8030c7f220
@ -102,7 +102,7 @@ public class FeedGridItemViewHolder extends RecyclerView.ViewHolder {
|
||||
binding.typeIcon.setVisibility(View.VISIBLE);
|
||||
binding.typeIcon.setImageResource(typeIconRes);
|
||||
}
|
||||
final DownloadedCheckerAsyncTask task = new DownloadedCheckerAsyncTask(itemView.getContext(), result -> {
|
||||
final DownloadedCheckerAsyncTask task = new DownloadedCheckerAsyncTask(result -> {
|
||||
final List<Boolean> checkList = result.get(media.getPk());
|
||||
if (checkList == null || checkList.isEmpty()) {
|
||||
return;
|
||||
|
@ -1,9 +1,7 @@
|
||||
package awais.instagrabber.asyncs;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -14,12 +12,9 @@ import awais.instagrabber.utils.DownloadUtils;
|
||||
public final class DownloadedCheckerAsyncTask extends AsyncTask<Media, Void, Map<String, List<Boolean>>> {
|
||||
private static final String TAG = "DownloadedCheckerAsyncTask";
|
||||
|
||||
private final WeakReference<Context> context;
|
||||
private final OnCheckResultListener listener;
|
||||
|
||||
public DownloadedCheckerAsyncTask(final Context context,
|
||||
final OnCheckResultListener listener) {
|
||||
this.context = new WeakReference<>(context);
|
||||
public DownloadedCheckerAsyncTask(final OnCheckResultListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@ -30,9 +25,7 @@ public final class DownloadedCheckerAsyncTask extends AsyncTask<Media, Void, Map
|
||||
}
|
||||
final Map<String, List<Boolean>> map = new HashMap<>();
|
||||
for (final Media media : feedModels) {
|
||||
final Context context = this.context.get();
|
||||
if (context == null) return map;
|
||||
map.put(media.getPk(), DownloadUtils.checkDownloaded(context, media));
|
||||
map.put(media.getPk(), DownloadUtils.checkDownloaded(media));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.UriPermission;
|
||||
import android.net.Uri;
|
||||
import android.provider.DocumentsContract;
|
||||
import android.util.Log;
|
||||
import android.webkit.MimeTypeMap;
|
||||
import android.widget.Toast;
|
||||
@ -338,8 +337,7 @@ public final class DownloadUtils {
|
||||
return "";
|
||||
}
|
||||
|
||||
public static List<Boolean> checkDownloaded(@NonNull final Context context,
|
||||
@NonNull final Media media) {
|
||||
public static List<Boolean> checkDownloaded(@NonNull final Media media) {
|
||||
final List<Boolean> checkList = new LinkedList<>();
|
||||
final User user = media.getUser();
|
||||
String username = "username";
|
||||
@ -351,9 +349,10 @@ public final class DownloadUtils {
|
||||
case MEDIA_TYPE_IMAGE:
|
||||
case MEDIA_TYPE_VIDEO: {
|
||||
final String url = ResponseBodyUtils.getImageUrl(media);
|
||||
final Pair<List<String>, String> file = getDownloadSavePaths(userFolderPaths, media.getCode(), url, "");
|
||||
final Pair<List<String>, String> usernameFile = getDownloadSavePaths(userFolderPaths, media.getCode(), url, username);
|
||||
checkList.add(checkPathExists(context, file.first) || checkPathExists(context, usernameFile.first));
|
||||
final Pair<List<String>, String> file = getDownloadSavePaths(new ArrayList<>(userFolderPaths), media.getCode(), url, "");
|
||||
final Pair<List<String>, String> usernameFile = getDownloadSavePaths(new ArrayList<>(userFolderPaths), media.getCode(), url,
|
||||
username);
|
||||
checkList.add(checkPathExists(file.first) || checkPathExists(usernameFile.first));
|
||||
break;
|
||||
}
|
||||
case MEDIA_TYPE_SLIDER:
|
||||
@ -362,9 +361,11 @@ public final class DownloadUtils {
|
||||
final Media child = sliderItems.get(i);
|
||||
if (child == null) continue;
|
||||
final String url = ResponseBodyUtils.getImageUrl(child);
|
||||
final Pair<List<String>, String> file = getDownloadChildSavePaths(userFolderPaths, media.getCode(), i + 1, url, "");
|
||||
final Pair<List<String>, String> usernameFile = getDownloadChildSavePaths(userFolderPaths, media.getCode(), i + 1, url, username);
|
||||
checkList.add(checkPathExists(context, file.first) || checkPathExists(context, usernameFile.first));
|
||||
final Pair<List<String>, String> file = getDownloadChildSavePaths(new ArrayList<>(userFolderPaths), media.getCode(), i + 1, url,
|
||||
"");
|
||||
final Pair<List<String>, String> usernameFile = getDownloadChildSavePaths(new ArrayList<>(userFolderPaths), media.getCode(),
|
||||
i + 1, url, username);
|
||||
checkList.add(checkPathExists(file.first) || checkPathExists(usernameFile.first));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -372,13 +373,16 @@ public final class DownloadUtils {
|
||||
return checkList;
|
||||
}
|
||||
|
||||
private static boolean checkPathExists(@NonNull final Context context,
|
||||
@NonNull final List<String> paths) {
|
||||
private static boolean checkPathExists(@NonNull final List<String> paths) {
|
||||
if (root == null) return false;
|
||||
final String joined = android.text.TextUtils.join("/", paths);
|
||||
final Uri userFolderUri = DocumentsContract.buildDocumentUriUsingTree(root.getUri(), joined);
|
||||
final DocumentFile userFolder = DocumentFile.fromSingleUri(context, userFolderUri);
|
||||
return userFolder != null && userFolder.exists();
|
||||
DocumentFile dir = root;
|
||||
for (final String path : paths) {
|
||||
dir = dir.findFile(path);
|
||||
if (dir == null || !dir.exists()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void showDownloadDialog(@NonNull Context context,
|
||||
@ -501,7 +505,8 @@ public final class DownloadUtils {
|
||||
final String usernamePrepend = Utils.settingsHelper.getBoolean(Constants.DOWNLOAD_PREPEND_USER_NAME) && mediaUser != null
|
||||
? mediaUser.getUsername()
|
||||
: "";
|
||||
final Pair<List<String>, String> pair = getDownloadChildSavePaths(userFolderPaths, media.getCode(), i + 1, url,
|
||||
final Pair<List<String>, String> pair = getDownloadChildSavePaths(new ArrayList<>(userFolderPaths), media.getCode(), i + 1,
|
||||
url,
|
||||
usernamePrepend);
|
||||
final DocumentFile file = createFile(pair);
|
||||
if (file == null) continue;
|
||||
|
Loading…
Reference in New Issue
Block a user