Skip to content

Commit

Permalink
Fix some rootmode operations
Browse files Browse the repository at this point in the history
  • Loading branch information
EmmanuelMess committed Jan 29, 2022
1 parent 8e8a86b commit e84eeca
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 128 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import com.amaze.filemanager.asynchronous.asynctasks.DeleteTask
import com.amaze.filemanager.asynchronous.management.ServiceWatcherUtil
import com.amaze.filemanager.asynchronous.services.CopyService
import com.amaze.filemanager.file_operations.filesystem.OpenMode
import com.amaze.filemanager.filesystem.files.FileAmazeFilesystem
import com.amaze.filemanager.filesystem.HybridFileParcelable
import com.amaze.filemanager.filesystem.RootHelper
import com.amaze.filemanager.filesystem.files.FileUtils
Expand All @@ -68,7 +69,6 @@ import com.amaze.filemanager.utils.AnimUtils.marqueeAfterDelay
import com.amaze.filemanager.utils.Utils
import com.amaze.filemanager.utils.safeLet
import java.io.File
import java.util.*
import kotlin.collections.ArrayList
import kotlin.math.roundToInt

Expand Down Expand Up @@ -382,7 +382,7 @@ class AppsRecyclerAdapter(
if (appDataParcelable.isSystemApp) {
// system package
if ((fragment.requireActivity() as MainActivity).getBoolean(
PreferencesConstants.PREFERENCE_ROOTMODE
FileAmazeFilesystem.PREFERENCE_ROOTMODE
)
) {
showDeleteSystemAppDialog(themedActivity, colorAccent, f1)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ import android.net.Uri
import android.os.Build
import android.util.Log
import androidx.documentfile.provider.DocumentFile
import androidx.preference.PreferenceManager
import com.amaze.filemanager.file_operations.filesystem.filetypes.file.FileAmazeFilesystem
import com.amaze.filemanager.file_operations.filesystem.filetypes.file.UriForSafPersistance
import com.amaze.filemanager.ui.fragments.preference_fragments.PreferencesConstants
import java.io.File
import java.io.IOException
import java.util.*
Expand Down
63 changes: 7 additions & 56 deletions app/src/main/java/com/amaze/filemanager/filesystem/HybridFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,31 +42,20 @@
import com.amaze.filemanager.file_operations.exceptions.ShellNotRunningException;
import com.amaze.filemanager.file_operations.filesystem.OpenMode;
import com.amaze.filemanager.file_operations.filesystem.filetypes.AmazeFile;
import com.amaze.filemanager.file_operations.filesystem.filetypes.ContextProvider;
import com.amaze.filemanager.file_operations.filesystem.filetypes.cloud.box.BoxAccount;
import com.amaze.filemanager.file_operations.filesystem.filetypes.cloud.dropbox.DropboxAccount;
import com.amaze.filemanager.file_operations.filesystem.filetypes.cloud.gdrive.GoogledriveAccount;
import com.amaze.filemanager.file_operations.filesystem.filetypes.cloud.onedrive.OnedriveAccount;
import com.amaze.filemanager.filesystem.files.FileAmazeFilesystem;
import com.amaze.filemanager.file_operations.filesystem.root.NativeOperations;
import com.amaze.filemanager.filesystem.cloud.CloudUtil;
import com.amaze.filemanager.filesystem.files.DocumentFileAmazeFilesystem;
import com.amaze.filemanager.filesystem.files.FileUtils;
import com.amaze.filemanager.filesystem.root.DeleteFileCommand;
import com.amaze.filemanager.filesystem.root.ListFilesCommand;
import com.amaze.filemanager.filesystem.ssh.SFtpClientTemplate;
import com.amaze.filemanager.filesystem.ssh.SshClientTemplate;
import com.amaze.filemanager.filesystem.ssh.SshClientUtils;
import com.amaze.filemanager.filesystem.ssh.SshConnectionPool;
import com.amaze.filemanager.filesystem.ssh.Statvfs;
import com.amaze.filemanager.ui.fragments.preference_fragments.PreferencesConstants;
import com.amaze.filemanager.utils.DataUtils;
import com.amaze.filemanager.utils.OTGUtil;
import com.amaze.filemanager.utils.OnFileFound;
import com.amaze.filemanager.utils.Utils;
import com.cloudrail.si.interfaces.CloudStorage;
import com.cloudrail.si.types.SpaceAllocation;

import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
Expand All @@ -79,13 +68,9 @@

import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.common.Buffer;
import net.schmizz.sshj.sftp.FileMode;
import net.schmizz.sshj.sftp.RemoteFile;

import net.schmizz.sshj.sftp.RemoteResourceInfo;
import net.schmizz.sshj.sftp.SFTPClient;
import net.schmizz.sshj.sftp.SFTPException;

/**
* Hybrid file for handeling all types of files
Expand Down Expand Up @@ -151,7 +136,7 @@ public void generateMode(Context context) {
} else {
boolean rootmode =
PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(PreferencesConstants.PREFERENCE_ROOTMODE, false);
.getBoolean(FileAmazeFilesystem.PREFERENCE_ROOTMODE, false);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
mode = OpenMode.FILE;
if (rootmode && !getFile().canRead()) {
Expand Down Expand Up @@ -756,35 +741,12 @@ public OutputStream getOutputStream(Context context) {
}

public boolean exists() {
if (isSmb() || isLocal() || isDropBoxFile() || isBoxFile() || isGoogleDriveFile()
|| isOneDriveFile() || isDocumentFile() || isSftp()) {
return new AmazeFile(path).exists(() -> null);
} else if (isRoot()) {
return RootHelper.fileExists(path);
}

return false;
return new AmazeFile(path).exists(() -> null);
}

/** Helper method to check file existence in otg */
public boolean exists(Context context) {
boolean exists = false;
try {
if (isSmb() || isLocal() || isDropBoxFile() || isBoxFile() || isGoogleDriveFile()
|| isOneDriveFile() || isOtgFile() || isSftp() || isDocumentFile()) {
return new AmazeFile(path).exists(() -> context);
} else if (isDocumentFile()) {
exists =
OTGUtil.getDocumentFile(
path, SafRootHolder.getUriRoot(), context, OpenMode.DOCUMENT_FILE, false)
!= null;
} else {
return (exists());
}
} catch (Exception e) {
Log.i(getClass().getSimpleName(), "Failed to find file", e);
}
return exists;
return new AmazeFile(path).exists(() -> context);
}

/**
Expand All @@ -807,22 +769,11 @@ public boolean isSimpleFile() {
}

public boolean setLastModified(final long date) {
if (isSmb() || isLocal() || isOneDriveFile() || isBoxFile() || isGoogleDriveFile()
|| isDropBoxFile() || isSftp() || isOtgFile()) {
return new AmazeFile(path).setLastModified(date);
}
File f = getFile();
return f.setLastModified(date);
return new AmazeFile(path).setLastModified(date);
}

public void mkdir(Context context) {
if (isSftp() || isSmb() || isLocal() || isRoot() || isCustomPath() || isUnknownFile()
|| isOneDriveFile() || isBoxFile() || isGoogleDriveFile() || isDropBoxFile()
|| isOtgFile() || isDocumentFile()) {
new AmazeFile(path).mkdirs(() -> context);
} else {
throw new IllegalStateException();
}
new AmazeFile(path).mkdirs(() -> context);
}

public boolean delete(Context context, boolean rootmode)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import com.amaze.filemanager.file_operations.filesystem.filetypes.ContextProvide
import com.amaze.filemanager.filesystem.FileProperties.getDeviceStorageRemainingSpace
import com.amaze.filemanager.filesystem.SafRootHolder.uriRoot
import com.amaze.filemanager.filesystem.SafRootHolder.volumeLabel
import com.amaze.filemanager.filesystem.otg.OtgAmazeFilesystem
import com.amaze.filemanager.utils.OTGUtil.getDocumentFile
import java.io.FileNotFoundException
import java.io.IOException
Expand Down Expand Up @@ -54,8 +53,12 @@ object DocumentFileAmazeFilesystem: AmazeFilesystem() {
}

override fun exists(f: AmazeFile, contextProvider: ContextProvider): Boolean {
val documentFile = getDocumentFile(f.path, false) ?: return false
return documentFile.exists()
val uriRoot = uriRoot ?: return false
val context = contextProvider.getContext() ?: return false
val documentFile = getDocumentFile(
f.path, uriRoot, context, OpenMode.DOCUMENT_FILE, false
)
return documentFile != null
}

override fun isFile(f: AmazeFile, contextProvider: ContextProvider): Boolean {
Expand Down

0 comments on commit e84eeca

Please sign in to comment.