-
Notifications
You must be signed in to change notification settings - Fork 108
Feat: Enable sharing assets #159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello @chikoski, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
Summary of Changes
This pull request enables the sharing of media items (images and videos) attached to messages from bots. It modifies the AndroidManifest.xml
to configure the AssetFileProvider
for sharing assets, updates AssetFileProvider.kt
to handle different media types and provide metadata, and adjusts ClipData.kt
to create clip data for sharing. It also removes an unused import and a log statement from ContextMenuArea.kt
.
Highlights
- Asset Sharing: Enables exporting media items (images and videos) attached to messages from bots.
- AndroidManifest Configuration: Configures the
AssetFileProvider
inAndroidManifest.xml
to allow sharing of assets by settingexported
tofalse
and granting URI permissions for photo, video, and icon paths. - MIME Type Handling: Updates
AssetFileProvider.kt
to determine the MIME type based on the file extension and provides a cursor for querying the display name of the shared asset. - ClipData Creation: Modifies
ClipData.kt
to create clip data for sharing media items, usingFileProvider
to generate content URIs.
Changelog
Click here to see the changelog
- app/src/main/AndroidManifest.xml
- Set
android:exported
tofalse
forAssetFileProvider
(line 158). - Added
android:grantUriPermissions="true"
toAssetFileProvider
(line 159). - Added
<grant-uri-permission>
elements for/photo/.*
,/video/.*
, and/icon/.*
(lines 161-163).
- Set
- app/src/main/java/com/google/android/samples/socialite/AssetFileProvider.kt
- Added import for
android.database.MatrixCursor
(line 22). - Added import for
android.provider.OpenableColumns
(line 24). - Modified
getType
function to determine MIME type based on file extension (lines 34-41). - Implemented
query
function to return aMatrixCursor
with the display name for icon, video, and photo assets (lines 68-81).
- Added import for
- app/src/main/java/com/google/android/samples/socialite/ui/components/ClipData.kt
- Refactored
tryCreateClipData
to userecover
instead offold
for handling exceptions (lines 30-34). - Simplified
tryCreateContentUriWithFileProvider
to directly return the result ofFileProvider.getUriForFile
usingrunCatching
(lines 42-45). - Removed the now-unused private function
tryCreateContentUriWithFileProvider(file: File, authority: String)
(lines 57-67 in the original file).
- Refactored
- app/src/main/java/com/google/android/samples/socialite/ui/components/ContextMenuArea.kt
- Removed unused import
android.util.Log
(line 19). - Removed
Log.d
statement fromrightClickDetector
(line 101 in the original file).
- Removed unused import
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
A file provider's grace,
Shares assets across the space,
Bots' media flies,
With granted URIs,
A sharing interface.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces the ability to share assets (images and videos) attached to messages from bots. The changes involve modifications to the AndroidManifest.xml, AssetFileProvider.kt, ClipData.kt, and ContextMenuArea.kt files. Overall, the changes seem reasonable, but there are a few areas that could be improved for clarity and 8000 efficiency.
Summary of Findings
- Error Handling in
getType
: ThegetType
function now returns a non-nullableString
, which might mask issues if the MIME type cannot be determined. Consider logging a warning ifgetMimeTypeFromExtension
returns null. - Null Check for
mediaItem.path
: ThetryCreateContentUriWithFileProvider
function should include a null check formediaItem.path
before creating theFile
object to prevent potentialNullPointerException
. - Change in Error Handling for Asset Files: The
tryCreateClipData
function's error handling for asset files has changed. Ensure that the new behavior of sharing the original URI is intended and document the change.
Merge Readiness
The pull request introduces a useful feature for sharing assets. However, there are a few potential issues related to error handling and null checks that should be addressed before merging. Specifically, the null check for mediaItem.path
in tryCreateContentUriWithFileProvider
should be implemented to prevent potential crashes. I am unable to directly approve this pull request, and recommend that others review and approve this code before merging.
This pull request enables exporting media items (i.e. images and videos) attached to the messages from bots.