Skip to content

Commit

Permalink
Merge pull request #1925 from TeamAmaze/feature/1919
Browse files Browse the repository at this point in the history
1919: Fix loading tabs after giving storage permissions
  • Loading branch information
VishalNehra authored Jul 16, 2020
2 parents b590f3a + bc10a73 commit 25d7a59
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import com.amaze.filemanager.database.UtilsHandler;
import com.amaze.filemanager.database.models.OperationData;
import com.amaze.filemanager.database.models.explorer.CloudEntry;
import com.amaze.filemanager.database.models.explorer.Tab;
import com.amaze.filemanager.exceptions.CloudPluginException;
import com.amaze.filemanager.filesystem.FileUtil;
import com.amaze.filemanager.filesystem.HybridFile;
Expand Down Expand Up @@ -454,20 +453,8 @@ private void checkForExternalPermission() {
if (b) {
TabHandler tabHandler = TabHandler.getInstance();
tabHandler.clear();

if (drawer.getPhoneStorageCount() > 1) {
tabHandler.addTab(new Tab(1, drawer.getSecondPath(), "/"));
} else {
tabHandler.addTab(new Tab(1, "/", "/"));
}

if (drawer.getFirstPath() != null) {
String pa = drawer.getFirstPath();
tabHandler.addTab(new Tab(2, pa, pa));
} else {
tabHandler.addTab(new Tab(2, drawer.getSecondPath(), "/"));
}
if (tabFragment != null) {
tabFragment.refactorDrawerStorages(false);
Fragment main = tabFragment.getFragmentAtIndex(0);
if (main != null) ((MainFragment) main).updateTabWithDb(tabHandler.findTab(1));
Fragment main1 = tabFragment.getFragmentAtIndex(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.amaze.filemanager.utils.MainActivityHelper;
import com.amaze.filemanager.utils.OpenMode;
import com.amaze.filemanager.utils.PreferenceUtils;
import com.amaze.filemanager.utils.Utils;

import android.animation.ArgbEvaluator;
import android.content.SharedPreferences;
Expand Down Expand Up @@ -124,47 +125,7 @@ public View onCreateView(
PreferencesConstants.PREFERENCE_CURRENT_TAB, PreferenceUtils.DEFAULT_CURRENT_TAB);
MainActivity.currentTab = lastOpenTab;

Tab tab1 = tabHandler.findTab(1);
Tab tab2 = tabHandler.findTab(2);
Tab[] tabs = tabHandler.getAllTabs();

if (tabs == null
|| tabs.length < 1
|| tab1 == null
|| tab2 == null) { // creating tabs in db for the first time, probably the first launch of
// app, or something got corrupted
if (mainActivity.getDrawer().getFirstPath() != null) {
addNewTab(1, mainActivity.getDrawer().getFirstPath());
} else {
if (mainActivity.getDrawer().getSecondPath() != null) {
addNewTab(1, mainActivity.getDrawer().getSecondPath());
} else {
sharedPrefs.edit().putBoolean(PreferencesConstants.PREFERENCE_ROOTMODE, true).apply();
addNewTab(1, "/");
}
}

if (mainActivity.getDrawer().getSecondPath() != null) {
addNewTab(2, mainActivity.getDrawer().getSecondPath());
} else {
addNewTab(2, mainActivity.getDrawer().getFirstPath());
}
} else {
if (path != null && path.length() != 0) {
if (lastOpenTab == 0) {
addTab(tab1, path);
addTab(tab2, "");
}

if (lastOpenTab == 1) {
addTab(tab1, "");
addTab(tab2, path);
}
} else {
addTab(tab1, "");
addTab(tab2, "");
}
}
refactorDrawerStorages(true);

mViewPager.setAdapter(mSectionsPagerAdapter);

Expand Down Expand Up @@ -378,7 +339,55 @@ private void addNewTab(int num, String path) {
addTab(new Tab(num, path, path), "");
}

public void addTab(@NonNull Tab tab, String path) {
/**
* Fetches new storage paths from drawer and apply to tabs This method will just create tabs in UI
* change paths in database. Calls should implement updating each tab's list for new paths.
*
* @param addTab whether new tabs should be added to ui or just change values in database
*/
public void refactorDrawerStorages(boolean addTab) {
Tab tab1 = tabHandler.findTab(1);
Tab tab2 = tabHandler.findTab(2);
Tab[] tabs = tabHandler.getAllTabs();
String firstTabPath = mainActivity.getDrawer().getFirstPath();
String secondTabPath = mainActivity.getDrawer().getSecondPath();

if (tabs == null
|| tabs.length < 1
|| tab1 == null
|| tab2 == null) { // creating tabs in db for the first time, probably the first launch of
// app, or something got corrupted
String currentFirstTab = Utils.isNullOrEmpty(firstTabPath) ? "/" : firstTabPath;
String currentSecondTab = Utils.isNullOrEmpty(secondTabPath) ? firstTabPath : secondTabPath;
if (addTab) {
addNewTab(1, currentSecondTab);
addNewTab(2, currentFirstTab);
}
tabHandler.addTab(new Tab(1, currentSecondTab, currentSecondTab));
tabHandler.addTab(new Tab(2, currentFirstTab, currentFirstTab));

if (currentFirstTab.equalsIgnoreCase("/")) {
sharedPrefs.edit().putBoolean(PreferencesConstants.PREFERENCE_ROOTMODE, true).apply();
}
} else {
if (path != null && path.length() != 0) {
if (MainActivity.currentTab == 0) {
addTab(tab1, path);
addTab(tab2, "");
}

if (MainActivity.currentTab == 1) {
addTab(tab1, "");
addTab(tab2, path);
}
} else {
addTab(tab1, "");
addTab(tab2, "");
}
}
}

private void addTab(@NonNull Tab tab, String path) {
Fragment main = new MainFragment();
Bundle b = new Bundle();

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/amaze/filemanager/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,10 @@ public static boolean isNullOrEmpty(final Collection<?> list) {
return list == null || list.size() == 0;
}

public static boolean isNullOrEmpty(final String string) {
return string == null || string.length() == 0;
}

/**
* Clears the fab action items and animate the main fab to open/close icon (i.e. without any
* background overlay) Generally used in combination with snackbar, to show/hide snackbar using
Expand Down

0 comments on commit 25d7a59

Please sign in to comment.