this change fixes an issue with OneDrive: sometimes, the wrong DriveId was used to list the user's shares which was leading to an empty file browser screen. Also, files can be used if they are shared directly (not the parent folder)

This commit is contained in:
Philipp Crocoll
2025-03-25 12:31:35 +01:00
parent c62f6ef139
commit 677c6555e8

View File

@@ -1148,16 +1148,23 @@ namespace keepass2android.Io
});
}
if (!CanListShares)
return result;
try
{
string? driveId = parentPath.DriveId;
if (string.IsNullOrEmpty(driveId))
{
driveId = (await client.Me.Drive.GetAsync()).Id;
}
if ((string.IsNullOrEmpty(driveId)) && (drives?.Any() == true))
{
driveId = drives.First().Id;
}
if (!CanListShares)
return result;
var sharedWithMeResponse = await client.Drives[driveId].SharedWithMe.GetAsSharedWithMeGetResponseAsync();
foreach (DriveItem i in sharedWithMeResponse?.Value ?? [])
@@ -1165,13 +1172,22 @@ namespace keepass2android.Io
var oneDrive2ItemLocation = parentPath.BuildShare(i.RemoteItem.Id, i.RemoteItem.Name, i.RemoteItem.WebUrl, i.RemoteItem.ParentReference.DriveId);
FileDescription sharedFileEntry = new FileDescription()
{
CanWrite = true, CanRead = true, DisplayName = i.Name,
IsDirectory = true,
CanWrite = true,
CanRead = true,
DisplayName = i.Name,
IsDirectory = (i.Folder != null) || ((i.RemoteItem != null) && (i.RemoteItem.Folder != null)),
Path = oneDrive2ItemLocation.ToString()
};
result.Add(sharedFileEntry);
}
}
catch (Exception e)
{
logDebug("Failed to list shares: " + e);
}
return result;
}