From e503b92d79113d8ad72ab4ba9ddc929e3b9f327c Mon Sep 17 00:00:00 2001 From: Zack Pollard Date: Tue, 21 May 2024 12:42:12 +0100 Subject: [PATCH] wip --- web/android/app/capacitor.build.gradle | 3 ++- web/android/app/src/main/AndroidManifest.xml | 5 ++++ web/android/capacitor.settings.gradle | 6 +++++ web/capacitor.config.ts | 9 ++++++- web/ios/App/Podfile | 3 ++- web/package-lock.json | 18 ++++++++++++++ web/package.json | 2 ++ .../(user)/photos/[[assetId=id]]/+page.svelte | 24 +++++++++++++++++++ 8 files changed, 67 insertions(+), 3 deletions(-) diff --git a/web/android/app/capacitor.build.gradle b/web/android/app/capacitor.build.gradle index fdb4970c41..2b44235b1f 100644 --- a/web/android/app/capacitor.build.gradle +++ b/web/android/app/capacitor.build.gradle @@ -9,7 +9,8 @@ android { apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { - + implementation project(':capacitor-community-media') + implementation project(':capacitor-filesystem') } diff --git a/web/android/app/src/main/AndroidManifest.xml b/web/android/app/src/main/AndroidManifest.xml index 4d7ca38041..0ead542d60 100644 --- a/web/android/app/src/main/AndroidManifest.xml +++ b/web/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,11 @@ + + + + + true def capacitor_pods pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' - + pod 'CapacitorCommunityMedia', :path => '../../node_modules/@capacitor-community/media' + pod 'CapacitorFilesystem', :path => '../../node_modules/@capacitor/filesystem' end target 'App' do diff --git a/web/package-lock.json b/web/package-lock.json index a3eef457d8..24e3093b50 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9,8 +9,10 @@ "version": "1.105.1", "license": "GNU Affero General Public License version 3", "dependencies": { + "@capacitor-community/media": "^6.0.0", "@capacitor/android": "^6.0.0", "@capacitor/core": "^6.0.0", + "@capacitor/filesystem": "^6.0.0", "@capacitor/ios": "^6.0.0", "@immich/sdk": "file:../open-api/typescript-sdk", "@mdi/js": "^7.4.47", @@ -455,6 +457,14 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@capacitor-community/media": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@capacitor-community/media/-/media-6.0.0.tgz", + "integrity": "sha512-hROzyGI6pUv9FF86elePw/AqbWybrxgsY+f+83/erMBLhue3HkJaScWCZ7473UpdGKRgxfLEjsUN+Quwvy0NxA==", + "peerDependencies": { + "@capacitor/core": "^6.0.0" + } + }, "node_modules/@capacitor/android": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-6.0.0.tgz", @@ -594,6 +604,14 @@ "tslib": "^2.1.0" } }, + "node_modules/@capacitor/filesystem": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@capacitor/filesystem/-/filesystem-6.0.0.tgz", + "integrity": "sha512-GnC4CBfky7fvG9zSV/aQnZaGs6ZJ90AaQorr53z81ArTCqcrSUeBMuCxWmvti9HrdXLhBavyA1UOjvRGObOFjg==", + "peerDependencies": { + "@capacitor/core": "^6.0.0" + } + }, "node_modules/@capacitor/ios": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-6.0.0.tgz", diff --git a/web/package.json b/web/package.json index 408f16b6dc..600e83e2fa 100644 --- a/web/package.json +++ b/web/package.json @@ -61,8 +61,10 @@ }, "type": "module", "dependencies": { + "@capacitor-community/media": "^6.0.0", "@capacitor/android": "^6.0.0", "@capacitor/core": "^6.0.0", + "@capacitor/filesystem": "^6.0.0", "@capacitor/ios": "^6.0.0", "@immich/sdk": "file:../open-api/typescript-sdk", "@mdi/js": "^7.4.47", diff --git a/web/src/routes/(user)/photos/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/photos/[[assetId=id]]/+page.svelte index f711b081d6..fd57d7d0c6 100644 --- a/web/src/routes/(user)/photos/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/photos/[[assetId=id]]/+page.svelte @@ -24,6 +24,21 @@ import { mdiDotsVertical, mdiPlus } from '@mdi/js'; import { user } from '$lib/stores/user.store'; + import { Media, type MediaAlbum, type MediaAsset, type MediaResponse } from '@capacitor-community/media'; + + let albums: MediaAlbum[] = []; + + const getAlbums = async () => { + const { albums: newAlbums } = await Media.getAlbums(); + albums = newAlbums; + }; + + let cameraRoll: MediaAsset[] = []; + const getCameraRoll = async () => { + const { medias: newCameraRoll } = await Media.getMedias({albumIdentifier: 'camera'}); + cameraRoll = newCameraRoll; + }; + let { isViewing: showAssetViewer } = assetViewingStore; let handleEscapeKey = false; const assetStore = new AssetStore({ isArchived: false, withStacked: true, withPartners: true }); @@ -91,6 +106,15 @@ {/if} + + {#if albums.length > 0} +

Albums: {albums.map(album => album.name).join(", ")}

+ {/if} + + + {#if cameraRoll.length > 0} +

Camera Roll: {cameraRoll.map(asset => asset.identifier)}

+ {/if}