thielepaul / photoprism-mobile Goto Github PK
View Code? Open in Web Editor NEWFlutter App for PhotoPrism
License: GNU General Public License v3.0
Flutter App for PhotoPrism
License: GNU General Public License v3.0
Hii,
It would be really nice if you could add the feature to share Multiple Photos. Currently the Share Button is only available on the Picture View. What about to show it on the Topbar when you have selected some Photos?
The code that was added for HTTP Basic authentication (#36) should be a good start as it already adds headers to every API request.
Would be awesome to have either a filter based on place, or a place in the app to go to that shows the places you have taken photos.
one possibility is to check if a thumbnail is available: https://demo.photoprism.org/api/v1/thumbnails/4c8047b246a89ea5de7d5ee73945020cd1b1278d/tile_50
How to reproduce:
Expected: Dialog to select an album appears
Actual: Background is darkened, but no dialog shows up.
They show up usually towards the bottom of albums. They are pictures that fail to load even after completely restarting the app.
Seems like loading images on app startup makes the app crash sometimes. I am guessing it is because of the images resolution. Any optimization that could help?
To see which photos have been uploaded from which device and which album, it would be useful if the photos would be added to an album containing the device name and the folder name.
The backend should provide a file endpoint that gives the uuid of a photo from the filehash.
At the moment only the first 1000 albums are loaded.
The backend should provide the information how many albums exist.
I would love to use the current version of the app on my smartphone. Unfortunately, installing from apk is not an option for my corporate device. Is there anything I can do to help make this happen? I would suggest to publish it as a developer/beta version, so that problems in the app will not lead to bad ratings.
See the Google docs for details: https://support.google.com/googleplay/android-developer/answer/9845334?hl=de
The idea is to define textColor globally for all FlatButtons in the application. ThemeData is defined in main.dart.
Find and implement an intelligent lazy loading strategy for photo data:
metadata in JSON format for a single photo is about 1.5 KB, for an instance with several thousand picture that means loading several MB, when refreshing the photo list.
A possible strategy is:
Necessary steps:
Tried to set Photoprism URL to 192.x.x.x:2342 (with PhotoPrism auth enabled), but when I switch to Photos nothing appears.
Tried to access Photoprism from the browser (on the same mobile device) and I can access it without any problem.
To integrate what said above, I've also tried to access Photoprism externally to my network and again, I'm able to reach it from the mobile browser but not the app.
Right now when sending an image in an app, and try to browse for it via another app, PhotoPrism does not show up, you only end up seeing other apps like Drive, Photos, OneDrive, etc.
It would be extremely handy if PhotoPrism was listed here, as many will likely be using this as a Google Photos replacement (as I am) and having it there will let users quickly send/share photos without needing to directly launch the PhotoPrism android app FIRST and select the photo.
I wanted to know if, once the test phase is over, it is planned to create a version of the app for IOS that has the style of IOS, at this moment it looks like an Android app (animations, buttons, etc.)
It's not meant to be a criticism, but as good as it is, it seems a little out of place
I had about 4000 photos spread over 4 albums to upload. When closing the app auto upload stopped. When resuming I get the message that the album already exists in the log and nothing happens in the GUI. I have tried deleting all the content in the upload folder in photoprism with no change. If I select a new album to upload (for example downloads) it then works until I quit the app and then the same problem occurs.
Thank you for any help!
Currently on iOS, when choosing the "Upload Photo" option from the "three dots" menu, the user is presented with a "files" picker:
This is not particularly useful because it does not allow access to the user's photos and videos. From 15 minutes of looking at the code, I think this is because the app is using this Flutter package which only supports the file picker and not the photos picker on iOS: https://github.com/miguelpruivo/flutter_file_picker
For iOS it should instead be using the system photos picker.
Hey, jwilder/nginx-proxy to get plain HTTP auth. And I need the app to support that.
This is also listed as a limitation in the README
Tested on a Pixel 4XL
11-26 17:17:18.013 23792 23818 I flutter : ########## Upload new photo ##########
11-26 17:17:18.185 598 610 D libnos_transport: Calling app 0 with params 0x0200
11-26 17:17:18.188 598 610 D libnos_transport: App 0 inspection status=0x00000000 reply_len=0 protocol=1 flags=0x0000
11-26 17:17:18.188 598 610 D libnos_transport: Send app 0 command data (0 bytes)
11-26 17:17:18.188 598 610 D libnos_transport: Send app 0 go command 0x00000200
11-26 17:17:18.189 598 610 D libnos_transport: Polling app 0
11-26 17:17:18.193 598 610 D libnos_transport: App 0 polled=2 status=0x80000000 reply_len=80 flags=0x0000
11-26 17:17:18.193 598 610 D libnos_transport: Read app 0 reply data (80 bytes)
11-26 17:17:18.195 598 610 D libnos_transport: App 0 returning 0x0
11-26 17:17:18.214 23792 23792 I rism.photopris: Waiting for a blocking GC Alloc
11-26 17:17:18.231 23792 23792 I rism.photopris: WaitForGcToComplete blocked Alloc on ProfileSaver for 17.180ms
11-26 17:17:18.231 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.231 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.240 23792 23792 I rism.photopris: Clamp target GC heap from 269MB to 256MB
11-26 17:17:18.240 23792 23792 I rism.photopris: Alloc concurrent copying GC freed 434(26KB) AllocSpace objects, 0(0B) LOS objects, 32% free, 173MB/256MB, paused 23us total 8.292ms
11-26 17:17:18.240 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.244 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.252 23792 23792 I rism.photopris: Clamp target GC heap from 269MB to 256MB
11-26 17:17:18.252 23792 23792 I rism.photopris: Alloc concurrent copying GC freed 3(16KB) AllocSpace objects, 0(0B) LOS objects, 32% free, 173MB/256MB, paused 21us total 8.011ms
11-26 17:17:18.252 23792 23792 I rism.photopris: Forcing collection of SoftReferences for 85MB allocation
11-26 17:17:18.252 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.258 23792 23792 I rism.photopris: Clamp target GC heap from 269MB to 256MB
11-26 17:17:18.258 23792 23792 I rism.photopris: Alloc concurrent copying GC freed 1021(51KB) AllocSpace objects, 0(0B) LOS objects, 32% free, 173MB/256MB, paused 19us total 5.786ms
11-26 17:17:18.258 23792 23792 W rism.photopris: Throwing OutOfMemoryError "Failed to allocate a 90001961 byte allocation with 86202016 free bytes and 82MB until OOM, target footprint 268435456, growth limit 268435456" (VmSize 14618952 kB)
11-26 17:17:18.258 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.258 23792 23792 I chatty : uid=10348(org.photoprism.photoprism) identical 1 line
11-26 17:17:18.262 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.270 23792 23792 I rism.photopris: Clamp target GC heap from 269MB to 256MB
11-26 17:17:18.270 23792 23792 I rism.photopris: Alloc concurrent copying GC freed 3(16KB) AllocSpace objects, 0(0B) LOS objects, 32% free, 173MB/256MB, paused 20us total 7.934ms
11-26 17:17:18.270 23792 23792 I rism.photopris: Forcing collection of SoftReferences for 85MB allocation
11-26 17:17:18.270 23792 23792 I rism.photopris: Starting a blocking GC Alloc
11-26 17:17:18.276 23792 23792 I rism.photopris: Clamp target GC heap from 269MB to 256MB
11-26 17:17:18.276 23792 23792 I rism.photopris: Alloc concurrent copying GC freed 4(96B) AllocSpace objects, 0(0B) LOS objects, 32% free, 173MB/256MB, paused 17us total 5.675ms
11-26 17:17:18.276 23792 23792 W rism.photopris: Throwing OutOfMemoryError "Failed to allocate a 90001961 byte allocation with 86185656 free bytes and 82MB until OOM, target footprint 268435456, growth limit 268435456" (VmSize 14618952 kB)
11-26 17:17:18.276 23792 23792 D AndroidRuntime: Shutting down VM
11-26 17:17:18.278 23792 23792 E AndroidRuntime: FATAL EXCEPTION: main
11-26 17:17:18.278 23792 23792 E AndroidRuntime: Process: org.photoprism.photoprism, PID: 23792
11-26 17:17:18.278 23792 23792 E AndroidRuntime: java.lang.OutOfMemoryError: Failed to allocate a 90001961 byte allocation with 86185656 free bytes and 82MB until OOM, target footprint 268435456, growth limit 268435456
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at java.nio.DirectByteBuffer$MemoryRef.<init>(DirectByteBuffer.java:70)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:258)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at io.flutter.plugin.common.StandardMethodCodec.encodeSuccessEnvelope(StandardMethodCodec.java:57)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.success(MethodChannel.java:231)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at top.kikt.imagescanner.util.ResultHandler$reply$1.run(ResultHandler.kt:24)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:938)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at android.os.Looper.loop(Looper.java:223)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7656)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
11-26 17:17:18.278 23792 23792 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
11-26 17:17:18.280 1550 23865 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
11-26 17:17:18.281 1550 5137 W ActivityTaskManager: Force finishing activity org.photoprism.photoprism/.MainActivity
First of all, great job on the app. Even as an early version it is surprisingly well done.
When trying to share a photo on Android 10, the share window briefly shows after which the app crashes.
This is due to the permission denial as further explained in this issue.
A quick fix would be to change the pubspec.yaml to:
esys_flutter_share:
git:
url: git://github.com/jawad12345A/esys-flutter-share.git
However this wouldn't be a future-proof solution.
A PR has been created but hasn't been merged yet esysberlin/esys-flutter-share#63
Hello,
I'm currently testing the Android app and the Backend from time to time with the most recent docker images.
Yesterday I've updated my docker image again and it looks like the Android App is not working with the current Backend.
Just want to let you know that.
From my side it's no problem because everything is under heavy development.
Best regards
eloo
Whenever an API request is made to the backend it seems like it is not using SNI (could be related to a Dart setting)
This causes the issue that whenever you host multiple services (domains) on the same webserver and port, that the webserver does not know what certificate it should serve. Since the traffic is encrypted with TLS, the server can not see what the calling domain name is.
This leads to the issue that you will not be able to access the API since the clients will get served a wrong certificate and therefore terminate the TLS connection.
10-07 14:51:40.127 9185 9214 E flutter : [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error:
10-07 14:51:40.127 9185 9214 E flutter : CERTIFICATE_VERIFY_FAILED: Hostname mismatch(handshake.cc:354))
This breaks the entire API communication.
Update:
Seems to be an issue with TLSv1.3
The default logging output isn't that great. But I'll setup a build environment for the Flutter app in the next days and try to get some more information out of it.
Color scheme should be cached in a shared preference so that colors are correct even without internet connection.
Hi ,
I followed the guide on setting Photoprism as a docker.
My credentials are the same as in the guide : admin & ***
I added IP address in the app and used Basic HTTP
every time i try to upload or create album it says "failed", no pictures are shown
Do i need to do anything else?
Hi,
Running Photoprism 201203-8ea5a882-Linux-x86_64, behind nginx, I enabled SSL in nginx and use a letsencrypt certificate. No issue to access the website and log in using Firefox on Linux.
I use the photoprism authentification (set the env var in the docker-compose, no http basic auth setup in nginx).
I just downloaded the android apk so I am guessing it's e41abfe
In the settings, I changed the URL to point to my instance (https:// handle).
Authentication, enabled "photoprism", kept admin user, use the password that I setup and works on desktop.
Hit "save"
Nothing happens, all screens are empty. The logs only show events related to the auto upload (not enabled).
Let me know if I can provide any info to help.
Hi,
What about translating the app into more languages.
See: https://flutter.dev/docs/development/accessibility-and-localization/internationalization
I could support by translating into German - if needed -
Edit: For now just add the language which are supported by photoprism too?
The FOSS app repository is a good place to host the app, and will also draw the right kind of crowed to use it.
https://f-droid.org/
You can add a request at:
https://gitlab.com/fdroid/rfp/issues
Hello,
i found a bug!
When Selecting Photos in "Photos" then changing tabs to "Albums" or "Settings" and then going back to the tab "Photos" the Topbar is still in Selection Mode but no Photos are selected anymore
Using UpToDate-Verion of Andorid 10 on a Samsung Phone
Either having the Photos still selected when changing tabs
or
all selected pictures gets unselected and the Topbar changes back to normal view.
When album is empty, svg is loaded.
Hello,
I know it isn't a full feature jet, but the last builds of photoprism already support videos. How about implementing that into the mobile-app?
I now this feature is still in development but the whole project is. And I would really love to see that feature in the app.
Thanks
Open issues:
add refresh similar to existing refresh for all photos and albums for the view where only the photos of an album are displayed
Coverage is measured in CI but not published yet.
Maybe, we can use codecov.io?
I wanted to install this on my phone, but did not find any instructions on how to do so. So far, this is where I got.
Requirements cocoapod flutter
brew install cocoapod
For Flutter,
Checkout stable version of github.com/flutter/flutter. Execute flutter to do a dart based installation of the binary and dependencies
flutter
navigate to photoprism-mobile, run
flutter pub get
Now you should be able to build. At this point, you will need to do some iOS signing.
flutter run
I was not able to get this to install under org.photoprism.photoprism. I changed the bundle identifier and it built with a personal (non-paying) iOS account.
If this all works, you can now install the pod
cd ios; pod install
At this point, xCode could build the project but threw some errors. I'm guessing those are environment specific problems for me.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.