From 9ea7c2c3af7209952fee0da1381632017e81feef Mon Sep 17 00:00:00 2001 From: Ammar Githam Date: Fri, 9 Apr 2021 20:18:41 +0900 Subject: [PATCH] Set new uri path to a different PreferenceKey to maintain ability to downgrade. --- .../DownloadsPreferencesFragment.java | 6 ++-- .../fragments/settings/PreferenceKeys.java | 1 + .../instagrabber/utils/DownloadUtils.java | 29 ++++--------------- .../instagrabber/utils/SettingsHelper.java | 3 +- .../java/awais/instagrabber/utils/Utils.java | 4 +-- .../DirectorySelectActivityViewModel.java | 16 +++++----- 6 files changed, 23 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/fragments/settings/DownloadsPreferencesFragment.java b/app/src/main/java/awais/instagrabber/fragments/settings/DownloadsPreferencesFragment.java index 9313c79b..9609ca20 100644 --- a/app/src/main/java/awais/instagrabber/fragments/settings/DownloadsPreferencesFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/settings/DownloadsPreferencesFragment.java @@ -30,8 +30,8 @@ import awais.instagrabber.utils.Utils; import static android.app.Activity.RESULT_OK; import static awais.instagrabber.activities.DirectorySelectActivity.SELECT_DIR_REQUEST_CODE; +import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_BARINSTA_DIR_URI; import static awais.instagrabber.utils.Constants.DOWNLOAD_USER_FOLDER; -import static awais.instagrabber.utils.Constants.FOLDER_PATH; import static awais.instagrabber.utils.Utils.settingsHelper; public class DownloadsPreferencesFragment extends BasePreferencesFragment { @@ -57,11 +57,11 @@ public class DownloadsPreferencesFragment extends BasePreferencesFragment { private Preference getSaveToCustomFolderPreference(@NonNull final Context context) { final Preference preference = new Preference(context); - preference.setKey(FOLDER_PATH); + preference.setKey(PREF_BARINSTA_DIR_URI); preference.setIconSpaceReserved(false); preference.setTitle(R.string.barinsta_folder); preference.setSummaryProvider(p -> { - final String currentValue = settingsHelper.getString(FOLDER_PATH); + final String currentValue = settingsHelper.getString(PREF_BARINSTA_DIR_URI); if (TextUtils.isEmpty(currentValue)) return ""; String path; try { diff --git a/app/src/main/java/awais/instagrabber/fragments/settings/PreferenceKeys.java b/app/src/main/java/awais/instagrabber/fragments/settings/PreferenceKeys.java index 5287a1a5..64cc9e0f 100644 --- a/app/src/main/java/awais/instagrabber/fragments/settings/PreferenceKeys.java +++ b/app/src/main/java/awais/instagrabber/fragments/settings/PreferenceKeys.java @@ -7,4 +7,5 @@ public final class PreferenceKeys { public static final String PREF_ENABLE_DM_AUTO_REFRESH_FREQ_NUMBER = "enable_dm_auto_refresh_freq_number"; public static final String PREF_ENABLE_SENTRY = "enable_sentry"; public static final String PREF_TAB_ORDER = "tab_order"; + public static final String PREF_BARINSTA_DIR_URI = "barinsta_dir_uri"; } diff --git a/app/src/main/java/awais/instagrabber/utils/DownloadUtils.java b/app/src/main/java/awais/instagrabber/utils/DownloadUtils.java index 9ceaa508..e9a8f31a 100644 --- a/app/src/main/java/awais/instagrabber/utils/DownloadUtils.java +++ b/app/src/main/java/awais/instagrabber/utils/DownloadUtils.java @@ -44,7 +44,7 @@ import awais.instagrabber.repositories.responses.User; import awais.instagrabber.repositories.responses.VideoVersion; import awais.instagrabber.workers.DownloadWorker; -import static awais.instagrabber.utils.Constants.FOLDER_PATH; +import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_BARINSTA_DIR_URI; public final class DownloadUtils { private static final String TAG = DownloadUtils.class.getSimpleName(); @@ -59,28 +59,15 @@ public final class DownloadUtils { private static DocumentFile root; public static void init(@NonNull final Context context) throws ReselectDocumentTreeException { - // if (DOWNLOADS_DIR_FILE == null) { - // final Uri uri = Utils.getSafUris(context, new File(Environment.getExternalStorageDirectory(), Environment.DIRECTORY_DOWNLOADS))[0]; - // DOWNLOADS_DIR_FILE = DocumentFile.fromTreeUri(context, uri); - // } - // if (!Utils.settingsHelper.getBoolean(FOLDER_SAVE_TO)) { - // root = DOWNLOADS_DIR_FILE; // DocumentFile.fromFile(DOWNLOADS_DIR_FILE); - // return; - // } - final String customPath = Utils.settingsHelper.getString(FOLDER_PATH); - if (TextUtils.isEmpty(customPath)) { + final String barinstaDirUri = Utils.settingsHelper.getString(PREF_BARINSTA_DIR_URI); + if (TextUtils.isEmpty(barinstaDirUri)) { throw new ReselectDocumentTreeException("folder path is null or empty"); - // root = DOWNLOADS_DIR_FILE; // DocumentFile.fromFile(DOWNLOADS_DIR_FILE); - // return; } - if (!customPath.startsWith("content")) { - // if (customPath.equals(DOWNLOADS_DIR_FILE.getAbsolutePath())) { - // throw new ReselectDocumentTreeException(); - // } + if (!barinstaDirUri.startsWith("content")) { // reselect the folder in selector view - throw new ReselectDocumentTreeException(Uri.parse(customPath)); + throw new ReselectDocumentTreeException(Uri.parse(barinstaDirUri)); } - final Uri uri = Uri.parse(customPath); + final Uri uri = Uri.parse(barinstaDirUri); final List existingPermissions = context.getContentResolver().getPersistedUriPermissions(); if (existingPermissions.isEmpty()) { // reselect the folder in selector view @@ -96,10 +83,6 @@ public final class DownloadUtils { root = null; throw new ReselectDocumentTreeException(uri); } - // Log.d(TAG, "init: " + root); - // final File parent = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); - // final DocumentFile documentFile = DocumentFile.fromFile(parent); - // Log.d(TAG, "init: " + documentFile); } public static void destroy() { diff --git a/app/src/main/java/awais/instagrabber/utils/SettingsHelper.java b/app/src/main/java/awais/instagrabber/utils/SettingsHelper.java index fc568d9e..8c08420f 100755 --- a/app/src/main/java/awais/instagrabber/utils/SettingsHelper.java +++ b/app/src/main/java/awais/instagrabber/utils/SettingsHelper.java @@ -11,6 +11,7 @@ import androidx.appcompat.app.AppCompatDelegate; import java.util.HashSet; import java.util.Set; +import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_BARINSTA_DIR_URI; import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_AUTO_REFRESH; import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_AUTO_REFRESH_FREQ_NUMBER; import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_ENABLE_DM_AUTO_REFRESH_FREQ_UNIT; @@ -158,7 +159,7 @@ public final class SettingsHelper { CUSTOM_DATE_TIME_FORMAT, DEVICE_UUID, SKIPPED_VERSION, DEFAULT_TAB, PREF_DARK_THEME, PREF_LIGHT_THEME, PREF_POSTS_LAYOUT, PREF_PROFILE_POSTS_LAYOUT, PREF_TOPIC_POSTS_LAYOUT, PREF_HASHTAG_POSTS_LAYOUT, PREF_LOCATION_POSTS_LAYOUT, PREF_LIKED_POSTS_LAYOUT, PREF_TAGGED_POSTS_LAYOUT, PREF_SAVED_POSTS_LAYOUT, - STORY_SORT, PREF_EMOJI_VARIANTS, PREF_REACTIONS, PREF_ENABLE_DM_AUTO_REFRESH_FREQ_UNIT, PREF_TAB_ORDER}) + STORY_SORT, PREF_EMOJI_VARIANTS, PREF_REACTIONS, PREF_ENABLE_DM_AUTO_REFRESH_FREQ_UNIT, PREF_TAB_ORDER, PREF_BARINSTA_DIR_URI}) public @interface StringSettings {} @StringDef({DOWNLOAD_USER_FOLDER, DOWNLOAD_PREPEND_USER_NAME, FOLDER_SAVE_TO, AUTOPLAY_VIDEOS, SHOW_QUICK_ACCESS_DIALOG, MUTED_VIDEOS, diff --git a/app/src/main/java/awais/instagrabber/utils/Utils.java b/app/src/main/java/awais/instagrabber/utils/Utils.java index 3a98d1f0..c2a55c33 100644 --- a/app/src/main/java/awais/instagrabber/utils/Utils.java +++ b/app/src/main/java/awais/instagrabber/utils/Utils.java @@ -67,7 +67,7 @@ import awais.instagrabber.models.PostsLayoutPreferences; import awais.instagrabber.models.Tab; import awais.instagrabber.models.enums.FavoriteType; -import static awais.instagrabber.utils.Constants.FOLDER_PATH; +import static awais.instagrabber.fragments.settings.PreferenceKeys.PREF_BARINSTA_DIR_URI; public final class Utils { private static final String TAG = "Utils"; @@ -564,7 +564,7 @@ public final class Utils { if (dirUri == null) return; final int takeFlags = intent.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); context.getContentResolver().takePersistableUriPermission(dirUri, takeFlags); - settingsHelper.putString(FOLDER_PATH, dirUri.toString()); + settingsHelper.putString(PREF_BARINSTA_DIR_URI, dirUri.toString()); // re-init DownloadUtils DownloadUtils.init(context); } diff --git a/app/src/main/java/awais/instagrabber/viewmodels/DirectorySelectActivityViewModel.java b/app/src/main/java/awais/instagrabber/viewmodels/DirectorySelectActivityViewModel.java index 3fc940ae..a1bfdccf 100644 --- a/app/src/main/java/awais/instagrabber/viewmodels/DirectorySelectActivityViewModel.java +++ b/app/src/main/java/awais/instagrabber/viewmodels/DirectorySelectActivityViewModel.java @@ -21,6 +21,7 @@ import java.util.List; import awais.instagrabber.R; import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.DownloadUtils; +import awais.instagrabber.utils.TextUtils; import awais.instagrabber.utils.Utils; public class DirectorySelectActivityViewModel extends AndroidViewModel { @@ -66,14 +67,15 @@ public class DirectorySelectActivityViewModel extends AndroidViewModel { private void setMessage(@Nullable final Uri initialUri) { if (initialUri == null) { - // default message - message.postValue(getApplication().getString(R.string.dir_select_default_message)); - prevUri.postValue(null); - return; - } - if (!initialUri.toString().startsWith("content")) { + final String prevVersionFolderPath = Utils.settingsHelper.getString(Constants.FOLDER_PATH); + if (TextUtils.isEmpty(prevVersionFolderPath)) { + // default message + message.postValue(getApplication().getString(R.string.dir_select_default_message)); + prevUri.postValue(null); + return; + } message.postValue(getApplication().getString(R.string.dir_select_reselect_message)); - prevUri.postValue(initialUri.toString()); + prevUri.postValue(prevVersionFolderPath); return; } final List existingPermissions = getApplication().getContentResolver().getPersistedUriPermissions();