00ea140280
The Files folder is the app's own copy — it powers offline playback and Manage
storage — but Files is not where anyone looks for photos and videos. The Photos app
is, and only PhotoKit can write there; @capacitor/filesystem cannot, because an
app sandbox and the photo library are separate stores. So this adds a small native
plugin, mirroring the existing audio-route one.
- mobile/plugins/media-library: saveToAlbum({path, album, kind}) finds or creates
the album and adds the asset. Uses addResource(with:fileURL:), which is uniform
for photo and video and non-optional, unlike creationRequestForAssetFrom*, which
can silently no-op.
- Requests .readWrite, NOT .addOnly: addOnly can add an asset but cannot look up or
create an ALBUM, which is the whole point here. Both photo-library usage strings
are already set by ios-patch.sh.
- If the album can't be resolved (e.g. "limited" access), the asset is still saved
to the camera roll — landing somewhere beats failing outright. A racing create
from two simultaneous downloads re-looks-up instead of erroring.
- Podspec named MediaLibrary.podspec with s.name = 'MediaLibrary' to match
PascalCase of the package name — the same trap that broke the AudioRoute build.
Checked by a script: pod name, jsName and declared-vs-implemented methods.
Entirely best-effort from the web side: a denied permission or an older app build
never fails a download that is already safe in the app folder. Added a Settings
toggle since this does keep a second copy of the file.
Needs a new iOS build — new native plugin.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 lines
539 B
JSON
27 lines
539 B
JSON
{
|
|
"name": "media-library",
|
|
"version": "1.0.0",
|
|
"description": "Save downloaded photos & videos into a named Photos album for Biz Connect",
|
|
"main": "dist/plugin.cjs.js",
|
|
"module": "dist/esm/index.js",
|
|
"types": "dist/esm/index.d.ts",
|
|
"author": "BizGaze",
|
|
"license": "MIT",
|
|
"files": [
|
|
"dist/",
|
|
"ios/",
|
|
"MediaLibrary.podspec"
|
|
],
|
|
"capacitor": {
|
|
"ios": {
|
|
"src": "ios"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@capacitor/core": "^7.0.0"
|
|
},
|
|
"peerDependencies": {
|
|
"@capacitor/core": "^7.0.0"
|
|
}
|
|
}
|