Skip to content

Commit 6f8c61f

Browse files
author
LaksCastro
committed
(#62) Remove unnecessary rootUri param
1 parent 4e5f031 commit 6f8c61f

8 files changed

Lines changed: 25 additions & 53 deletions

File tree

android/src/main/kotlin/io/lakscastro/sharedstorage/storageaccessframework/DocumentFileApi.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -423,18 +423,8 @@ internal class DocumentFileApi(private val plugin: SharedStoragePlugin) :
423423
if (eventSink == null) return
424424

425425
val columns = args["columns"] as List<*>
426-
val rootUri =
427-
Uri.parse(args["rootUri"] as String) // Must be a Uri you have access over (granted by OPEN_DOCUMENT_TREE intent)
428426
val uri = Uri.parse(args["uri"] as String)
429-
430-
val documentId = try {
431-
DocumentsContract.getDocumentId(uri)
432-
} catch (e: IllegalArgumentException) {
433-
DocumentsContract.getTreeDocumentId(uri)
434-
}
435-
val documentUri =
436-
DocumentsContract.buildDocumentUriUsingTree(rootUri, documentId)
437-
val document = DocumentFile.fromTreeUri(plugin.context, documentUri)
427+
val document = DocumentFile.fromTreeUri(plugin.context, uri)
438428

439429
if (document == null) {
440430
eventSink.error(
@@ -463,7 +453,6 @@ internal class DocumentFileApi(private val plugin: SharedStoragePlugin) :
463453
plugin.context.contentResolver,
464454
rootOnly = true,
465455
targetUri = document.uri,
466-
rootUri = rootUri,
467456
columns =
468457
columns
469458
.map { parseDocumentFileColumn(parseDocumentFileColumn(it as String)!!) }

android/src/main/kotlin/io/lakscastro/sharedstorage/storageaccessframework/DocumentsContractApi.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,10 @@ internal class DocumentsContractApi(private val plugin: SharedStoragePlugin) :
3131
when (call.method) {
3232
GET_DOCUMENT_THUMBNAIL -> {
3333
if (Build.VERSION.SDK_INT >= API_21) {
34-
val rootUri = Uri.parse(call.argument("rootUri"))
35-
val documentId = call.argument<String>("documentId")
34+
val uri = Uri.parse(call.argument("uri"))
3635
val width = call.argument<Int>("width")!!
3736
val height = call.argument<Int>("height")!!
3837

39-
val uri = DocumentsContract.buildDocumentUriUsingTree(rootUri, documentId)
40-
4138
val bitmap =
4239
DocumentsContract.getDocumentThumbnail(
4340
plugin.context.contentResolver,

android/src/main/kotlin/io/lakscastro/sharedstorage/storageaccessframework/lib/DocumentCommon.kt

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ fun createDocumentFileMap(documentFile: DocumentFile?): Map<String, Any?>? {
8383
* ```
8484
*/
8585
fun createCursorRowMap(
86-
rootUri: Uri,
8786
parentUri: Uri,
8887
uri: Uri,
8988
data: Map<String, Any>,
@@ -105,7 +104,6 @@ fun createCursorRowMap(
105104
"data" to formattedData,
106105
"metadata" to mapOf(
107106
"parentUri" to "$parentUri",
108-
"rootUri" to "$rootUri",
109107
"isDirectory" to isDirectory,
110108
"uri" to "$uri"
111109
)
@@ -132,12 +130,22 @@ fun traverseDirectoryEntries(
132130
targetUri: Uri,
133131
columns: Array<String>,
134132
rootOnly: Boolean,
135-
rootUri: Uri,
136133
block: (data: Map<String, Any>, isLast: Boolean) -> Unit
137134
): Boolean {
135+
val documentId = try {
136+
DocumentsContract.getDocumentId(targetUri)
137+
} catch(e: IllegalArgumentException) {
138+
DocumentsContract.getTreeDocumentId(targetUri)
139+
}
140+
val treeDocumentId = DocumentsContract.getTreeDocumentId(targetUri)
141+
142+
val rootUri = DocumentsContract.buildTreeDocumentUri(
143+
targetUri.authority,
144+
treeDocumentId
145+
)
138146
val childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(
139147
rootUri,
140-
DocumentsContract.getDocumentId(targetUri)
148+
documentId
141149
)
142150

143151
// Keep track of our directory hierarchy
@@ -191,7 +199,7 @@ fun traverseDirectoryEntries(
191199
val isDirectory = if (mimeType != null) isDirectory(mimeType) else null
192200

193201
val uri = DocumentsContract.buildDocumentUriUsingTree(
194-
parent,
202+
rootUri,
195203
DocumentsContract.getDocumentId(
196204
DocumentsContract.buildDocumentUri(parent.authority, id)
197205
)
@@ -208,7 +216,6 @@ fun traverseDirectoryEntries(
208216

209217
block(
210218
createCursorRowMap(
211-
targetUri,
212219
parent,
213220
uri,
214221
data,

example/lib/screens/folder_files/folder_file_card.dart

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,12 @@ class _FolderFileCardState extends State<FolderFileCard> {
3333
Uint8List? imageBytes;
3434

3535
Future<void> _loadThumbnailIfAvailable() async {
36-
final rootUri = file.metadata?.rootUri;
37-
final documentId = file.data?[DocumentFileColumn.id] as String?;
36+
final uri = file.metadata?.uri;
3837

39-
if (rootUri == null || documentId == null) return;
38+
if (uri == null) return;
4039

4140
final bitmap = await getDocumentThumbnail(
42-
rootUri: rootUri,
43-
documentId: documentId,
41+
uri: uri,
4442
width: _size.width,
4543
height: _size.height,
4644
);
@@ -75,10 +73,10 @@ class _FolderFileCardState extends State<FolderFileCard> {
7573
super.dispose();
7674
}
7775

78-
void _openFolderFileListPage(Uri uri, {required Uri rootUri}) {
76+
void _openFolderFileListPage(Uri uri) {
7977
Navigator.of(context).push(
8078
MaterialPageRoute(
81-
builder: (context) => FolderFileList(uri: uri, rootUri: rootUri),
79+
builder: (context) => FolderFileList(uri: uri),
8280
),
8381
);
8482
}
@@ -153,7 +151,6 @@ class _FolderFileCardState extends State<FolderFileCard> {
153151
'summary': '${file.data?[DocumentFileColumn.summary]}',
154152
'id': '${file.data?[DocumentFileColumn.id]}',
155153
'parentUri': '${file.metadata?.parentUri}',
156-
'rootUri': '${file.metadata?.rootUri}',
157154
'uri': '${file.metadata?.uri}',
158155
},
159156
),
@@ -166,7 +163,6 @@ class _FolderFileCardState extends State<FolderFileCard> {
166163
if (_isDirectory) {
167164
_openFolderFileListPage(
168165
file.metadata!.uri!,
169-
rootUri: file.metadata!.rootUri!,
170166
);
171167
}
172168
},

example/lib/screens/folder_files/folder_file_list.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ class FolderFileList extends StatefulWidget {
1313
const FolderFileList({
1414
Key? key,
1515
required this.uri,
16-
required this.rootUri,
1716
}) : super(key: key);
1817

1918
final Uri uri;
20-
final Uri rootUri;
2119

2220
@override
2321
_FolderFileListState createState() => _FolderFileListState();
@@ -169,8 +167,7 @@ class _FolderFileListState extends State<FolderFileList> {
169167
DocumentFileColumn.id,
170168
];
171169

172-
final fileListStream =
173-
listFiles(folderUri, columns: columns, rootUri: widget.rootUri);
170+
final fileListStream = listFiles(folderUri, columns: columns);
174171

175172
_listener = fileListStream.listen(
176173
(file) {

example/lib/screens/persisted_uris/persisted_uri_card.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,7 @@ class _PersistedUriCardState extends State<PersistedUriCard> {
5050
void _openListFilesPage() {
5151
Navigator.of(context).push(
5252
MaterialPageRoute(
53-
builder: (context) => FolderFileList(
54-
uri: widget.permissionUri.uri,
55-
56-
rootUri: widget.permissionUri
57-
.uri, // Since the persisted uri is the root uri itself we use the same uri for both: target listing uri and the granted root uri
58-
),
53+
builder: (context) => FolderFileList(uri: widget.permissionUri.uri),
5954
),
6055
);
6156
}

lib/src/saf/partial_document_file.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,19 @@ class PartialDocumentFile {
5252
class QueryMetadata {
5353
const QueryMetadata._({
5454
required this.parentUri,
55-
required this.rootUri,
5655
required this.isDirectory,
5756
required this.uri,
5857
});
5958

6059
factory QueryMetadata.fromMap(Map<String, dynamic> map) {
6160
return QueryMetadata._(
6261
parentUri: _parseUri(map['parentUri'] as String?),
63-
rootUri: _parseUri(map['rootUri'] as String?),
6462
isDirectory: map['isDirectory'] as bool?,
6563
uri: _parseUri(map['uri'] as String?),
6664
);
6765
}
6866

6967
final Uri? parentUri;
70-
final Uri? rootUri;
7168
final bool? isDirectory;
7269
final Uri? uri;
7370

@@ -80,7 +77,6 @@ class QueryMetadata {
8077
Map<String, dynamic> toMap() {
8178
return <String, dynamic>{
8279
'parentUri': '$parentUri',
83-
'rootUri': '$rootUri',
8480
'isDirectory': isDirectory,
8581
'uri': uri,
8682
};
@@ -91,11 +87,10 @@ class QueryMetadata {
9187
if (other is! QueryMetadata) return false;
9288

9389
return other.parentUri == parentUri &&
94-
other.rootUri == rootUri &&
9590
other.isDirectory == isDirectory &&
9691
other.uri == uri;
9792
}
9893

9994
@override
100-
int get hashCode => Object.hash(parentUri, rootUri, isDirectory, uri);
95+
int get hashCode => Object.hash(parentUri, isDirectory, uri);
10196
}

lib/src/saf/saf.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,12 @@ Future<bool?> canWrite(Uri uri) async => kDocumentFileChannel
102102
/// [Refer to details](https://developer.android.com/reference/android/provider/DocumentsContract#getDocumentThumbnail(android.content.ContentResolver,%20android.net.Uri,%20android.graphics.Point,%20android.os.CancellationSignal)).
103103
/// {@endtemplate}
104104
Future<DocumentBitmap?> getDocumentThumbnail({
105-
required Uri rootUri,
106-
required String documentId,
105+
required Uri uri,
107106
required double width,
108107
required double height,
109108
}) async {
110109
final args = <String, dynamic>{
111-
'rootUri': '$rootUri',
112-
'documentId': documentId,
110+
'uri': '$uri',
113111
'width': width,
114112
'height': height,
115113
};
@@ -148,13 +146,11 @@ Future<DocumentBitmap?> getDocumentThumbnail({
148146
Stream<PartialDocumentFile> listFiles(
149147
Uri uri, {
150148
required List<DocumentFileColumn> columns,
151-
required Uri rootUri,
152149
}) {
153150
final args = <String, dynamic>{
154151
'uri': '$uri',
155152
'event': 'listFiles',
156153
'columns': columns.map((e) => '$e').toList(),
157-
'rootUri': '$rootUri',
158154
};
159155

160156
final onCursorRowResult =

0 commit comments

Comments
 (0)