From 05b6000262b0e95b845f3ea085eb76ed3b4c1ab1 Mon Sep 17 00:00:00 2001 From: superzaky Date: Mon, 29 Jun 2020 19:00:14 +0200 Subject: [PATCH] Reduce cognitive complexity. --- .../androidquran/data/QuranDataModule.java | 2 + .../androidquran/data/QuranFileConstants.java | 3 + .../labs/androidquran/QuranDataActivity.java | 125 +++++++++++------- 3 files changed, 80 insertions(+), 50 deletions(-) diff --git a/app/src/madani/java/com/quran/labs/androidquran/data/QuranDataModule.java b/app/src/madani/java/com/quran/labs/androidquran/data/QuranDataModule.java index a7c0caf163..d0f9523092 100644 --- a/app/src/madani/java/com/quran/labs/androidquran/data/QuranDataModule.java +++ b/app/src/madani/java/com/quran/labs/androidquran/data/QuranDataModule.java @@ -10,6 +10,8 @@ @Module public class QuranDataModule { + private QuranDataModule(){} + @Provides static PageProvider provideQuranPageProvider(Map providers, QuranSettings quranSettings) { diff --git a/app/src/madani/java/com/quran/labs/androidquran/data/QuranFileConstants.java b/app/src/madani/java/com/quran/labs/androidquran/data/QuranFileConstants.java index 3cdf10fa53..abc2ba3655 100644 --- a/app/src/madani/java/com/quran/labs/androidquran/data/QuranFileConstants.java +++ b/app/src/madani/java/com/quran/labs/androidquran/data/QuranFileConstants.java @@ -6,6 +6,9 @@ import com.quran.labs.androidquran.ui.util.TypefaceManager; public class QuranFileConstants { + + private QuranFileConstants() {} + // server urls public static final int FONT_TYPE = TypefaceManager.TYPE_UTHMANI_HAFS; diff --git a/app/src/main/java/com/quran/labs/androidquran/QuranDataActivity.java b/app/src/main/java/com/quran/labs/androidquran/QuranDataActivity.java index db8f40f0fd..b76fb0ead7 100644 --- a/app/src/main/java/com/quran/labs/androidquran/QuranDataActivity.java +++ b/app/src/main/java/com/quran/labs/androidquran/QuranDataActivity.java @@ -286,7 +286,9 @@ private boolean canWriteSdcardAfterPermissions() { quranFileUtils.makeQuranDirectory(this, quranScreenInfo.getWidthParam())) { File f = new File(location, "" + System.currentTimeMillis()); if (f.createNewFile()) { - f.delete(); + if (!f.delete()) { + // file delete failed; take appropriate action + } return true; } } @@ -360,61 +362,84 @@ public void onStorageNotAvailable() { public void onPagesChecked(QuranDataPresenter.QuranDataStatus quranDataStatus) { this.quranDataStatus = quranDataStatus; + getPagesIfNecessary(quranDataStatus); + } + + private void getPagesIfNecessary(QuranDataPresenter.QuranDataStatus quranDataStatus) { if (!quranDataStatus.havePages()) { - if (quranSettings.didDownloadPages()) { - // log if we downloaded pages once before - try { - onPagesLost(); - } catch (Exception e) { - Crashlytics.logException(e); - } - // clear the "pages downloaded" flag - quranSettings.removeDidDownloadPages(); - } + logDownloadedPagesIfNecessary(); + } else { + createFilesInQuranDir(quranDataStatus); + } + } - String lastErrorItem = quranSettings.getLastDownloadItemWithError(); - Timber.d("checkPages: need to download pages... lastError: %s", lastErrorItem); - if (PAGES_DOWNLOAD_KEY.equals(lastErrorItem)) { - int lastError = quranSettings.getLastDownloadErrorCode(); - int errorId = ServiceIntentHelper - .getErrorResourceFromErrorCode(lastError, false); - showFatalErrorDialog(errorId); - } else if (quranSettings.shouldFetchPages()) { - downloadQuranImages(false); - } else { - promptForDownload(); - } + private void createFilesInQuranDir(QuranDataPresenter.QuranDataStatus quranDataStatus) { + final String appLocation = quranSettings.getAppCustomLocation(); + final String baseDirectory = quranFileUtils.getQuranBaseDirectory(); + try { + // try to write a directory to distinguish between the entire Quran directory + // being removed versus just the images being somehow removed. + + //noinspection ResultOfMethodCallIgnored + new File(baseDirectory, QURAN_DIRECTORY_MARKER_FILE).createNewFile(); + //noinspection ResultOfMethodCallIgnored + new File(baseDirectory, QURAN_HIDDEN_DIRECTORY_MARKER_FILE).createNewFile(); + makeQuranHiddenDirMarkerFileIfNecessary(); + + quranSettings.setDownloadedPages(System.currentTimeMillis(), appLocation, + quranDataStatus.getPortraitWidth() + "_" + quranDataStatus.getLandscapeWidth()); + } catch (IOException ioe) { + Crashlytics.logException(ioe); + } + + promptForDownloadIfNecessary(quranDataStatus); + } + + private void promptForDownloadIfNecessary(QuranDataPresenter.QuranDataStatus quranDataStatus) { + final String patchParam = quranDataStatus.getPatchParam(); + if (!TextUtils.isEmpty(patchParam)) { + Timber.d("checkPages: have pages, but need patch %s", patchParam); + promptForDownload(); } else { - final String appLocation = quranSettings.getAppCustomLocation(); - final String baseDirectory = quranFileUtils.getQuranBaseDirectory(); - try { - // try to write a directory to distinguish between the entire Quran directory - // being removed versus just the images being somehow removed. - - //noinspection ResultOfMethodCallIgnored - new File(baseDirectory, QURAN_DIRECTORY_MARKER_FILE).createNewFile(); - //noinspection ResultOfMethodCallIgnored - new File(baseDirectory, QURAN_HIDDEN_DIRECTORY_MARKER_FILE).createNewFile(); - - // try writing a file to the app's internal no_backup directory - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - //noinspection ResultOfMethodCallIgnored - new File(getNoBackupFilesDir(), QURAN_HIDDEN_DIRECTORY_MARKER_FILE).createNewFile(); - } + runListView(); + } + } - quranSettings.setDownloadedPages(System.currentTimeMillis(), appLocation, - quranDataStatus.getPortraitWidth() + "_" + quranDataStatus.getLandscapeWidth()); - } catch (IOException ioe) { - Crashlytics.logException(ioe); - } + private void makeQuranHiddenDirMarkerFileIfNecessary() throws IOException { + // try writing a file to the app's internal no_backup directory + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + //noinspection ResultOfMethodCallIgnored + new File(getNoBackupFilesDir(), QURAN_HIDDEN_DIRECTORY_MARKER_FILE).createNewFile(); + } + } - final String patchParam = quranDataStatus.getPatchParam(); - if (!TextUtils.isEmpty(patchParam)) { - Timber.d("checkPages: have pages, but need patch %s", patchParam); - promptForDownload(); - } else { - runListView(); + private void logDownloadedPagesIfNecessary() { + if (quranSettings.didDownloadPages()) { + // log if we downloaded pages once before + try { + onPagesLost(); + } catch (Exception e) { + Crashlytics.logException(e); } + // clear the "pages downloaded" flag + quranSettings.removeDidDownloadPages(); + } + + displayErrorIfNecessary(); + } + + private void displayErrorIfNecessary() { + String lastErrorItem = quranSettings.getLastDownloadItemWithError(); + Timber.d("checkPages: need to download pages... lastError: %s", lastErrorItem); + if (PAGES_DOWNLOAD_KEY.equals(lastErrorItem)) { + int lastError = quranSettings.getLastDownloadErrorCode(); + int errorId = ServiceIntentHelper + .getErrorResourceFromErrorCode(lastError, false); + showFatalErrorDialog(errorId); + } else if (quranSettings.shouldFetchPages()) { + downloadQuranImages(false); + } else { + promptForDownload(); } }