generateSharableLink method
Implementation
@override
Future<Uri?> generateSharableLink(String path) async {
_checkAuth();
final drive.File? file = await _getFileByPath(path);
if (file == null || file.id == null) {
debugPrint("GoogleDriveProvider: File not found at $path");
return null;
}
final permission = drive.Permission()
..type = 'anyone'
..role = 'writer';
try {
await driveApi.permissions.create(
permission,
file.id!,
$fields: 'id',
);
} catch (e) {
debugPrint("Error setting permission for sharing: $e");
return null;
}
try {
final fileMetadata = await driveApi.files.get(
file.id!,
$fields: 'id, name, webViewLink',
) as drive.File;
if (fileMetadata.webViewLink == null) {
debugPrint("No webViewLink returned by API.");
return null;
}
final shareableUri = Uri.parse(fileMetadata.webViewLink!).replace(
queryParameters: {
...Uri.parse(fileMetadata.webViewLink!).queryParameters,
'originalPath': path,
},
);
return shareableUri;
} catch (e) {
debugPrint("Error getting shareable link: $e");
return null;
}
}