preserve filename case in Dropbox when uploading files, closes https://github.com/PhilippC/keepass2android/issues/898
This commit is contained in:
@@ -192,7 +192,30 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
|||||||
{
|
{
|
||||||
ByteArrayInputStream bis = new ByteArrayInputStream(data);
|
ByteArrayInputStream bis = new ByteArrayInputStream(data);
|
||||||
try {
|
try {
|
||||||
path = removeProtocol(path);
|
|
||||||
|
//try to get the file id from the path and use that to create the uploadBuilder. This should preserve the case of the path.
|
||||||
|
String id = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
id = getFileEntry(path).userData;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
//ignore. file might not exist yet.
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id != null && id.length() > 0)
|
||||||
|
{
|
||||||
|
path = id;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
path = removeProtocol(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dbxClient.files().uploadBuilder(path).withMode(WriteMode.OVERWRITE).uploadAndFinish(bis);
|
dbxClient.files().uploadBuilder(path).withMode(WriteMode.OVERWRITE).uploadAndFinish(bis);
|
||||||
|
|
||||||
@@ -416,6 +439,7 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
|||||||
fileEntry.sizeInBytes = fm.getSize();
|
fileEntry.sizeInBytes = fm.getSize();
|
||||||
fileEntry.isDirectory = false;
|
fileEntry.isDirectory = false;
|
||||||
fileEntry.lastModifiedTime = fm.getServerModified().getTime();
|
fileEntry.lastModifiedTime = fm.getServerModified().getTime();
|
||||||
|
fileEntry.userData = fm.getId();
|
||||||
}
|
}
|
||||||
else if (e instanceof DeletedMetadata)
|
else if (e instanceof DeletedMetadata)
|
||||||
{
|
{
|
||||||
@@ -428,6 +452,7 @@ public class DropboxV2Storage extends JavaFileStorageBase
|
|||||||
|
|
||||||
fileEntry.path = getProtocolId()+"://"+ e.getPathLower();
|
fileEntry.path = getProtocolId()+"://"+ e.getPathLower();
|
||||||
fileEntry.displayName = e.getName();
|
fileEntry.displayName = e.getName();
|
||||||
|
|
||||||
//Log.d("JFS","fileEntry="+fileEntry);
|
//Log.d("JFS","fileEntry="+fileEntry);
|
||||||
//Log.d("JFS","Ok. Dir="+fileEntry.isDirectory);
|
//Log.d("JFS","Ok. Dir="+fileEntry.isDirectory);
|
||||||
return fileEntry;
|
return fileEntry;
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ public class FileEntry {
|
|||||||
public long sizeInBytes;
|
public long sizeInBytes;
|
||||||
public String displayName;
|
public String displayName;
|
||||||
|
|
||||||
|
public String userData; //can be set by the storage implementation
|
||||||
|
|
||||||
public FileEntry()
|
public FileEntry()
|
||||||
{
|
{
|
||||||
isDirectory = false;
|
isDirectory = false;
|
||||||
|
|||||||
@@ -557,7 +557,7 @@ public class MainActivity extends Activity implements JavaFileStorage.FileStorag
|
|||||||
}
|
}
|
||||||
});*/
|
});*/
|
||||||
|
|
||||||
storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "3s86datjhkihwyc", !simulateRestart);
|
storageToTest = new DropboxV2Storage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||||
//storageToTest = new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
//storageToTest = new DropboxFileStorage(ctx,"4ybka4p4a1027n6", "1z5lv528un9nre8", !simulateRestart);
|
||||||
//storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true);
|
//storageToTest = new DropboxAppFolderFileStorage(ctx,"ax0268uydp1ya57", "3s86datjhkihwyc", true);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user