Compare commits
71 Commits
v1.40.0_63
...
v1.42.0_65
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0c258f0506 | ||
|
|
912d5a3069 | ||
|
|
1b6dd9241f | ||
|
|
ecb4ee2e3e | ||
|
|
7a1ae8691e | ||
|
|
92972ac776 | ||
|
|
0c469cc712 | ||
|
|
3e4a14b299 | ||
|
|
dff10e89fe | ||
|
|
693adf8488 | ||
|
|
adacfb1110 | ||
|
|
177cc3d7f9 | ||
|
|
0c582df962 | ||
|
|
1e1fd97b38 | ||
|
|
1e2f02613f | ||
|
|
5a6a726014 | ||
|
|
eace0af7a5 | ||
|
|
036d0556a4 | ||
|
|
e9fda40b2b | ||
|
|
b9b2b559a1 | ||
|
|
5fb3ea465f | ||
|
|
ba04b753de | ||
|
|
92ca447f33 | ||
|
|
755a1331da | ||
|
|
6db541c89b | ||
|
|
67c52c3764 | ||
|
|
131caa20eb | ||
|
|
89a6ed2a5b | ||
|
|
b597cd891b | ||
|
|
fa31a6e441 | ||
|
|
a3688fe642 | ||
|
|
96e786d480 | ||
|
|
3c09482a93 | ||
|
|
a648da021f | ||
|
|
d1d69bfaf4 | ||
|
|
221e03488e | ||
|
|
2ffb7cab2e | ||
|
|
acffabf9de | ||
|
|
0a464f9d28 | ||
|
|
7add754fc3 | ||
|
|
10ff950bb8 | ||
|
|
6b9a4a8d6f | ||
|
|
079ee658a5 | ||
|
|
bd838a71d1 | ||
|
|
5999af6c78 | ||
|
|
af2eac52a8 | ||
|
|
e4e040f14b | ||
|
|
10789503c1 | ||
|
|
fd15cdbf40 | ||
|
|
9852376b38 | ||
|
|
d327ec6ba4 | ||
|
|
9e6d6b2532 | ||
|
|
9edbff0ec0 | ||
|
|
b82a3f3300 | ||
|
|
d9fa6619e7 | ||
|
|
f7d3c4b4ff | ||
|
|
4ff92d739d | ||
|
|
befd0f6ecd | ||
|
|
b584185f0f | ||
|
|
10b0924cfb | ||
|
|
6736063f83 | ||
|
|
93274a6d7b | ||
|
|
16b763e086 | ||
|
|
6974d4068b | ||
|
|
0b65bb7e9a | ||
|
|
1eb9ac8217 | ||
|
|
7810dd1942 | ||
|
|
eeb0456356 | ||
|
|
c032cfd99e | ||
|
|
4545249fa3 | ||
|
|
380f719fd8 |
@@ -33,7 +33,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and push Immich Mono Repo
|
- name: Build and push Immich Mono Repo
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./server
|
context: ./server
|
||||||
file: ./server/Dockerfile
|
file: ./server/Dockerfile
|
||||||
@@ -70,7 +70,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Machine Learning
|
- name: Build and Push Machine Learning
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./machine-learning
|
context: ./machine-learning
|
||||||
file: ./machine-learning/Dockerfile
|
file: ./machine-learning/Dockerfile
|
||||||
@@ -106,7 +106,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Web
|
- name: Build and Push Web
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./web
|
context: ./web
|
||||||
file: ./web/Dockerfile
|
file: ./web/Dockerfile
|
||||||
@@ -141,7 +141,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Proxy
|
- name: Build and Push Proxy
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./nginx
|
context: ./nginx
|
||||||
file: ./nginx/Dockerfile
|
file: ./nginx/Dockerfile
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and push Immich Mono Repo
|
- name: Build and push Immich Mono Repo
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./server
|
context: ./server
|
||||||
file: ./server/Dockerfile
|
file: ./server/Dockerfile
|
||||||
@@ -76,7 +76,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Machine Learning
|
- name: Build and Push Machine Learning
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./machine-learning
|
context: ./machine-learning
|
||||||
file: ./machine-learning/Dockerfile
|
file: ./machine-learning/Dockerfile
|
||||||
@@ -116,7 +116,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Web
|
- name: Build and Push Web
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./web
|
context: ./web
|
||||||
file: ./web/Dockerfile
|
file: ./web/Dockerfile
|
||||||
@@ -155,7 +155,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Proxy
|
- name: Build and Push Proxy
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./nginx
|
context: ./nginx
|
||||||
file: ./nginx/Dockerfile
|
file: ./nginx/Dockerfile
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push immich-server release
|
- name: Build and push immich-server release
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./server
|
context: ./server
|
||||||
file: ./server/Dockerfile
|
file: ./server/Dockerfile
|
||||||
@@ -85,7 +85,7 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Build and Push Machine Learning
|
- name: Build and Push Machine Learning
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./machine-learning
|
context: ./machine-learning
|
||||||
file: ./machine-learning/Dockerfile
|
file: ./machine-learning/Dockerfile
|
||||||
@@ -135,7 +135,7 @@ jobs:
|
|||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push immich-web release
|
- name: Build and push immich-web release
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./web
|
context: ./web
|
||||||
file: ./web/Dockerfile
|
file: ./web/Dockerfile
|
||||||
@@ -184,7 +184,7 @@ jobs:
|
|||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push immich-proxy release
|
- name: Build and push immich-proxy release
|
||||||
uses: docker/build-push-action@v3.2.0
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: ./nginx
|
context: ./nginx
|
||||||
file: ./nginx/Dockerfile
|
file: ./nginx/Dockerfile
|
||||||
|
|||||||
33
.github/workflows/cache-cleanup.yml
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
name: Clean up actions cache on PR close
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- closed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
cleanup:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Cleanup
|
||||||
|
run: |
|
||||||
|
gh extension install actions/gh-actions-cache
|
||||||
|
|
||||||
|
REPO=${{ github.repository }}
|
||||||
|
BRANCH=${{ github.ref }}
|
||||||
|
|
||||||
|
echo "Fetching list of cache keys"
|
||||||
|
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 )
|
||||||
|
|
||||||
|
## Setting this to not fail the workflow while deleting cache keys.
|
||||||
|
set +e
|
||||||
|
echo "Deleting caches..."
|
||||||
|
for cacheKey in $cacheKeysForPR
|
||||||
|
do
|
||||||
|
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
|
||||||
|
done
|
||||||
|
echo "Done"
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
1
.gitignore
vendored
@@ -4,3 +4,4 @@
|
|||||||
.idea
|
.idea
|
||||||
|
|
||||||
docker/upload
|
docker/upload
|
||||||
|
coverage
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
## Content
|
## Content
|
||||||
|
|
||||||
- [Official Documentation](https://immich.app/docs)
|
- [Official Documentation](https://immich.app/docs)
|
||||||
|
- [Roadmap](https://github.com/orgs/immich-app/projects/1)
|
||||||
- [Demo](#demo)
|
- [Demo](#demo)
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
- [Introduction](https://immich.app/docs/overview/introduction)
|
- [Introduction](https://immich.app/docs/overview/introduction)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ version: '3.8'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
immich-server:
|
immich-server:
|
||||||
|
container_name: immich_server
|
||||||
image: immich-server-dev:latest
|
image: immich-server-dev:latest
|
||||||
build:
|
build:
|
||||||
context: ../server
|
context: ../server
|
||||||
@@ -23,6 +24,7 @@ services:
|
|||||||
- database
|
- database
|
||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
|
container_name: immich_machine_learning
|
||||||
image: immich-machine-learning-dev:latest
|
image: immich-machine-learning-dev:latest
|
||||||
build:
|
build:
|
||||||
context: ../machine-learning
|
context: ../machine-learning
|
||||||
@@ -41,6 +43,7 @@ services:
|
|||||||
- database
|
- database
|
||||||
|
|
||||||
immich-microservices:
|
immich-microservices:
|
||||||
|
container_name: immich_microservices
|
||||||
image: immich-microservices:latest
|
image: immich-microservices:latest
|
||||||
build:
|
build:
|
||||||
context: ../server
|
context: ../server
|
||||||
@@ -60,6 +63,7 @@ services:
|
|||||||
- immich-server
|
- immich-server
|
||||||
|
|
||||||
immich-web:
|
immich-web:
|
||||||
|
container_name: immich_web
|
||||||
image: immich-web-dev:1.9.0
|
image: immich-web-dev:1.9.0
|
||||||
build:
|
build:
|
||||||
context: ../web
|
context: ../web
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ version: "3.8"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
immich-server:
|
immich-server:
|
||||||
|
container_name: immich_server
|
||||||
image: altran1502/immich-server:staging
|
image: altran1502/immich-server:staging
|
||||||
entrypoint: ["/bin/sh", "./start-server.sh"]
|
entrypoint: ["/bin/sh", "./start-server.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -16,6 +17,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
immich-microservices:
|
immich-microservices:
|
||||||
|
container_name: immich_microservices
|
||||||
image: altran1502/immich-server:staging
|
image: altran1502/immich-server:staging
|
||||||
entrypoint: ["/bin/sh", "./start-microservices.sh"]
|
entrypoint: ["/bin/sh", "./start-microservices.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -30,6 +32,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
|
container_name: immich_machine_learning
|
||||||
image: altran1502/immich-machine-learning:staging
|
image: altran1502/immich-machine-learning:staging
|
||||||
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -43,6 +46,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
immich-web:
|
immich-web:
|
||||||
|
container_name: immich_web
|
||||||
image: altran1502/immich-web:staging
|
image: altran1502/immich-web:staging
|
||||||
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
||||||
env_file:
|
env_file:
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ version: "3.8"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
immich-server:
|
immich-server:
|
||||||
|
container_name: immich_server
|
||||||
image: altran1502/immich-server:release
|
image: altran1502/immich-server:release
|
||||||
entrypoint: ["/bin/sh", "./start-server.sh"]
|
entrypoint: ["/bin/sh", "./start-server.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -16,6 +17,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
immich-microservices:
|
immich-microservices:
|
||||||
|
container_name: immich_microservices
|
||||||
image: altran1502/immich-server:release
|
image: altran1502/immich-server:release
|
||||||
entrypoint: ["/bin/sh", "./start-microservices.sh"]
|
entrypoint: ["/bin/sh", "./start-microservices.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -30,6 +32,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
|
container_name: immich_machine_learning
|
||||||
image: altran1502/immich-machine-learning:release
|
image: altran1502/immich-machine-learning:release
|
||||||
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
||||||
volumes:
|
volumes:
|
||||||
@@ -43,6 +46,7 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
immich-web:
|
immich-web:
|
||||||
|
container_name: immich_web
|
||||||
image: altran1502/immich-web:release
|
image: altran1502/immich-web:release
|
||||||
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
entrypoint: ["/bin/sh", "./entrypoint.sh"]
|
||||||
env_file:
|
env_file:
|
||||||
|
|||||||
43
docs/docs/developer/contributing.md
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 3
|
||||||
|
---
|
||||||
|
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
Contributions are welcome!
|
||||||
|
|
||||||
|
## PR Checklist
|
||||||
|
|
||||||
|
When contributing code through a pull request, please check the following:
|
||||||
|
|
||||||
|
### Web Checks
|
||||||
|
|
||||||
|
- [ ] `npm run lint` (linting via ESLint)
|
||||||
|
- [ ] `npm run format` (formatting via Prettier)
|
||||||
|
- [ ] `npm run check` (Type checking via SvelteKit)
|
||||||
|
- [ ] `npm test` (Tests via Jest)
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Run all web checks with `npm run check:all`
|
||||||
|
:::
|
||||||
|
|
||||||
|
### Server Checks
|
||||||
|
|
||||||
|
- [ ] `npm run lint` (linting via ESLint)
|
||||||
|
- [ ] `npm run format` (formatting via Prettier)
|
||||||
|
- [ ] `npm run check` (Type checking via `tsc`)
|
||||||
|
- [ ] `npm test` (Tests via Jest)
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Run all server checks with `npm run check:all`
|
||||||
|
:::
|
||||||
|
|
||||||
|
### Open API
|
||||||
|
|
||||||
|
The Open API client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file.
|
||||||
|
|
||||||
|
- [ ] `npm run api:generate`
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
This can also be run via `make api` from the project root directory (not in the `server` folder)
|
||||||
|
:::
|
||||||
@@ -20,7 +20,7 @@ npm i -g immich
|
|||||||
Specify user's credentials, Immich's server address and port, and the directory you would like to upload videos/photos from.
|
Specify user's credentials, Immich's server address and port, and the directory you would like to upload videos/photos from.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
immich upload --email testuser@email.com --password password --server http://192.168.1.216:2283/api -d your/target/directory
|
immich upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api -d your/target/directory
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -31,26 +31,32 @@ immich upload --email testuser@email.com --password password --server http://192
|
|||||||
| ---------------- | ------------------------------------------------------------------- |
|
| ---------------- | ------------------------------------------------------------------- |
|
||||||
| --yes / -y | Assume yes on all interactive prompts |
|
| --yes / -y | Assume yes on all interactive prompts |
|
||||||
| --delete / -da | Delete local assets after upload |
|
| --delete / -da | Delete local assets after upload |
|
||||||
| --email / -e | User's email |
|
| --key / -k | User's API key |
|
||||||
| --password / -pw | User's password |
|
|
||||||
| --server / -s | Immich's server address |
|
| --server / -s | Immich's server address |
|
||||||
| --directory / -d | Directory to upload from |
|
| --directory / -d | Directory to upload from |
|
||||||
| --threads / -t | Number of threads to use (Default 5) |
|
| --threads / -t | Number of threads to use (Default 5) |
|
||||||
| --album/ -al | Create albums for assets based on the parent folder or a given name |
|
| --album/ -al | Create albums for assets based on the parent folder or a given name |
|
||||||
|
|
||||||
|
### Obtain the API Key
|
||||||
|
|
||||||
|
The API key can be obtained in the user setting panel on the web interface.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
### Run via Docker
|
### Run via Docker
|
||||||
|
|
||||||
Be aware that as this runs inside a container it mounts your current directory as a volume, and for the -d flag you need to use the path inside the container.
|
Be aware that as this runs inside a container it mounts your current directory as a volume, and for the -d flag you need to use the path inside the container.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -it --rm -v $(pwd):/import ghcr.io/immich-app/immich-cli:latest upload --email testuser@email.com --password password --server http://192.168.1.216:2283/api -d /import
|
docker run -it --rm -v $(pwd):/import ghcr.io/immich-app/immich-cli:latest upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api -d /import
|
||||||
```
|
```
|
||||||
|
|
||||||
Optionally, you can create an alias:
|
Optionally, you can create an alias:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
alias immich="docker run -it --rm -v $(pwd):/import ghcr.io/immich-app/immich-cli:latest"
|
alias immich="docker run -it --rm -v $(pwd):/import ghcr.io/immich-app/immich-cli:latest"
|
||||||
immich upload --email testuser@email.com --password password --server http://192.168.1.216:2283/api -d /import
|
immich upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api -d /import
|
||||||
```
|
```
|
||||||
|
|
||||||
### Run from source
|
### Run from source
|
||||||
@@ -68,5 +74,5 @@ npm run build
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash title="Run the command"
|
```bash title="Run the command"
|
||||||
node bin/index.js upload --email testuser@email.com --password password --server http://192.168.1.216:2283/api -d your/target/directory
|
node bin/index.js upload --key HFEJ38DNSDUEG --server http://192.168.1.216:2283/api -d your/target/directory
|
||||||
```
|
```
|
||||||
|
|||||||
BIN
docs/docs/features/img/disable-password-login.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
docs/docs/features/img/enable-password-login.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
docs/docs/features/img/list-users.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/docs/features/img/obtain-api-key.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
docs/docs/features/img/password-login-settings.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/docs/features/img/reset-admin-password.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/docs/features/img/user-management-update.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
This page contains details about using OAuth in Immich.
|
This page contains details about using OAuth in Immich.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Unable to set `app.immich:/` as a valid redirect URI? See [Mobile Redirect URI](#mobile-redirect-uri) for an alternative solution.
|
||||||
|
:::
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
Immich supports 3rd party authentication via [OpenID Connect][oidc] (OIDC), an identity layer built on top of OAuth2. OIDC is supported by most identity providers, including:
|
Immich supports 3rd party authentication via [OpenID Connect][oidc] (OIDC), an identity layer built on top of OAuth2. OIDC is supported by most identity providers, including:
|
||||||
@@ -24,50 +28,48 @@ Before enabling OAuth in Immich, a new client application needs to be configured
|
|||||||
|
|
||||||
2. Configure Redirect URIs/Origins
|
2. Configure Redirect URIs/Origins
|
||||||
|
|
||||||
The **Sign-in redirect URIs** should include:
|
The **Sign-in redirect URIs** should include:
|
||||||
|
|
||||||
- `app.immich:/` - for logging in with OAuth from the [Mobile App](/docs/features/mobile-app.mdx)
|
- `app.immich:/` - for logging in with OAuth from the [Mobile App](/docs/features/mobile-app.mdx)
|
||||||
- `http://DOMAIN:PORT/auth/login` - for logging in with OAuth from the Web Client
|
- `http://DOMAIN:PORT/auth/login` - for logging in with OAuth from the Web Client
|
||||||
- `http://DOMAIN:PORT/user-settings` - for manually linking OAuth in the Web Client
|
- `http://DOMAIN:PORT/user-settings` - for manually linking OAuth in the Web Client
|
||||||
|
|
||||||
:::info Redirect URIs
|
Redirect URIs should contain all the domains you will be using to access Immich. Some examples include:
|
||||||
|
|
||||||
Redirect URIs should contain all the domains you will be using to access Immich. Some examples include:
|
Mobile
|
||||||
|
|
||||||
Mobile
|
- `app.immich:/` (You **MUST** include this for iOS and Android mobile apps to work properly)
|
||||||
|
|
||||||
- `app.immich:/` (You **MUST** include this for iOS and Android mobile apps to work properly)
|
Localhost
|
||||||
|
|
||||||
Localhost
|
- `http://localhost:2283/auth/login`
|
||||||
|
- `http://localhost:2283/user-settings`
|
||||||
|
|
||||||
- `http://localhost:2283/auth/login`
|
Local IP
|
||||||
- `http://localhost:2283/user-settings`
|
|
||||||
|
|
||||||
Local IP
|
- `http://192.168.0.200:2283/auth/login`
|
||||||
|
- `http://192.168.0.200:2283/user-settings`
|
||||||
|
|
||||||
- `http://192.168.0.200:2283/auth/login`
|
Hostname
|
||||||
- `http://192.168.0.200:2283/user-settings`
|
|
||||||
|
|
||||||
Hostname
|
- `https://immich.example.com/auth/login`)
|
||||||
|
- `https://immich.example.com/user-settings`)
|
||||||
- `https://immich.example.com/auth/login`)
|
|
||||||
- `https://immich.example.com/user-settings`)
|
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Enable OAuth
|
## Enable OAuth
|
||||||
|
|
||||||
Once you have a new OAuth client application configured, Immich can be configured using the Administration Settings page, available on the web (Administration -> Settings).
|
Once you have a new OAuth client application configured, Immich can be configured using the Administration Settings page, available on the web (Administration -> Settings).
|
||||||
|
|
||||||
| Setting | Type | Default | Description |
|
| Setting | Type | Default | Description |
|
||||||
| ------------- | ------- | -------------------- | ------------------------------------------------------------------------- |
|
| ---------------------------------------------------- | ------- | -------------------- | ----------------------------------------------------------------------------------- |
|
||||||
| Enabled | boolean | false | Enable/disable OAuth |
|
| Enabled | boolean | false | Enable/disable OAuth |
|
||||||
| Issuer URL | URL | (required) | Required. Self-discovery URL for client (from previous step) |
|
| Issuer URL | URL | (required) | Required. Self-discovery URL for client (from previous step) |
|
||||||
| Client ID | string | (required) | Required. Client ID (from previous step) |
|
| Client ID | string | (required) | Required. Client ID (from previous step) |
|
||||||
| Client secret | string | (required) | Required. Client Secret (previous step) |
|
| Client Secret | string | (required) | Required. Client Secret (previous step) |
|
||||||
| Scope | string | openid email profile | Full list of scopes to send with the request (space delimited) |
|
| Scope | string | openid email profile | Full list of scopes to send with the request (space delimited) |
|
||||||
| Button text | string | Login with OAuth | Text for the OAuth button on the web |
|
| Button Text | string | Login with OAuth | Text for the OAuth button on the web |
|
||||||
| Auto register | boolean | true | When true, will automatically register a user the first time they sign in |
|
| Auto Register | boolean | true | When true, will automatically register a user the first time they sign in |
|
||||||
|
| [Auto Launch](#auto-launch) | boolean | false | When true, will skip the login page and automatically start the OAuth login process |
|
||||||
|
| [Mobile Redirect URI Override](#mobile-redirect-uri) | URL | (empty) | Http(s) alternative mobile redirect URI |
|
||||||
|
|
||||||
:::info
|
:::info
|
||||||
The Issuer URL should look something like the following, and return a valid json document.
|
The Issuer URL should look something like the following, and return a valid json document.
|
||||||
@@ -78,6 +80,26 @@ The Issuer URL should look something like the following, and return a valid json
|
|||||||
The `.well-known/openid-configuration` part of the url is optional and will be automatically added during discovery.
|
The `.well-known/openid-configuration` part of the url is optional and will be automatically added during discovery.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
## Auto Launch
|
||||||
|
|
||||||
|
When Auto Launch is enabled, the login page will automatically redirect the user to the OAuth authorization url, to login with OAuth. To access the login screen again, use the browser's back button, or navigate directly to `/auth/login?autoLaunch=0`.
|
||||||
|
|
||||||
|
## Mobile Redirect URI
|
||||||
|
|
||||||
|
The redirect URI for the mobile app is `app.immich:/`, which is a [Custom Scheme](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app). If this custom scheme is an invalid redirect URI for your OAuth Provider, you can work around this by doing the following:
|
||||||
|
|
||||||
|
1. Configure an http(s) endpoint to forwards requests to `app.immich:/`
|
||||||
|
2. Whitelist the new endpoint as a valid redirect URI with your provider.
|
||||||
|
3. Specify the new endpoint as the `Mobile Redirect URI Override`, in the OAuth settings.
|
||||||
|
|
||||||
|
With these steps in place, you should be able to use OAuth from the [Mobile App](/docs/features/mobile-app.mdx) without a custom scheme redirect URI.
|
||||||
|
|
||||||
|
:::info
|
||||||
|
Immich has a route (`/api/oauth/mobile-redirect`) that is already configured to forward requests to `app.immich:/`, and can be used for step 1.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Example Configuration
|
||||||
|
|
||||||
Here's an example of OAuth configured for Authentik:
|
Here's an example of OAuth configured for Authentik:
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
32
docs/docs/features/password-login.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Password Login
|
||||||
|
|
||||||
|
An overview of password login and related settings for Immich.
|
||||||
|
|
||||||
|
## Enable/Disable
|
||||||
|
|
||||||
|
Immich supports password login, which is enabled by default. The preferred way to disable it is via the [Administration Page](#administration-page), although it can also be changed via a [Server Command](#server-command) as well.
|
||||||
|
|
||||||
|
### Administration Page
|
||||||
|
|
||||||
|
To toggle the password login setting via the web, navigate to the "Administration", expand "Password Authentication", toggle the "Enabled" switch, and press "Save".
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Server Command
|
||||||
|
|
||||||
|
There are two [Server Commands](/docs/features/server-commands.md) for password login:
|
||||||
|
|
||||||
|
1. `enable-password-login`
|
||||||
|
2. `disable-password-login`
|
||||||
|
|
||||||
|
See [Server Commands](/docs/features/server-commands.md) for more details about how to run them.
|
||||||
|
|
||||||
|
## Password Reset
|
||||||
|
|
||||||
|
### Admin
|
||||||
|
|
||||||
|
To reset the administrator password, use the `reset-admin-password` [Server Command](/docs/features/server-commands.md).
|
||||||
|
|
||||||
|
### User
|
||||||
|
|
||||||
|
Immich does not currently support self-service password reset. However, the administration can reset passwords for other users. See [User Management: Password Reset](/docs/features/user-management.mdx#password-reset) for more information about how to do this.
|
||||||
@@ -1,21 +1,33 @@
|
|||||||
# Server Commands
|
# Server Commands
|
||||||
|
|
||||||
The `immich-server` docker image comes preinstalled with an administrative CLI that supports the following commands:
|
The `immich-server` docker image comes preinstalled with an administrative CLI (`immich`) that supports the following commands:
|
||||||
|
|
||||||
| Command | Description |
|
| Command | Description |
|
||||||
| ----------------------------- | ------------------------------------- |
|
| ------------------------ | ------------------------------------- |
|
||||||
| `immich help` | Display help |
|
| `help` | Display help |
|
||||||
| `immich reset-admin-password` | Reset the password for the admin user |
|
| `reset-admin-password` | Reset the password for the admin user |
|
||||||
|
| `disable-password-login` | Disable password login |
|
||||||
|
| `enable-password-login` | Enable password login |
|
||||||
|
| `list-users` | List Immich users |
|
||||||
|
|
||||||
## How to run a command
|
## How to run a command
|
||||||
|
|
||||||
To run a command, connect to the container and then execute it. For example:
|
To run a command, [connect](/docs/guides/docker-help.md#attach-to-a-container) to the `immich_server` container and then execute the command via `immich <command>`.
|
||||||
|
|
||||||
```bash
|
## Examples
|
||||||
docker exec -it immich-server_1 sh
|
|
||||||
|
|
||||||
/usr/src/app$ immich reset-admin-password
|
Reset Admin Password
|
||||||
? Please choose a new password (optional) immich-is-awesome-unlike-this-password
|
|
||||||
New password:
|

|
||||||
immich-is-awesome-unlike-this-password
|
|
||||||
```
|
Disable Password Login
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Enabled Password Login
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
List Users
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
@@ -16,3 +16,9 @@ Immich supports multiple users, each with their own library.
|
|||||||
## Delete a User
|
## Delete a User
|
||||||
|
|
||||||
If you need to remove a user from Immich, head to "Administration", where users can be scheduled for deletion. The user account will immediately become disabled and their library and all associated data will be removed after 7 days.
|
If you need to remove a user from Immich, head to "Administration", where users can be scheduled for deletion. The user account will immediately become disabled and their library and all associated data will be removed after 7 days.
|
||||||
|
|
||||||
|
## Password Reset
|
||||||
|
|
||||||
|
To reset a user's password, click the pencil icon to edit a user, then click "Reset Password". The user's password will be reset to "password" and they have to change it next time the sign in.
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
@@ -4,11 +4,27 @@ sidebar_position: 1
|
|||||||
|
|
||||||
# Docker Help
|
# Docker Help
|
||||||
|
|
||||||
## Logs
|
## Containers
|
||||||
|
|
||||||
```bash title="Log Examples"
|
```bash
|
||||||
docker ps # see a list of running containers
|
docker ps # see a list of running containers
|
||||||
docker ps -a # see a list of running and stopped containers
|
docker ps -a # see a list of running and stopped containers
|
||||||
|
```
|
||||||
|
|
||||||
|
## Attach to a Container
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker exec -it <id or name> <command> # attach to a container with a command
|
||||||
|
docker exec -it immich_server sh
|
||||||
|
docker exec -it immich_microservices sh
|
||||||
|
docker exec -it immich_machine_learning sh
|
||||||
|
docker exec -it immich_web sh
|
||||||
|
docker exec -it immich_proxy sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Logs
|
||||||
|
|
||||||
|
```bash
|
||||||
docker logs <id or name> # see the logs for a specific container (by id or name)
|
docker logs <id or name> # see the logs for a specific container (by id or name)
|
||||||
|
|
||||||
docker logs immich_server
|
docker logs immich_server
|
||||||
|
|||||||
21
docs/docs/install/all-in-one.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 99
|
||||||
|
---
|
||||||
|
|
||||||
|
# All-In-One [Community]
|
||||||
|
|
||||||
|
:::note
|
||||||
|
This is a community contribution and not officially supported by the Immich team, but included here for convenience.
|
||||||
|
|
||||||
|
**Please report issues to the corresponding [Github Repository][github].**
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
For installation instructions, refer to the [Github Repository][github].
|
||||||
|
|
||||||
|
## Issues
|
||||||
|
|
||||||
|
For issues, open an issue on the associated [GitHub Repository][github].
|
||||||
|
|
||||||
|
[github]: https://github.com/martabal/docker-immich
|
||||||
@@ -120,11 +120,16 @@ For more information on how to use the application, please refer to the [Post In
|
|||||||
|
|
||||||
### Step 4 - Upgrading
|
### Step 4 - Upgrading
|
||||||
|
|
||||||
When a new version of Immich is (released)[], the application can be upgraded with the following commands, run in the directory with the `docker-compose.yml` file:
|
When a new version of Immich is [released](https://github.com/immich-app/immich/releases), the application can be upgraded with the following commands, run in the directory with the `docker-compose.yml` file:
|
||||||
|
|
||||||
```bash title="Upgrade Immich"
|
```bash title="Upgrade Immich"
|
||||||
docker-compose pull && docker-compose up -d # Or `docker compose`
|
docker-compose pull && docker-compose up -d # Or `docker compose`
|
||||||
```
|
```
|
||||||
|
|
||||||
|
:::caution Automatic Updates
|
||||||
|
Immich is currently under heavy development, which means you can expect breaking changes and bugs. Therefore, we recommend reading the release notes prior to updating and to take special care when using automated tools like [Watchtower][watchtower].
|
||||||
|
:::
|
||||||
|
|
||||||
[compose-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
|
[compose-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/docker-compose.yml
|
||||||
[env-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example
|
[env-file]: https://raw.githubusercontent.com/immich-app/immich/main/docker/.env.example
|
||||||
|
[watchtower]: https://containrrr.dev/watchtower/
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Running into an issue or have a question? Try the following:
|
|||||||
|
|
||||||
1. Check the [FAQs](/docs/FAQ.md).
|
1. Check the [FAQs](/docs/FAQ.md).
|
||||||
2. Read through the [Release Notes][github-releases].
|
2. Read through the [Release Notes][github-releases].
|
||||||
3. Search through existing [Github Issues][github-issues].
|
3. Search through existing [GitHub Issues][github-issues].
|
||||||
4. Open a help ticket on [Discord][discord-link].
|
4. Open a help ticket on [Discord][discord-link].
|
||||||
|
|
||||||
[github-issues]: https://github.com/immich-app/immich/releases
|
[github-issues]: https://github.com/immich-app/immich/releases
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ If you feel like this is the right cause and the app is something you see yourse
|
|||||||
## Donation
|
## Donation
|
||||||
|
|
||||||
- Monthly donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502)
|
- Monthly donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502)
|
||||||
- One-time donation via [Github Sponsors](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
|
- One-time donation via [GitHub Sponsors](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502)
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
There are lots of non-monetary ways to contribute to Immich as well.
|
There are lots of non-monetary ways to contribute to Immich as well.
|
||||||
|
|
||||||
1. Testing - Using Immich and reporting bugs is a great way to help support the project. Found a bug? [Open an issue on Github][github-issue].
|
1. Testing - Using Immich and reporting bugs is a great way to help support the project. Found a bug? [Open an issue on GitHub][github-issue].
|
||||||
1. Translations - The Immich mobile app has been translated into [17 languages][github-langs] so far! To contribute with translations, email me at alex.tran1502@gmail.com or send me a message on discord.
|
1. Translations - The Immich mobile app has been translated into [17 languages][github-langs] so far! To contribute with translations, email me at alex.tran1502@gmail.com or send me a message on discord.
|
||||||
1. Development - If you are a programmer or developer, take a look at Immich's [technology stack](/docs/developer/architecture.md) and consider fixing bugs or building new features. The team and I are always looking for new contributors. For information about how to contribute as a developer, see the [Developer](/docs/developer/architecture.md) section.
|
1. Development - If you are a programmer or developer, take a look at Immich's [technology stack](/docs/developer/architecture.md) and consider fixing bugs or building new features. The team and I are always looking for new contributors. For information about how to contribute as a developer, see the [Developer](/docs/developer/architecture.md) section.
|
||||||
|
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ The mobile app can be downloaded from the following places:
|
|||||||
- [Google Play Store](https://play.google.com/store/apps/details?id=app.alextran.immich)
|
- [Google Play Store](https://play.google.com/store/apps/details?id=app.alextran.immich)
|
||||||
- [Apple App Store](https://apps.apple.com/us/app/immich/id1613945652)
|
- [Apple App Store](https://apps.apple.com/us/app/immich/id1613945652)
|
||||||
- [F-Droid](https://f-droid.org/packages/app.alextran.immich)
|
- [F-Droid](https://f-droid.org/packages/app.alextran.immich)
|
||||||
- [Github Releases (apk)](https://github.com/immich-app/immich/releases)
|
- [GitHub Releases (apk)](https://github.com/immich-app/immich/releases)
|
||||||
|
|||||||
@@ -105,16 +105,16 @@ const config = {
|
|||||||
position: "right",
|
position: "right",
|
||||||
label: "API",
|
label: "API",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
to: "/blog",
|
|
||||||
position: "right",
|
|
||||||
label: "Blog",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
href: "https://github.com/immich-app/immich",
|
href: "https://github.com/immich-app/immich",
|
||||||
label: "GitHub",
|
label: "GitHub",
|
||||||
position: "right",
|
position: "right",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
href: "https://github.com/orgs/immich-app/projects/1",
|
||||||
|
label: "Roadmap",
|
||||||
|
position: "right",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
@@ -143,16 +143,20 @@ const config = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "More",
|
title: "Links",
|
||||||
items: [
|
items: [
|
||||||
{
|
// {
|
||||||
label: "Blog",
|
// label: "Blog",
|
||||||
to: "/blog",
|
// to: "/blog",
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
label: "GitHub",
|
label: "GitHub",
|
||||||
href: "https://github.com/immich-app/immich",
|
href: "https://github.com/immich-app/immich",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: "Roadmap",
|
||||||
|
href: "https://github.com/orgs/immich-app/projects/1",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#! /bin/sh
|
||||||
# npm run typeorm migration:run
|
# npm run typeorm migration:run
|
||||||
# npm run start:prod
|
# npm run start:prod
|
||||||
node dist/main.js
|
exec node dist/main.js
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ platform :android do
|
|||||||
task: 'bundle',
|
task: 'bundle',
|
||||||
build_type: 'Release',
|
build_type: 'Release',
|
||||||
properties: {
|
properties: {
|
||||||
"android.injected.version.code" => 63,
|
"android.injected.version.code" => 65,
|
||||||
"android.injected.version.name" => "1.40.0",
|
"android.injected.version.name" => "1.42.0",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
* Fix omit null values from json requests
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
* Various performance improvements
|
||||||
|
* UI improvement on metadata sheet
|
||||||
@@ -1,96 +1,96 @@
|
|||||||
{
|
{
|
||||||
"album_info_card_backup_album_excluded": "EXCLUIDOS",
|
"album_info_card_backup_album_excluded": "EXCLUIDOS",
|
||||||
"album_info_card_backup_album_included": "INCLUIDOS",
|
"album_info_card_backup_album_included": "INCLUIDOS",
|
||||||
"album_thumbnail_card_item": "1 item",
|
"album_thumbnail_card_item": "1 elemento",
|
||||||
"album_thumbnail_card_items": "{} items",
|
"album_thumbnail_card_items": "{} elementos",
|
||||||
"album_thumbnail_card_shared": " · Shared",
|
"album_thumbnail_card_shared": " · Compartido",
|
||||||
"album_viewer_appbar_share_delete": "Eliminar álbum ",
|
"album_viewer_appbar_share_delete": "Eliminar álbum",
|
||||||
"album_viewer_appbar_share_err_delete": "No ha podido eliminar el álbum",
|
"album_viewer_appbar_share_err_delete": "No se ha podido eliminar el álbum",
|
||||||
"album_viewer_appbar_share_err_leave": "No ha podido dejar el álbum",
|
"album_viewer_appbar_share_err_leave": "No se ha podido dejar el álbum",
|
||||||
"album_viewer_appbar_share_err_remove": "Hay problemas para eliminar los activos del álbum",
|
"album_viewer_appbar_share_err_remove": "Hay problemas para eliminar contenidos del álbum",
|
||||||
"album_viewer_appbar_share_err_title": "Error al cambiar el título del álbum ",
|
"album_viewer_appbar_share_err_title": "No se ha podido cambiar el título del álbum",
|
||||||
"album_viewer_appbar_share_leave": "Abandonar álbum ",
|
"album_viewer_appbar_share_leave": "Abandonar álbum",
|
||||||
"album_viewer_appbar_share_remove": "Eliminar del álbum ",
|
"album_viewer_appbar_share_remove": "Eliminar del álbum",
|
||||||
"album_viewer_page_share_add_users": "Añadir usuarios",
|
"album_viewer_page_share_add_users": "Añadir usuarios",
|
||||||
"asset_list_settings_subtitle": "Photo grid layout settings",
|
"asset_list_settings_subtitle": "Configuración de la galería",
|
||||||
"asset_list_settings_title": "Photo Grid",
|
"asset_list_settings_title": "Galería",
|
||||||
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})",
|
"backup_album_selection_page_albums_device": "Álbumes en el dispositivo ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir",
|
"backup_album_selection_page_albums_tap": "Toque para incluir, doble toque para excluir",
|
||||||
"backup_album_selection_page_assets_scatter": "Los activos pueden dispersarse en varios álbumes. De este modo, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
|
"backup_album_selection_page_assets_scatter": "Los elementos pueden estar en varios álbumes. Por eso, los álbumes pueden ser incluidos o excluidos durante el proceso de copia de seguridad.",
|
||||||
"backup_album_selection_page_select_albums": "Seleccionar Álbumes",
|
"backup_album_selection_page_select_albums": "Seleccionar álbumes",
|
||||||
"backup_album_selection_page_selection_info": "Información sobre la Selección",
|
"backup_album_selection_page_selection_info": "Información sobre la selección",
|
||||||
"backup_album_selection_page_total_assets": "Total de activos únicos",
|
"backup_album_selection_page_total_assets": "Total de elementos únicos",
|
||||||
"backup_all": "Todos",
|
"backup_all": "Todos",
|
||||||
"backup_background_service_backup_failed_message": "Failed to backup assets. Retrying…",
|
"backup_background_service_backup_failed_message": "No se ha podido realizar la copia de seguridad. Reintentando…",
|
||||||
"backup_background_service_connection_failed_message": "Failed to connect to the server. Retrying…",
|
"backup_background_service_connection_failed_message": "No se ha podido conectar con el servidor. Reintentando…",
|
||||||
"backup_background_service_current_upload_notification": "Uploading {}",
|
"backup_background_service_current_upload_notification": "Subidendo {}",
|
||||||
"backup_background_service_default_notification": "Checking for new assets…",
|
"backup_background_service_default_notification": "Buscando nuevos elementos…",
|
||||||
"backup_background_service_error_title": "Backup error",
|
"backup_background_service_error_title": "Error de copia de seguridad",
|
||||||
"backup_background_service_in_progress_notification": "Backing up your assets…",
|
"backup_background_service_in_progress_notification": "Subiendo elementos…",
|
||||||
"backup_background_service_upload_failure_notification": "Failed to upload {}",
|
"backup_background_service_upload_failure_notification": "Error al subir {}",
|
||||||
"backup_controller_page_albums": "Álbumes de copia de seguridad",
|
"backup_controller_page_albums": "Álbumes de copia de seguridad",
|
||||||
"backup_controller_page_background_battery_info_link": "Show me how",
|
"backup_controller_page_background_battery_info_link": "Muéstrame cómo",
|
||||||
"backup_controller_page_background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.",
|
"backup_controller_page_background_battery_info_message": "Para disfrutar de la mejor experiencia de copia de seguridad en segundo plano, desactive cualquier optimización de la batería que restrinja la actividad en segundo plano para Immich.\nDado que esto es específico de cada dispositivo, busque la información necesaria para el fabricante de su dispositivo.",
|
||||||
"backup_controller_page_background_battery_info_ok": "OK",
|
"backup_controller_page_background_battery_info_ok": "OK",
|
||||||
"backup_controller_page_background_battery_info_title": "Battery optimizations",
|
"backup_controller_page_background_battery_info_title": "Optimización de batería",
|
||||||
"backup_controller_page_background_charging": "Only while charging",
|
"backup_controller_page_background_charging": "Sólo mientras carga",
|
||||||
"backup_controller_page_background_configure_error": "Failed to configure the background service",
|
"backup_controller_page_background_configure_error": "Error al configurar el servicio en segundo plano",
|
||||||
"backup_controller_page_background_delay": "Delay new assets backup: {}",
|
"backup_controller_page_background_delay": "Delay new assets backup: {}",
|
||||||
"backup_controller_page_background_description": "Turn on the background service to automatically backup any new assets without needing to open the app",
|
"backup_controller_page_background_description": "Activar el servicio en segundo plano para realizar copias de seguridad automáticas de los nuevos elementos sin tener que abrir la aplicación",
|
||||||
"backup_controller_page_background_is_off": "Automatic background backup is off",
|
"backup_controller_page_background_is_off": "Copia de seguridad automática apagada",
|
||||||
"backup_controller_page_background_is_on": "Automatic background backup is on",
|
"backup_controller_page_background_is_on": "Copia de seguridad automática encendida",
|
||||||
"backup_controller_page_background_turn_off": "Turn off background service",
|
"backup_controller_page_background_turn_off": "Desactivar el servicio en segundo plano",
|
||||||
"backup_controller_page_background_turn_on": "Turn on background service",
|
"backup_controller_page_background_turn_on": "Activar el servicio en segundo plano",
|
||||||
"backup_controller_page_background_wifi": "Only on WiFi",
|
"backup_controller_page_background_wifi": "Sólo con WiFi",
|
||||||
"backup_controller_page_backup": "Copia de Seguridad",
|
"backup_controller_page_backup": "Copia de Seguridad",
|
||||||
"backup_controller_page_backup_selected": "Seleccionado:",
|
"backup_controller_page_backup_selected": "Seleccionado:",
|
||||||
"backup_controller_page_backup_sub": "Copia de seguridad de fotos y vídeos",
|
"backup_controller_page_backup_sub": "Copia de seguridad de fotos y vídeos",
|
||||||
"backup_controller_page_cancel": "Cancelar",
|
"backup_controller_page_cancel": "Cancelar",
|
||||||
"backup_controller_page_created": "Created on: {}",
|
"backup_controller_page_created": "Creado el: {}",
|
||||||
"backup_controller_page_desc_backup": "Active la copia de seguridad para cargar automáticamente los nuevos activos al servidor.",
|
"backup_controller_page_desc_backup": "Active la copia de seguridad para cargar automáticamente los nuevos elementos al servidor.",
|
||||||
"backup_controller_page_excluded": "Excluido:",
|
"backup_controller_page_excluded": "Excluido:",
|
||||||
"backup_controller_page_failed": "Failed ({})",
|
"backup_controller_page_failed": "Fallido ({})",
|
||||||
"backup_controller_page_filename": "File name: {} [{}]",
|
"backup_controller_page_filename": "Nombre de archivo: {} [{}]",
|
||||||
"backup_controller_page_id": "ID: {}",
|
"backup_controller_page_id": "ID: {}",
|
||||||
"backup_controller_page_info": "Información de la Copia de Seguridad",
|
"backup_controller_page_info": "Información de la copia de seguridad",
|
||||||
"backup_controller_page_none_selected": "Ninguno seleccionado",
|
"backup_controller_page_none_selected": "Ninguno seleccionado",
|
||||||
"backup_controller_page_remainder": "Remanente",
|
"backup_controller_page_remainder": "Restantes",
|
||||||
"backup_controller_page_remainder_sub": "Fotos y álbumes restantes para hacer una copia de seguridad de la selección",
|
"backup_controller_page_remainder_sub": "Fotos y álbumes restantes para hacer una copia de seguridad de la selección",
|
||||||
"backup_controller_page_select": "Seleccionar",
|
"backup_controller_page_select": "Seleccionar",
|
||||||
"backup_controller_page_server_storage": "Almacenamiento en el servidor",
|
"backup_controller_page_server_storage": "Almacenamiento en el servidor",
|
||||||
"backup_controller_page_start_backup": "Iniciar copia de seguridad",
|
"backup_controller_page_start_backup": "Iniciar copia de seguridad",
|
||||||
"backup_controller_page_status_off": "La copia de seguridad está desactivada",
|
"backup_controller_page_status_off": "La copia de seguridad está desactivada",
|
||||||
"backup_controller_page_status_on": "La copia de seguridad está activada",
|
"backup_controller_page_status_on": "La copia de seguridad está activada",
|
||||||
"backup_controller_page_storage_format": "{} de {} usadas",
|
"backup_controller_page_storage_format": "{} de {} usados",
|
||||||
"backup_controller_page_to_backup": "Álbumes a respaldar",
|
"backup_controller_page_to_backup": "Álbumes a respaldar",
|
||||||
"backup_controller_page_total": "Total",
|
"backup_controller_page_total": "Total",
|
||||||
"backup_controller_page_total_sub": "Todas las fotos y vídeos únicos de los álbumes seleccionados",
|
"backup_controller_page_total_sub": "Todas las fotos y vídeos únicos de los álbumes seleccionados",
|
||||||
"backup_controller_page_turn_off": "Apagar la copia de seguridad",
|
"backup_controller_page_turn_off": "Apagar la copia de seguridad",
|
||||||
"backup_controller_page_turn_on": "Activar la copia de seguridad",
|
"backup_controller_page_turn_on": "Activar la copia de seguridad",
|
||||||
"backup_controller_page_uploading_file_info": "Uploading file info",
|
"backup_controller_page_uploading_file_info": "SUbiendo información de archivos",
|
||||||
"backup_err_only_album": "No se puede eliminar el único álbum",
|
"backup_err_only_album": "No se puede eliminar el único álbum",
|
||||||
"backup_info_card_assets": "activos",
|
"backup_info_card_assets": "elementos",
|
||||||
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
|
"cach_settings_album_thumbnails": "Miniaturas del álbum ({} elementos)",
|
||||||
"cache_settings_clear_cache_button": "Clear cache",
|
"cache_settings_clear_cache_button": "Limpiar caché",
|
||||||
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
|
"cache_settings_clear_cache_button_title": "Limpia el caché de la app. Esto afectará significativamente al rendimiento de la aplicación hasta que la caché se haya reconstruido.",
|
||||||
"cache_settings_image_cache_size": "Image cache size ({} assets)",
|
"cache_settings_image_cache_size": "Miniaturas de imágenes ({} elementos)",
|
||||||
"cache_settings_statistics_album": "Library thumbnails",
|
"cache_settings_statistics_album": "Miniaturas del álbum",
|
||||||
"cache_settings_statistics_assets": "{} assets ({})",
|
"cache_settings_statistics_assets": "{} elementos ({})",
|
||||||
"cache_settings_statistics_full": "Full images",
|
"cache_settings_statistics_full": "Imágenes completas",
|
||||||
"cache_settings_statistics_shared": "Shared album thumbnails",
|
"cache_settings_statistics_shared": "Miniaturas del álbum compartido",
|
||||||
"cache_settings_statistics_thumbnail": "Thumbnails",
|
"cache_settings_statistics_thumbnail": "Miniaturas",
|
||||||
"cache_settings_statistics_title": "Cache usage",
|
"cache_settings_statistics_title": "Uso de caché",
|
||||||
"cache_settings_subtitle": "Control the caching behaviour of the Immich mobile application",
|
"cache_settings_subtitle": "Controla el comportamiento de almacenamiento en caché de la aplicación de Immich",
|
||||||
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
|
"cache_settings_thumbnail_size": "Tamaño del caché de miniaturas ({} elementos)",
|
||||||
"cache_settings_title": "Caching Settings",
|
"cache_settings_title": "Ajustes del caché",
|
||||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
"control_bottom_app_bar_add_to_album": "Añadir al álbum",
|
||||||
"control_bottom_app_bar_album_info": "{} items",
|
"control_bottom_app_bar_album_info": "{} elementos",
|
||||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartido",
|
||||||
"control_bottom_app_bar_create_new_album": "Create new album",
|
"control_bottom_app_bar_create_new_album": "Crear nuevo álbum",
|
||||||
"control_bottom_app_bar_delete": "Eliminar",
|
"control_bottom_app_bar_delete": "Eliminar",
|
||||||
"control_bottom_app_bar_share": "Share",
|
"control_bottom_app_bar_share": "Compartir",
|
||||||
"create_album_page_untitled": "Untitled",
|
"create_album_page_untitled": "Sin título",
|
||||||
"create_shared_album_page_create": "Create",
|
"create_shared_album_page_create": "Crear",
|
||||||
"create_shared_album_page_share": "Compartir",
|
"create_shared_album_page_share": "Compartir",
|
||||||
"create_shared_album_page_share_add_assets": "AÑADIR ACTIVOS",
|
"create_shared_album_page_share_add_assets": "AÑADIR ACTIVOS",
|
||||||
"create_shared_album_page_share_select_photos": "Seleccionar Fotos",
|
"create_shared_album_page_share_select_photos": "Seleccionar Fotos",
|
||||||
@@ -101,17 +101,17 @@
|
|||||||
"delete_dialog_cancel": "Cancelar",
|
"delete_dialog_cancel": "Cancelar",
|
||||||
"delete_dialog_ok": "Eliminar",
|
"delete_dialog_ok": "Eliminar",
|
||||||
"delete_dialog_title": "Eliminar Permanentemente",
|
"delete_dialog_title": "Eliminar Permanentemente",
|
||||||
"exif_bottom_sheet_description": "Añadir Descripción...",
|
"exif_bottom_sheet_description": "Añadir descripción...",
|
||||||
"exif_bottom_sheet_details": "DETALLES",
|
"exif_bottom_sheet_details": "DETALLES",
|
||||||
"exif_bottom_sheet_location": "LOCALZACIÓN",
|
"exif_bottom_sheet_location": "LOCALZACIÓN",
|
||||||
"experimental_settings_new_asset_list_subtitle": "Work in progress",
|
"experimental_settings_new_asset_list_subtitle": "En desarrollo",
|
||||||
"experimental_settings_new_asset_list_title": "Enable experimental photo grid",
|
"experimental_settings_new_asset_list_title": "Habilitar galería experimental",
|
||||||
"experimental_settings_subtitle": "Use at your own risk!",
|
"experimental_settings_subtitle": "¡Úsalo bajo tu responsabilidad!",
|
||||||
"experimental_settings_title": "Experimental",
|
"experimental_settings_title": "Experimental",
|
||||||
"home_page_add_to_album_conflicts": "Added {added} assets to album {album}. {failed} assets are already in the album.",
|
"home_page_add_to_album_conflicts": "Añadidos {added} elementos al álbum {album}. {failed} elementos ya estaban añadidos.",
|
||||||
"home_page_add_to_album_success": "Added {added} assets to album {album}.",
|
"home_page_add_to_album_success": "Añadidos {added} elementos al álbum {album}.",
|
||||||
"library_page_albums": "Albums",
|
"library_page_albums": "Álbumes",
|
||||||
"library_page_new_album": "New album",
|
"library_page_new_album": "Nuevo álbum",
|
||||||
"login_form_button_text": "Iniciar Sesión",
|
"login_form_button_text": "Iniciar Sesión",
|
||||||
"login_form_email_hint": "tucorreo@correo.com",
|
"login_form_email_hint": "tucorreo@correo.com",
|
||||||
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto/api",
|
"login_form_endpoint_hint": "http://tu-ip-de-servidor:puerto/api",
|
||||||
@@ -120,75 +120,75 @@
|
|||||||
"login_form_err_invalid_email": "Correo electrónico no válido",
|
"login_form_err_invalid_email": "Correo electrónico no válido",
|
||||||
"login_form_err_leading_whitespace": "Espacio en blanco inicial",
|
"login_form_err_leading_whitespace": "Espacio en blanco inicial",
|
||||||
"login_form_err_trailing_whitespace": "Espacio en blanco al final",
|
"login_form_err_trailing_whitespace": "Espacio en blanco al final",
|
||||||
"login_form_failed_get_oauth_server_config": "Error logging using OAuth, check server URL",
|
"login_form_failed_get_oauth_server_config": "Fallo al iniciar sesión con OAuth. Comprueba la URL del servidor.",
|
||||||
"login_form_failed_get_oauth_server_disable": "OAuth feature is not available on this server",
|
"login_form_failed_get_oauth_server_disable": "OAuth no está disponible en este servidor",
|
||||||
"login_form_failed_login": "Error logging you in, check server URL, email and password",
|
"login_form_failed_login": "Fallo al iniciar sesión, comprueba URL, correo y contraseña",
|
||||||
"login_form_label_email": "Correo",
|
"login_form_label_email": "Correo",
|
||||||
"login_form_label_password": "Contraseña",
|
"login_form_label_password": "Contraseña",
|
||||||
"login_form_password_hint": "contraseña",
|
"login_form_password_hint": "contraseña",
|
||||||
"login_form_save_login": "Mantener la sesión iniciada",
|
"login_form_save_login": "Mantener la sesión iniciada",
|
||||||
"monthly_title_text_date_format": "MMMM y",
|
"monthly_title_text_date_format": "MMMM y",
|
||||||
"profile_drawer_app_logs": "Logs",
|
"profile_drawer_app_logs": "Registros",
|
||||||
"profile_drawer_client_server_up_to_date": "El Cliente y el Servidor están actualizados",
|
"profile_drawer_client_server_up_to_date": "El cliente y el servidor están actualizados",
|
||||||
"profile_drawer_settings": "Settings",
|
"profile_drawer_settings": "Ajustes",
|
||||||
"profile_drawer_sign_out": "Cerrar Sesión",
|
"profile_drawer_sign_out": "Cerrar Sesión",
|
||||||
"search_bar_hint": "Busca tus fotos",
|
"search_bar_hint": "Buscar fotos",
|
||||||
"search_page_no_objects": "No Objects Info Available",
|
"search_page_no_objects": "No hay información sobre objetos",
|
||||||
"search_page_no_places": "No hay información de lugares disponibles",
|
"search_page_no_places": "No hay información sobre lugares",
|
||||||
"search_page_places": "Lugares",
|
"search_page_places": "Lugares",
|
||||||
"search_page_things": "Cosas",
|
"search_page_things": "Objetos",
|
||||||
"search_result_page_new_search_hint": "Nueva Busqueda",
|
"search_result_page_new_search_hint": "Nueva búsqueda",
|
||||||
"select_additional_user_for_sharing_page_suggestions": "Sugerencias",
|
"select_additional_user_for_sharing_page_suggestions": "Sugerencias",
|
||||||
"select_user_for_sharing_page_err_album": "Fallo al crear el álbum",
|
"select_user_for_sharing_page_err_album": "Fallo al crear el álbum",
|
||||||
"select_user_for_sharing_page_share_suggestions": "Suggestions",
|
"select_user_for_sharing_page_share_suggestions": "Sugerencias",
|
||||||
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
|
"setting_image_viewer_help": "El visor carga primero la miniatura pequeña, luego carga la de tamaño medio (si está activada) y por último la original (si está activada).",
|
||||||
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
|
"setting_image_viewer_original_subtitle": "Activar para cargar la imagen original (¡grande!). Desactivar para reducir el uso de datos (tanto de red como de caché).",
|
||||||
"setting_image_viewer_original_title": "Load original image",
|
"setting_image_viewer_original_title": "Cargar imágenes originales",
|
||||||
"setting_image_viewer_preview_subtitle": "Enable to load a medium-resolution image. Disable to either directly load the original or only use the thumbnail.",
|
"setting_image_viewer_preview_subtitle": "Activar para cargar una imagen de resolución media. Desactivar para cargar directamente el original o utilizar sólo la miniatura.",
|
||||||
"setting_image_viewer_preview_title": "Load preview image",
|
"setting_image_viewer_preview_title": "Cargar miniaturas",
|
||||||
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}",
|
"setting_notifications_notify_failures_grace_period": "Notificar fallos de carga en segundo plano: {}",
|
||||||
"setting_notifications_notify_hours": "{} hours",
|
"setting_notifications_notify_hours": "{} horas",
|
||||||
"setting_notifications_notify_immediately": "immediately",
|
"setting_notifications_notify_immediately": "inmediatamente",
|
||||||
"setting_notifications_notify_minutes": "{} minutes",
|
"setting_notifications_notify_minutes": "{} minutos",
|
||||||
"setting_notifications_notify_never": "never",
|
"setting_notifications_notify_never": "nunca",
|
||||||
"setting_notifications_notify_seconds": "{} seconds",
|
"setting_notifications_notify_seconds": "{} segundos",
|
||||||
"setting_notifications_single_progress_subtitle": "Detailed upload progress information per asset",
|
"setting_notifications_single_progress_subtitle": "Información detallada por cada elemento en copia",
|
||||||
"setting_notifications_single_progress_title": "Show background backup detail progress",
|
"setting_notifications_single_progress_title": "Mostrar detalles de la subida",
|
||||||
"setting_notifications_subtitle": "Adjust your notification preferences",
|
"setting_notifications_subtitle": "Ajusta tus preferencias de notificación",
|
||||||
"setting_notifications_title": "Notifications",
|
"setting_notifications_title": "Notificaciones",
|
||||||
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
|
"setting_notifications_total_progress_subtitle": "Progreso general de la subida (subidos/total elementos)",
|
||||||
"setting_notifications_total_progress_title": "Show background backup total progress",
|
"setting_notifications_total_progress_title": "Mostrar progreso de la subida",
|
||||||
"setting_pages_app_bar_settings": "Settings",
|
"setting_pages_app_bar_settings": "Ajustes",
|
||||||
"settings_require_restart": "Please restart Immich to apply this setting",
|
"settings_require_restart": "Por favor, reinica Immich para aplicar estos cambios",
|
||||||
"share_add": "Añadir",
|
"share_add": "Añadir",
|
||||||
"share_add_photos": "Añadir fotos",
|
"share_add_photos": "Añadir fotos",
|
||||||
"share_add_title": "Añadir un título",
|
"share_add_title": "Añadir un título",
|
||||||
"share_create_album": "Crear álbum",
|
"share_create_album": "Crear álbum",
|
||||||
"share_dialog_preparing": "Preparing...",
|
"share_dialog_preparing": "Preparando...",
|
||||||
"share_invite": "Invitar al álbum",
|
"share_invite": "Invitar al álbum",
|
||||||
"sharing_page_album": "Álbumes compartidos",
|
"sharing_page_album": "Álbumes compartidos",
|
||||||
"sharing_page_description": "Crea álbumes compartidos para compartir fotos y vídeos con las personas de tu red.",
|
"sharing_page_description": "Crea álbumes compartidos para compartir fotos y vídeos con otros usuarios.",
|
||||||
"sharing_page_empty_list": "LISTA VACIA",
|
"sharing_page_empty_list": "LISTA VACÍA",
|
||||||
"sharing_silver_appbar_create_shared_album": "Crear un álbum compartido",
|
"sharing_silver_appbar_create_shared_album": "Crear un álbum compartido",
|
||||||
"sharing_silver_appbar_share_partner": "Compartir con el compañero",
|
"sharing_silver_appbar_share_partner": "Compartir con pareja",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Álbumes",
|
||||||
"tab_controller_nav_photos": "Fotos",
|
"tab_controller_nav_photos": "Galería",
|
||||||
"tab_controller_nav_search": "Buscar",
|
"tab_controller_nav_search": "Buscar",
|
||||||
"tab_controller_nav_sharing": "Compartiendo",
|
"tab_controller_nav_sharing": "Compartido",
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Show storage indicator on asset tiles",
|
"theme_setting_asset_list_storage_indicator_title": "Mostrar estado de subida en cada elemento",
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
|
"theme_setting_asset_list_tiles_per_row_title": "Número de elementos por fila ({})",
|
||||||
"theme_setting_dark_mode_switch": "Dark mode",
|
"theme_setting_dark_mode_switch": "Modo oscuro",
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer",
|
"theme_setting_image_viewer_quality_subtitle": "Ajusta la calidad del visor",
|
||||||
"theme_setting_image_viewer_quality_title": "Image viewer quality",
|
"theme_setting_image_viewer_quality_title": "Calidad del visor",
|
||||||
"theme_setting_system_theme_switch": "Automatic (Follow system setting)",
|
"theme_setting_system_theme_switch": "Automático (Según ajustes del sistema)",
|
||||||
"theme_setting_theme_subtitle": "Choose the app's theme setting",
|
"theme_setting_theme_subtitle": "Elige el tema de la app",
|
||||||
"theme_setting_theme_title": "Theme",
|
"theme_setting_theme_title": "Tema",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
|
"theme_setting_three_stage_loading_subtitle": "La carga en tres fases podría aumentar el rendimiento pero provoca una mayor carga de red",
|
||||||
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
|
"theme_setting_three_stage_loading_title": "Activar carga en tres fases",
|
||||||
"version_announcement_overlay_ack": "Reconocer",
|
"version_announcement_overlay_ack": "Reconocer",
|
||||||
"version_announcement_overlay_release_notes": "notas de versión",
|
"version_announcement_overlay_release_notes": "Notas de la versión",
|
||||||
"version_announcement_overlay_text_1": "Hola amigo, hay una nueva versión de",
|
"version_announcement_overlay_text_1": "¡Hola! Hay una nueva versión de",
|
||||||
"version_announcement_overlay_text_2": "tómese su tiempo para visitar la ",
|
"version_announcement_overlay_text_2": "tómate tu tiempo para visitar la ",
|
||||||
"version_announcement_overlay_text_3": "y asegurate de que tu configuración de docker-compose y .env está actualizada para evitar cualquier desconfiguración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su aplicación de servidor automáticamente.",
|
"version_announcement_overlay_text_3": "y asegúrate de que tu docker-compose y .env están actualizados para prevenir cualquier configuración errónea, especialmente si usas WatchTower o cualquier otro mecanismo que automatice la actualización.",
|
||||||
"version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89"
|
"version_announcement_overlay_title": "Nueva versión del servidor disponible \uD83C\uDF89"
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
mobile/flutter_01.png
Normal file
|
After Width: | Height: | Size: 536 KiB |
@@ -360,7 +360,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 76;
|
CURRENT_PROJECT_VERSION = 79;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
@@ -495,7 +495,7 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 76;
|
CURRENT_PROJECT_VERSION = 79;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
@@ -522,7 +522,7 @@
|
|||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 76;
|
CURRENT_PROJECT_VERSION = 79;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
INFOPLIST_FILE = Runner/Info.plist;
|
INFOPLIST_FILE = Runner/Info.plist;
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.39.0</string>
|
<string>1.42.0</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>76</string>
|
<string>79</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true />
|
<true />
|
||||||
<key>MGLMapboxMetricsEnabledSettingShownInApp</key>
|
<key>MGLMapboxMetricsEnabledSettingShownInApp</key>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ platform :ios do
|
|||||||
desc "iOS Beta"
|
desc "iOS Beta"
|
||||||
lane :beta do
|
lane :beta do
|
||||||
increment_version_number(
|
increment_version_number(
|
||||||
version_number: "1.40.0"
|
version_number: "1.42.0"
|
||||||
)
|
)
|
||||||
increment_build_number(
|
increment_build_number(
|
||||||
build_number: latest_testflight_build_number + 1,
|
build_number: latest_testflight_build_number + 1,
|
||||||
|
|||||||
@@ -5,32 +5,32 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000212">
|
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000301">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="1: increment_version_number" time="1.00785">
|
<testcase classname="fastlane.lanes" name="1: increment_version_number" time="0.73906">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="2: latest_testflight_build_number" time="5.724004">
|
<testcase classname="fastlane.lanes" name="2: latest_testflight_build_number" time="5.857767">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="3: increment_build_number" time="0.670744">
|
<testcase classname="fastlane.lanes" name="3: increment_build_number" time="0.648708">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="4: build_app" time="85.266784">
|
<testcase classname="fastlane.lanes" name="4: build_app" time="88.88212">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|
||||||
<testcase classname="fastlane.lanes" name="5: upload_to_testflight" time="59.733923">
|
<testcase classname="fastlane.lanes" name="5: upload_to_testflight" time="162.957763">
|
||||||
|
|
||||||
</testcase>
|
</testcase>
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ void main() async {
|
|||||||
if (kReleaseMode && Platform.isAndroid) {
|
if (kReleaseMode && Platform.isAndroid) {
|
||||||
try {
|
try {
|
||||||
await FlutterDisplayMode.setHighRefreshRate();
|
await FlutterDisplayMode.setHighRefreshRate();
|
||||||
|
debugPrint("Enabled high refresh mode");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugPrint("Error setting high refresh rate: $e");
|
debugPrint("Error setting high refresh rate: $e");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,13 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_map/flutter_map.dart';
|
import 'package:flutter_map/flutter_map.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/shared/models/asset.dart';
|
import 'package:immich_mobile/shared/models/asset.dart';
|
||||||
|
import 'package:immich_mobile/shared/ui/drag_sheet.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
import 'package:immich_mobile/utils/bytes_units.dart';
|
import 'package:immich_mobile/utils/bytes_units.dart';
|
||||||
|
|
||||||
class ExifBottomSheet extends ConsumerWidget {
|
class ExifBottomSheet extends HookConsumerWidget {
|
||||||
final Asset assetDetail;
|
final Asset assetDetail;
|
||||||
|
|
||||||
const ExifBottomSheet({Key? key, required this.assetDetail})
|
const ExifBottomSheet({Key? key, required this.assetDetail})
|
||||||
@@ -65,6 +66,8 @@ class ExifBottomSheet extends ConsumerWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final textColor = Theme.of(context).primaryColor;
|
||||||
|
|
||||||
ExifResponseDto? exifInfo = assetDetail.remote?.exifInfo;
|
ExifResponseDto? exifInfo = assetDetail.remote?.exifInfo;
|
||||||
|
|
||||||
buildLocationText() {
|
buildLocationText() {
|
||||||
@@ -72,120 +75,131 @@ class ExifBottomSheet extends ConsumerWidget {
|
|||||||
"${exifInfo?.city}, ${exifInfo?.state}",
|
"${exifInfo?.city}, ${exifInfo?.state}",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
color: Colors.grey[200],
|
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
color: textColor,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Padding(
|
return SingleChildScrollView(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 8),
|
child: Card(
|
||||||
child: ListView(
|
shape: const RoundedRectangleBorder(
|
||||||
children: [
|
borderRadius: BorderRadius.only(
|
||||||
if (exifInfo?.dateTimeOriginal != null)
|
topLeft: Radius.circular(15),
|
||||||
Text(
|
topRight: Radius.circular(15),
|
||||||
DateFormat('date_format'.tr()).format(
|
|
||||||
exifInfo!.dateTimeOriginal!.toLocal(),
|
|
||||||
),
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.grey[400],
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 14,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 16.0),
|
|
||||||
child: Text(
|
|
||||||
"exif_bottom_sheet_description",
|
|
||||||
style: TextStyle(
|
|
||||||
color: Colors.grey[500],
|
|
||||||
fontSize: 11,
|
|
||||||
),
|
|
||||||
).tr(),
|
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
margin: const EdgeInsets.all(0),
|
||||||
|
child: Container(
|
||||||
|
margin: const EdgeInsets.symmetric(horizontal: 8.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
const Align(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: CustomDraggingHandle(),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 12),
|
||||||
|
if (exifInfo?.dateTimeOriginal != null)
|
||||||
|
Text(
|
||||||
|
DateFormat('date_format'.tr()).format(
|
||||||
|
exifInfo!.dateTimeOriginal!.toLocal(),
|
||||||
|
),
|
||||||
|
style: const TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 14,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
// Location
|
// Location
|
||||||
if (assetDetail.latitude != null)
|
if (assetDetail.latitude != null)
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(top: 32.0),
|
padding: const EdgeInsets.only(top: 32.0),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Divider(
|
const Divider(
|
||||||
thickness: 1,
|
thickness: 1,
|
||||||
color: Colors.grey[600],
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
"exif_bottom_sheet_location",
|
|
||||||
style: TextStyle(fontSize: 11, color: Colors.grey[400]),
|
|
||||||
).tr(),
|
|
||||||
if (assetDetail.latitude != null &&
|
|
||||||
assetDetail.longitude != null)
|
|
||||||
buildMap(),
|
|
||||||
if (exifInfo != null &&
|
|
||||||
exifInfo.city != null &&
|
|
||||||
exifInfo.state != null)
|
|
||||||
buildLocationText(),
|
|
||||||
Text(
|
|
||||||
"${assetDetail.latitude?.toStringAsFixed(4)}, ${assetDetail.longitude?.toStringAsFixed(4)}",
|
|
||||||
style: TextStyle(fontSize: 12, color: Colors.grey[400]),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
// Detail
|
|
||||||
if (exifInfo != null)
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(top: 32.0),
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Divider(
|
|
||||||
thickness: 1,
|
|
||||||
color: Colors.grey[600],
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.only(bottom: 8.0),
|
|
||||||
child: Text(
|
|
||||||
"exif_bottom_sheet_details",
|
|
||||||
style: TextStyle(fontSize: 11, color: Colors.grey[400]),
|
|
||||||
).tr(),
|
|
||||||
),
|
|
||||||
ListTile(
|
|
||||||
contentPadding: const EdgeInsets.all(0),
|
|
||||||
dense: true,
|
|
||||||
textColor: Colors.grey[300],
|
|
||||||
iconColor: Colors.grey[300],
|
|
||||||
leading: const Icon(Icons.image),
|
|
||||||
title: Text(
|
|
||||||
"${exifInfo.imageName!}${p.extension(assetDetail.remote!.originalPath)}",
|
|
||||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
|
||||||
),
|
|
||||||
subtitle: exifInfo.exifImageHeight != null
|
|
||||||
? Text(
|
|
||||||
"${exifInfo.exifImageHeight} x ${exifInfo.exifImageWidth} ${formatBytes(exifInfo.fileSizeInByte!)} ",
|
|
||||||
)
|
|
||||||
: null,
|
|
||||||
),
|
|
||||||
if (exifInfo.make != null)
|
|
||||||
ListTile(
|
|
||||||
contentPadding: const EdgeInsets.all(0),
|
|
||||||
dense: true,
|
|
||||||
textColor: Colors.grey[300],
|
|
||||||
iconColor: Colors.grey[300],
|
|
||||||
leading: const Icon(Icons.camera),
|
|
||||||
title: Text(
|
|
||||||
"${exifInfo.make} ${exifInfo.model}",
|
|
||||||
style: const TextStyle(fontWeight: FontWeight.bold),
|
|
||||||
),
|
),
|
||||||
subtitle: Text(
|
Text(
|
||||||
"ƒ/${exifInfo.fNumber} 1/${(1 / (exifInfo.exposureTime ?? 1)).toStringAsFixed(0)} ${exifInfo.focalLength} mm ISO${exifInfo.iso} ",
|
"exif_bottom_sheet_location",
|
||||||
|
style: TextStyle(fontSize: 11, color: textColor),
|
||||||
|
).tr(),
|
||||||
|
if (assetDetail.latitude != null &&
|
||||||
|
assetDetail.longitude != null)
|
||||||
|
buildMap(),
|
||||||
|
if (exifInfo != null &&
|
||||||
|
exifInfo.city != null &&
|
||||||
|
exifInfo.state != null)
|
||||||
|
buildLocationText(),
|
||||||
|
Text(
|
||||||
|
"${assetDetail.latitude?.toStringAsFixed(4)}, ${assetDetail.longitude?.toStringAsFixed(4)}",
|
||||||
|
style: const TextStyle(fontSize: 12),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Detail
|
||||||
|
if (exifInfo != null)
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(top: 32.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Divider(
|
||||||
|
thickness: 1,
|
||||||
|
color: Colors.grey[600],
|
||||||
),
|
),
|
||||||
),
|
Padding(
|
||||||
],
|
padding: const EdgeInsets.only(bottom: 8.0),
|
||||||
|
child: Text(
|
||||||
|
"exif_bottom_sheet_details",
|
||||||
|
style: TextStyle(fontSize: 11, color: textColor),
|
||||||
|
).tr(),
|
||||||
|
),
|
||||||
|
ListTile(
|
||||||
|
contentPadding: const EdgeInsets.all(0),
|
||||||
|
dense: true,
|
||||||
|
leading: const Icon(Icons.image),
|
||||||
|
title: Text(
|
||||||
|
"${exifInfo.imageName!}${p.extension(assetDetail.remote!.originalPath)}",
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: textColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: exifInfo.exifImageHeight != null
|
||||||
|
? Text(
|
||||||
|
"${exifInfo.exifImageHeight} x ${exifInfo.exifImageWidth} ${formatBytes(exifInfo.fileSizeInByte ?? 0)} ",
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
),
|
||||||
|
if (exifInfo.make != null)
|
||||||
|
ListTile(
|
||||||
|
contentPadding: const EdgeInsets.all(0),
|
||||||
|
dense: true,
|
||||||
|
leading: const Icon(Icons.camera),
|
||||||
|
title: Text(
|
||||||
|
"${exifInfo.make} ${exifInfo.model}",
|
||||||
|
style: TextStyle(
|
||||||
|
color: textColor,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: Text(
|
||||||
|
"ƒ/${exifInfo.fNumber} 1/${(1 / (exifInfo.exposureTime ?? 1)).toStringAsFixed(0)} ${exifInfo.focalLength} mm ISO${exifInfo.iso} ",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 50,
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,9 +69,12 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|||||||
|
|
||||||
void showInfo() {
|
void showInfo() {
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
backgroundColor: Colors.black,
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(15.0),
|
||||||
|
),
|
||||||
barrierColor: Colors.transparent,
|
barrierColor: Colors.transparent,
|
||||||
isScrollControlled: false,
|
backgroundColor: Colors.transparent,
|
||||||
|
isScrollControlled: true,
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return ExifBottomSheet(assetDetail: assetDetail!);
|
return ExifBottomSheet(assetDetail: assetDetail!);
|
||||||
@@ -162,6 +165,7 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|||||||
heroTag: assetList[index].id,
|
heroTag: assetList[index].id,
|
||||||
loadPreview: isLoadPreview.value,
|
loadPreview: isLoadPreview.value,
|
||||||
loadOriginal: isLoadOriginal.value,
|
loadOriginal: isLoadOriginal.value,
|
||||||
|
showExifSheet: showInfo,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/modules/asset_viewer/models/image_viewer_page_state.model.dart';
|
import 'package:immich_mobile/modules/asset_viewer/models/image_viewer_page_state.model.dart';
|
||||||
import 'package:immich_mobile/modules/asset_viewer/providers/image_viewer_page_state.provider.dart';
|
import 'package:immich_mobile/modules/asset_viewer/providers/image_viewer_page_state.provider.dart';
|
||||||
import 'package:immich_mobile/modules/asset_viewer/ui/exif_bottom_sheet.dart';
|
|
||||||
import 'package:immich_mobile/modules/asset_viewer/ui/remote_photo_view.dart';
|
import 'package:immich_mobile/modules/asset_viewer/ui/remote_photo_view.dart';
|
||||||
import 'package:immich_mobile/modules/home/services/asset.service.dart';
|
import 'package:immich_mobile/modules/home/services/asset.service.dart';
|
||||||
import 'package:immich_mobile/shared/models/asset.dart';
|
import 'package:immich_mobile/shared/models/asset.dart';
|
||||||
@@ -17,6 +16,7 @@ class ImageViewerPage extends HookConsumerWidget {
|
|||||||
final String authToken;
|
final String authToken;
|
||||||
final ValueNotifier<bool> isZoomedListener;
|
final ValueNotifier<bool> isZoomedListener;
|
||||||
final void Function() isZoomedFunction;
|
final void Function() isZoomedFunction;
|
||||||
|
final void Function()? showExifSheet;
|
||||||
final bool loadPreview;
|
final bool loadPreview;
|
||||||
final bool loadOriginal;
|
final bool loadOriginal;
|
||||||
|
|
||||||
@@ -29,6 +29,7 @@ class ImageViewerPage extends HookConsumerWidget {
|
|||||||
required this.isZoomedListener,
|
required this.isZoomedListener,
|
||||||
required this.loadPreview,
|
required this.loadPreview,
|
||||||
required this.loadOriginal,
|
required this.loadOriginal,
|
||||||
|
this.showExifSheet,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
Asset? assetDetail;
|
Asset? assetDetail;
|
||||||
@@ -56,18 +57,6 @@ class ImageViewerPage extends HookConsumerWidget {
|
|||||||
[],
|
[],
|
||||||
);
|
);
|
||||||
|
|
||||||
showInfo() {
|
|
||||||
showModalBottomSheet(
|
|
||||||
backgroundColor: Colors.black,
|
|
||||||
barrierColor: Colors.transparent,
|
|
||||||
isScrollControlled: false,
|
|
||||||
context: context,
|
|
||||||
builder: (context) {
|
|
||||||
return ExifBottomSheet(assetDetail: assetDetail ?? asset);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Stack(
|
return Stack(
|
||||||
children: [
|
children: [
|
||||||
Center(
|
Center(
|
||||||
@@ -81,7 +70,7 @@ class ImageViewerPage extends HookConsumerWidget {
|
|||||||
isZoomedFunction: isZoomedFunction,
|
isZoomedFunction: isZoomedFunction,
|
||||||
isZoomedListener: isZoomedListener,
|
isZoomedListener: isZoomedListener,
|
||||||
onSwipeDown: () => AutoRouter.of(context).pop(),
|
onSwipeDown: () => AutoRouter.of(context).pop(),
|
||||||
onSwipeUp: asset.isRemote ? showInfo : () {},
|
onSwipeUp: (asset.isRemote && showExifSheet != null) ? showExifSheet! : () {},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
||||||
import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
|
|
||||||
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
|
||||||
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
|
||||||
import 'package:immich_mobile/shared/providers/asset.provider.dart';
|
|
||||||
|
|
||||||
final renderListProvider = StateProvider((ref) {
|
|
||||||
var assetGroups = ref.watch(assetGroupByDateTimeProvider);
|
|
||||||
|
|
||||||
var settings = ref.watch(appSettingsServiceProvider);
|
|
||||||
final assetsPerRow = settings.getSetting(AppSettingsEnum.tilesPerRow);
|
|
||||||
|
|
||||||
return assetGroupsToRenderList(assetGroups, assetsPerRow);
|
|
||||||
});
|
|
||||||
@@ -7,9 +7,18 @@ import 'package:immich_mobile/shared/services/json_cache.dart';
|
|||||||
class AssetCacheService extends JsonCache<List<Asset>> {
|
class AssetCacheService extends JsonCache<List<Asset>> {
|
||||||
AssetCacheService() : super("asset_cache");
|
AssetCacheService() : super("asset_cache");
|
||||||
|
|
||||||
|
static Future<List<Map<String, dynamic>>> _computeSerialize(
|
||||||
|
List<Asset> assets) async {
|
||||||
|
return assets.map((e) => e.toJson()).toList();
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void put(List<Asset> data) {
|
void put(List<Asset> data) async {
|
||||||
putRawData(data.map((e) => e.toJson()).toList());
|
putRawData(await compute(_computeSerialize, data));
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<List<Asset>> _computeEncode(List<dynamic> data) async {
|
||||||
|
return data.map((e) => Asset.fromJson(e)).whereNotNull().toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -17,8 +26,7 @@ class AssetCacheService extends JsonCache<List<Asset>> {
|
|||||||
try {
|
try {
|
||||||
final mapList = await readRawData() as List<dynamic>;
|
final mapList = await readRawData() as List<dynamic>;
|
||||||
|
|
||||||
final responseData =
|
final responseData = await compute(_computeEncode, mapList);
|
||||||
mapList.map((e) => Asset.fromJson(e)).whereNotNull().toList();
|
|
||||||
|
|
||||||
return responseData;
|
return responseData;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:immich_mobile/shared/models/asset.dart';
|
import 'package:immich_mobile/shared/models/asset.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
|
|
||||||
@@ -33,85 +35,122 @@ class RenderAssetGridElement {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
List<RenderAssetGridElement> assetsToRenderList(
|
class _AssetGroupsToRenderListComputeParameters {
|
||||||
List<Asset> assets,
|
final String monthFormat;
|
||||||
int assetsPerRow,
|
final String dayFormat;
|
||||||
) {
|
final String dayFormatYear;
|
||||||
List<RenderAssetGridElement> elements = [];
|
final Map<String, List<Asset>> groups;
|
||||||
|
final int perRow;
|
||||||
|
|
||||||
int cursor = 0;
|
_AssetGroupsToRenderListComputeParameters(this.monthFormat, this.dayFormat,
|
||||||
while (cursor < assets.length) {
|
this.dayFormatYear, this.groups, this.perRow);
|
||||||
int rowElements = min(assets.length - cursor, assetsPerRow);
|
|
||||||
final date = assets[cursor].createdAt;
|
|
||||||
|
|
||||||
final rowElement = RenderAssetGridElement(
|
|
||||||
RenderAssetGridElementType.assetRow,
|
|
||||||
date: date,
|
|
||||||
assetRow: RenderAssetGridRow(
|
|
||||||
assets.sublist(cursor, cursor + rowElements),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
elements.add(rowElement);
|
|
||||||
cursor += rowElements;
|
|
||||||
}
|
|
||||||
|
|
||||||
return elements;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<RenderAssetGridElement> assetGroupsToRenderList(
|
class RenderList {
|
||||||
Map<String, List<Asset>> assetGroups,
|
final List<RenderAssetGridElement> elements;
|
||||||
int assetsPerRow,
|
|
||||||
) {
|
|
||||||
List<RenderAssetGridElement> elements = [];
|
|
||||||
DateTime? lastDate;
|
|
||||||
|
|
||||||
assetGroups.forEach((groupName, assets) {
|
RenderList(this.elements);
|
||||||
try {
|
|
||||||
final date = DateTime.parse(groupName);
|
static Future<RenderList> _processAssetGroupData(
|
||||||
|
_AssetGroupsToRenderListComputeParameters data) async {
|
||||||
|
final monthFormat = DateFormat(data.monthFormat);
|
||||||
|
final dayFormatSameYear = DateFormat(data.dayFormat);
|
||||||
|
final dayFormatOtherYear = DateFormat(data.dayFormatYear);
|
||||||
|
final groups = data.groups;
|
||||||
|
final perRow = data.perRow;
|
||||||
|
|
||||||
|
List<RenderAssetGridElement> elements = [];
|
||||||
|
DateTime? lastDate;
|
||||||
|
|
||||||
|
groups.forEach((groupName, assets) {
|
||||||
|
try {
|
||||||
|
final date = DateTime.parse(groupName);
|
||||||
|
|
||||||
|
if (lastDate == null || lastDate!.month != date.month) {
|
||||||
|
// Month title
|
||||||
|
|
||||||
|
var monthTitleText = groupName;
|
||||||
|
|
||||||
|
var groupDate = DateTime.tryParse(groupName);
|
||||||
|
if (groupDate != null) {
|
||||||
|
monthTitleText = monthFormat.format(groupDate);
|
||||||
|
} else {
|
||||||
|
log.severe("Failed to format date for day title: $groupName");
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.add(
|
||||||
|
RenderAssetGridElement(
|
||||||
|
RenderAssetGridElementType.monthTitle,
|
||||||
|
title: monthTitleText,
|
||||||
|
date: date,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add group title
|
||||||
|
var currentYear = DateTime.now().year;
|
||||||
|
var groupYear = DateTime.parse(groupName).year;
|
||||||
|
var formatDate =
|
||||||
|
currentYear == groupYear ? dayFormatSameYear : dayFormatOtherYear;
|
||||||
|
|
||||||
|
var dateText = groupName;
|
||||||
|
|
||||||
|
var groupDate = DateTime.tryParse(groupName);
|
||||||
|
if (groupDate != null) {
|
||||||
|
dateText = formatDate.format(groupDate);
|
||||||
|
} else {
|
||||||
|
log.severe("Failed to format date for day title: $groupName");
|
||||||
|
}
|
||||||
|
|
||||||
if (lastDate == null || lastDate!.month != date.month) {
|
|
||||||
elements.add(
|
elements.add(
|
||||||
RenderAssetGridElement(
|
RenderAssetGridElement(
|
||||||
RenderAssetGridElementType.monthTitle,
|
RenderAssetGridElementType.dayTitle,
|
||||||
title: groupName,
|
title: dateText,
|
||||||
date: date,
|
date: date,
|
||||||
),
|
relatedAssetList: assets,
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add group title
|
|
||||||
elements.add(
|
|
||||||
RenderAssetGridElement(
|
|
||||||
RenderAssetGridElementType.dayTitle,
|
|
||||||
title: groupName,
|
|
||||||
date: date,
|
|
||||||
relatedAssetList: assets,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Add rows
|
|
||||||
int cursor = 0;
|
|
||||||
while (cursor < assets.length) {
|
|
||||||
int rowElements = min(assets.length - cursor, assetsPerRow);
|
|
||||||
|
|
||||||
final rowElement = RenderAssetGridElement(
|
|
||||||
RenderAssetGridElementType.assetRow,
|
|
||||||
date: date,
|
|
||||||
assetRow: RenderAssetGridRow(
|
|
||||||
assets.sublist(cursor, cursor + rowElements),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
elements.add(rowElement);
|
// Add rows
|
||||||
cursor += rowElements;
|
int cursor = 0;
|
||||||
|
while (cursor < assets.length) {
|
||||||
|
int rowElements = min(assets.length - cursor, perRow);
|
||||||
|
|
||||||
|
final rowElement = RenderAssetGridElement(
|
||||||
|
RenderAssetGridElementType.assetRow,
|
||||||
|
date: date,
|
||||||
|
assetRow: RenderAssetGridRow(
|
||||||
|
assets.sublist(cursor, cursor + rowElements),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
elements.add(rowElement);
|
||||||
|
cursor += rowElements;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastDate = date;
|
||||||
|
} catch (e, stackTrace) {
|
||||||
|
log.severe(e, stackTrace);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
lastDate = date;
|
return RenderList(elements);
|
||||||
} catch (e, stackTrace) {
|
}
|
||||||
log.severe(e, stackTrace);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return elements;
|
static Future<RenderList> fromAssetGroups(
|
||||||
|
Map<String, List<Asset>> assetGroups,
|
||||||
|
int assetsPerRow,
|
||||||
|
) async {
|
||||||
|
// Compute only allows for one parameter. Therefore we pass all parameters in a map
|
||||||
|
return compute(
|
||||||
|
_processAssetGroupData,
|
||||||
|
_AssetGroupsToRenderListComputeParameters(
|
||||||
|
"monthly_title_text_date_format".tr(),
|
||||||
|
"daily_title_text_date".tr(),
|
||||||
|
"daily_title_text_date_year".tr(),
|
||||||
|
assetGroups,
|
||||||
|
assetsPerRow,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
class DailyTitleText extends ConsumerWidget {
|
class DailyTitleText extends ConsumerWidget {
|
||||||
const DailyTitleText({
|
const DailyTitleText({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.isoDate,
|
required this.text,
|
||||||
required this.multiselectEnabled,
|
required this.multiselectEnabled,
|
||||||
required this.onSelect,
|
required this.onSelect,
|
||||||
required this.onDeselect,
|
required this.onDeselect,
|
||||||
required this.selected,
|
required this.selected,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
final String isoDate;
|
final String text;
|
||||||
final bool multiselectEnabled;
|
final bool multiselectEnabled;
|
||||||
final Function onSelect;
|
final Function onSelect;
|
||||||
final Function onDeselect;
|
final Function onDeselect;
|
||||||
@@ -20,13 +20,7 @@ class DailyTitleText extends ConsumerWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
var currentYear = DateTime.now().year;
|
|
||||||
var groupYear = DateTime.parse(isoDate).year;
|
|
||||||
var formatDateTemplate = currentYear == groupYear
|
|
||||||
? "daily_title_text_date".tr()
|
|
||||||
: "daily_title_text_date_year".tr();
|
|
||||||
var dateText =
|
|
||||||
DateFormat(formatDateTemplate).format(DateTime.parse(isoDate));
|
|
||||||
|
|
||||||
void handleTitleIconClick() {
|
void handleTitleIconClick() {
|
||||||
if (selected) {
|
if (selected) {
|
||||||
@@ -46,7 +40,7 @@ class DailyTitleText extends ConsumerWidget {
|
|||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
dateText,
|
text,
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
|
|||||||
@@ -24,22 +24,10 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
bool _scrolling = false;
|
bool _scrolling = false;
|
||||||
final Set<String> _selectedAssets = HashSet();
|
final Set<String> _selectedAssets = HashSet();
|
||||||
|
|
||||||
List<Asset> get _assets {
|
|
||||||
return widget.renderList
|
|
||||||
.map((e) {
|
|
||||||
if (e.type == RenderAssetGridElementType.assetRow) {
|
|
||||||
return e.assetRow!.assets;
|
|
||||||
} else {
|
|
||||||
return List<Asset>.empty();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.flattened
|
|
||||||
.toList();
|
|
||||||
}
|
|
||||||
|
|
||||||
Set<Asset> _getSelectedAssets() {
|
Set<Asset> _getSelectedAssets() {
|
||||||
return _selectedAssets
|
return _selectedAssets
|
||||||
.map((e) => _assets.firstWhereOrNull((a) => a.id == e))
|
.map((e) => widget.allAssets.firstWhereOrNull((a) => a.id == e))
|
||||||
.whereNotNull()
|
.whereNotNull()
|
||||||
.toSet();
|
.toSet();
|
||||||
}
|
}
|
||||||
@@ -95,9 +83,9 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
}
|
}
|
||||||
return ThumbnailImage(
|
return ThumbnailImage(
|
||||||
asset: asset,
|
asset: asset,
|
||||||
assetList: _assets,
|
assetList: widget.allAssets,
|
||||||
multiselectEnabled: widget.selectionActive,
|
multiselectEnabled: widget.selectionActive,
|
||||||
isSelected: _selectedAssets.contains(asset.id),
|
isSelected: widget.selectionActive && _selectedAssets.contains(asset.id),
|
||||||
onSelect: () => _selectAssets([asset]),
|
onSelect: () => _selectAssets([asset]),
|
||||||
onDeselect: () => _deselectAssets([asset]),
|
onDeselect: () => _deselectAssets([asset]),
|
||||||
useGrayBoxPlaceholder: true,
|
useGrayBoxPlaceholder: true,
|
||||||
@@ -137,7 +125,7 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
List<Asset> assets,
|
List<Asset> assets,
|
||||||
) {
|
) {
|
||||||
return DailyTitleText(
|
return DailyTitleText(
|
||||||
isoDate: title,
|
text: title,
|
||||||
multiselectEnabled: widget.selectionActive,
|
multiselectEnabled: widget.selectionActive,
|
||||||
onSelect: () => _selectAssets(assets),
|
onSelect: () => _selectAssets(assets),
|
||||||
onDeselect: () => _deselectAssets(assets),
|
onDeselect: () => _deselectAssets(assets),
|
||||||
@@ -146,14 +134,11 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildMonthTitle(BuildContext context, String title) {
|
Widget _buildMonthTitle(BuildContext context, String title) {
|
||||||
var monthTitleText = DateFormat("monthly_title_text_date_format".tr())
|
|
||||||
.format(DateTime.parse(title));
|
|
||||||
|
|
||||||
return Padding(
|
return Padding(
|
||||||
key: Key("month-$title"),
|
key: Key("month-$title"),
|
||||||
padding: const EdgeInsets.only(left: 12.0, top: 32),
|
padding: const EdgeInsets.only(left: 12.0, top: 32),
|
||||||
child: Text(
|
child: Text(
|
||||||
monthTitleText,
|
title,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 26,
|
fontSize: 26,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
@@ -164,7 +149,7 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _itemBuilder(BuildContext c, int position) {
|
Widget _itemBuilder(BuildContext c, int position) {
|
||||||
final item = widget.renderList[position];
|
final item = widget.renderList.elements[position];
|
||||||
|
|
||||||
if (item.type == RenderAssetGridElementType.dayTitle) {
|
if (item.type == RenderAssetGridElementType.dayTitle) {
|
||||||
return _buildTitle(c, item.title!, item.relatedAssetList!);
|
return _buildTitle(c, item.title!, item.relatedAssetList!);
|
||||||
@@ -178,7 +163,7 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Text _labelBuilder(int pos) {
|
Text _labelBuilder(int pos) {
|
||||||
final date = widget.renderList[pos].date;
|
final date = widget.renderList.elements[pos].date;
|
||||||
return Text(
|
return Text(
|
||||||
DateFormat.yMMMd().format(date),
|
DateFormat.yMMMd().format(date),
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
@@ -196,7 +181,7 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildAssetGrid() {
|
Widget _buildAssetGrid() {
|
||||||
final useDragScrolling = _assets.length >= 20;
|
final useDragScrolling = widget.allAssets.length >= 20;
|
||||||
|
|
||||||
void dragScrolling(bool active) {
|
void dragScrolling(bool active) {
|
||||||
setState(() {
|
setState(() {
|
||||||
@@ -208,7 +193,8 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
itemBuilder: _itemBuilder,
|
itemBuilder: _itemBuilder,
|
||||||
itemPositionsListener: _itemPositionsListener,
|
itemPositionsListener: _itemPositionsListener,
|
||||||
itemScrollController: _itemScrollController,
|
itemScrollController: _itemScrollController,
|
||||||
itemCount: widget.renderList.length,
|
itemCount: widget.renderList.elements.length,
|
||||||
|
addRepaintBoundaries: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!useDragScrolling) {
|
if (!useDragScrolling) {
|
||||||
@@ -250,16 +236,18 @@ class ImmichAssetGridState extends State<ImmichAssetGrid> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ImmichAssetGrid extends StatefulWidget {
|
class ImmichAssetGrid extends StatefulWidget {
|
||||||
final List<RenderAssetGridElement> renderList;
|
final RenderList renderList;
|
||||||
final int assetsPerRow;
|
final int assetsPerRow;
|
||||||
final double margin;
|
final double margin;
|
||||||
final bool showStorageIndicator;
|
final bool showStorageIndicator;
|
||||||
final ImmichAssetGridSelectionListener? listener;
|
final ImmichAssetGridSelectionListener? listener;
|
||||||
final bool selectionActive;
|
final bool selectionActive;
|
||||||
|
final List<Asset> allAssets;
|
||||||
|
|
||||||
const ImmichAssetGrid({
|
const ImmichAssetGrid({
|
||||||
super.key,
|
super.key,
|
||||||
required this.renderList,
|
required this.renderList,
|
||||||
|
required this.allAssets,
|
||||||
required this.assetsPerRow,
|
required this.assetsPerRow,
|
||||||
required this.showStorageIndicator,
|
required this.showStorageIndicator,
|
||||||
this.listener,
|
this.listener,
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:hive/hive.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/constants/hive_box.dart';
|
import 'package:immich_mobile/constants/hive_box.dart';
|
||||||
import 'package:immich_mobile/modules/home/ui/delete_diaglog.dart';
|
import 'package:immich_mobile/modules/home/ui/delete_diaglog.dart';
|
||||||
|
import 'package:immich_mobile/shared/ui/drag_sheet.dart';
|
||||||
import 'package:immich_mobile/utils/image_url_builder.dart';
|
import 'package:immich_mobile/utils/image_url_builder.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
@@ -200,53 +201,3 @@ class AddToAlbumTitleRow extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CustomDraggingHandle extends StatelessWidget {
|
|
||||||
const CustomDraggingHandle({super.key});
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Container(
|
|
||||||
height: 5,
|
|
||||||
width: 30,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Colors.grey[500],
|
|
||||||
borderRadius: BorderRadius.circular(16),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ControlBoxButton extends StatelessWidget {
|
|
||||||
const ControlBoxButton({
|
|
||||||
Key? key,
|
|
||||||
required this.label,
|
|
||||||
required this.iconData,
|
|
||||||
required this.onPressed,
|
|
||||||
}) : super(key: key);
|
|
||||||
|
|
||||||
final String label;
|
|
||||||
final IconData iconData;
|
|
||||||
final Function onPressed;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return MaterialButton(
|
|
||||||
padding: const EdgeInsets.all(10),
|
|
||||||
shape: const CircleBorder(),
|
|
||||||
onPressed: () => onPressed(),
|
|
||||||
child: Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Icon(iconData, size: 24),
|
|
||||||
const SizedBox(height: 6),
|
|
||||||
Text(
|
|
||||||
label,
|
|
||||||
style: const TextStyle(fontSize: 12.0),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import 'package:fluttertoast/fluttertoast.dart';
|
|||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/modules/album/providers/album.provider.dart';
|
import 'package:immich_mobile/modules/album/providers/album.provider.dart';
|
||||||
import 'package:immich_mobile/modules/album/services/album.service.dart';
|
import 'package:immich_mobile/modules/album/services/album.service.dart';
|
||||||
import 'package:immich_mobile/modules/home/providers/home_page_render_list_provider.dart';
|
|
||||||
import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
|
import 'package:immich_mobile/modules/home/providers/multiselect.provider.dart';
|
||||||
import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
|
import 'package:immich_mobile/modules/home/ui/asset_grid/immich_asset_grid.dart';
|
||||||
import 'package:immich_mobile/modules/home/ui/control_bottom_app_bar.dart';
|
import 'package:immich_mobile/modules/home/ui/control_bottom_app_bar.dart';
|
||||||
@@ -32,7 +31,6 @@ class HomePage extends HookConsumerWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final appSettingService = ref.watch(appSettingsServiceProvider);
|
final appSettingService = ref.watch(appSettingsServiceProvider);
|
||||||
var renderList = ref.watch(renderListProvider);
|
|
||||||
final multiselectEnabled = ref.watch(multiselectProvider.notifier);
|
final multiselectEnabled = ref.watch(multiselectProvider.notifier);
|
||||||
final selectionEnabledHook = useState(false);
|
final selectionEnabledHook = useState(false);
|
||||||
|
|
||||||
@@ -212,10 +210,12 @@ class HomePage extends HookConsumerWidget {
|
|||||||
top: selectionEnabledHook.value ? 0 : 60,
|
top: selectionEnabledHook.value ? 0 : 60,
|
||||||
bottom: 0.0,
|
bottom: 0.0,
|
||||||
),
|
),
|
||||||
child: ref.watch(assetProvider).isEmpty
|
child: ref.watch(assetProvider).renderList == null ||
|
||||||
|
ref.watch(assetProvider).allAssets.isEmpty
|
||||||
? buildLoadingIndicator()
|
? buildLoadingIndicator()
|
||||||
: ImmichAssetGrid(
|
: ImmichAssetGrid(
|
||||||
renderList: renderList,
|
renderList: ref.watch(assetProvider).renderList!,
|
||||||
|
allAssets: ref.watch(assetProvider).allAssets,
|
||||||
assetsPerRow: appSettingService
|
assetsPerRow: appSettingService
|
||||||
.getSetting(AppSettingsEnum.tilesPerRow),
|
.getSetting(AppSettingsEnum.tilesPerRow),
|
||||||
showStorageIndicator: appSettingService
|
showStorageIndicator: appSettingService
|
||||||
|
|||||||
@@ -70,11 +70,11 @@ final searchResultGroupByDateTimeProvider = StateProvider((ref) {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
final searchRenderListProvider = StateProvider((ref) {
|
final searchRenderListProvider = FutureProvider((ref) {
|
||||||
var assetGroups = ref.watch(searchResultGroupByDateTimeProvider);
|
var assetGroups = ref.watch(searchResultGroupByDateTimeProvider);
|
||||||
|
|
||||||
var settings = ref.watch(appSettingsServiceProvider);
|
var settings = ref.watch(appSettingsServiceProvider);
|
||||||
final assetsPerRow = settings.getSetting(AppSettingsEnum.tilesPerRow);
|
final assetsPerRow = settings.getSetting(AppSettingsEnum.tilesPerRow);
|
||||||
|
|
||||||
return assetGroupsToRenderList(assetGroups, assetsPerRow);
|
return RenderList.fromAssetGroups(assetGroups, assetsPerRow);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ class SearchResultPage extends HookConsumerWidget {
|
|||||||
buildSearchResult() {
|
buildSearchResult() {
|
||||||
var searchResultPageState = ref.watch(searchResultPageProvider);
|
var searchResultPageState = ref.watch(searchResultPageProvider);
|
||||||
var searchResultRenderList = ref.watch(searchRenderListProvider);
|
var searchResultRenderList = ref.watch(searchRenderListProvider);
|
||||||
|
var allSearchAssets = ref.watch(searchResultPageProvider).searchResult;
|
||||||
|
|
||||||
var settings = ref.watch(appSettingsServiceProvider);
|
var settings = ref.watch(appSettingsServiceProvider);
|
||||||
final assetsPerRow = settings.getSetting(AppSettingsEnum.tilesPerRow);
|
final assetsPerRow = settings.getSetting(AppSettingsEnum.tilesPerRow);
|
||||||
@@ -126,10 +127,21 @@ class SearchResultPage extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (searchResultPageState.isSuccess) {
|
if (searchResultPageState.isSuccess) {
|
||||||
return ImmichAssetGrid(
|
return searchResultRenderList.when(
|
||||||
renderList: searchResultRenderList,
|
data: (result) {
|
||||||
assetsPerRow: assetsPerRow,
|
return ImmichAssetGrid(
|
||||||
showStorageIndicator: showStorageIndicator,
|
allAssets: allSearchAssets,
|
||||||
|
renderList: result,
|
||||||
|
assetsPerRow: assetsPerRow,
|
||||||
|
showStorageIndicator: showStorageIndicator,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
error: (err, stack) {
|
||||||
|
return Text("$err");
|
||||||
|
},
|
||||||
|
loading: () {
|
||||||
|
return const CircularProgressIndicator();
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class StorageIndicator extends HookConsumerWidget {
|
|||||||
appSettingService.setSetting(AppSettingsEnum.storageIndicator, value);
|
appSettingService.setSetting(AppSettingsEnum.storageIndicator, value);
|
||||||
showStorageIndicator.value = value;
|
showStorageIndicator.value = value;
|
||||||
|
|
||||||
ref.invalidate(assetGroupByDateTimeProvider);
|
ref.invalidate(assetProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(
|
useEffect(
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class TilesPerRow extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void sliderChangedEnd(double _) {
|
void sliderChangedEnd(double _) {
|
||||||
ref.invalidate(assetGroupByDateTimeProvider);
|
ref.invalidate(assetProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(
|
useEffect(
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:immich_mobile/constants/hive_box.dart';
|
import 'package:immich_mobile/constants/hive_box.dart';
|
||||||
import 'package:immich_mobile/modules/home/services/asset.service.dart';
|
import 'package:immich_mobile/modules/home/services/asset.service.dart';
|
||||||
import 'package:immich_mobile/modules/home/services/asset_cache.service.dart';
|
import 'package:immich_mobile/modules/home/services/asset_cache.service.dart';
|
||||||
|
import 'package:immich_mobile/modules/home/ui/asset_grid/asset_grid_data_structure.dart';
|
||||||
|
import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';
|
||||||
|
import 'package:immich_mobile/modules/settings/services/app_settings.service.dart';
|
||||||
import 'package:immich_mobile/shared/models/asset.dart';
|
import 'package:immich_mobile/shared/models/asset.dart';
|
||||||
import 'package:immich_mobile/shared/services/device_info.service.dart';
|
import 'package:immich_mobile/shared/services/device_info.service.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
@@ -14,18 +18,79 @@ import 'package:logging/logging.dart';
|
|||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
import 'package:photo_manager/photo_manager.dart';
|
import 'package:photo_manager/photo_manager.dart';
|
||||||
|
|
||||||
class AssetNotifier extends StateNotifier<List<Asset>> {
|
class AssetsState {
|
||||||
|
final List<Asset> allAssets;
|
||||||
|
final RenderList? renderList;
|
||||||
|
|
||||||
|
AssetsState(this.allAssets, {this.renderList});
|
||||||
|
|
||||||
|
Future<AssetsState> withRenderDataStructure(int groupSize) async {
|
||||||
|
return AssetsState(
|
||||||
|
allAssets,
|
||||||
|
renderList:
|
||||||
|
await RenderList.fromAssetGroups(await _groupByDate(), groupSize),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetsState withAdditionalAssets(List<Asset> toAdd) {
|
||||||
|
return AssetsState([...allAssets, ...toAdd]);
|
||||||
|
}
|
||||||
|
|
||||||
|
_groupByDate() async {
|
||||||
|
sortCompare(List<Asset> assets) {
|
||||||
|
assets.sortByCompare<DateTime>(
|
||||||
|
(e) => e.createdAt,
|
||||||
|
(a, b) => b.compareTo(a),
|
||||||
|
);
|
||||||
|
return assets.groupListsBy(
|
||||||
|
(element) => DateFormat('y-MM-dd').format(element.createdAt.toLocal()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return await compute(sortCompare, allAssets.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
static fromAssetList(List<Asset> assets) {
|
||||||
|
return AssetsState(assets);
|
||||||
|
}
|
||||||
|
|
||||||
|
static empty() {
|
||||||
|
return AssetsState([]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CombineAssetsComputeParameters {
|
||||||
|
final Iterable<Asset> local;
|
||||||
|
final Iterable<Asset> remote;
|
||||||
|
final String deviceId;
|
||||||
|
|
||||||
|
_CombineAssetsComputeParameters(this.local, this.remote, this.deviceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssetNotifier extends StateNotifier<AssetsState> {
|
||||||
final AssetService _assetService;
|
final AssetService _assetService;
|
||||||
final AssetCacheService _assetCacheService;
|
final AssetCacheService _assetCacheService;
|
||||||
|
final AppSettingsService _settingsService;
|
||||||
final log = Logger('AssetNotifier');
|
final log = Logger('AssetNotifier');
|
||||||
final DeviceInfoService _deviceInfoService = DeviceInfoService();
|
final DeviceInfoService _deviceInfoService = DeviceInfoService();
|
||||||
bool _getAllAssetInProgress = false;
|
bool _getAllAssetInProgress = false;
|
||||||
bool _deleteInProgress = false;
|
bool _deleteInProgress = false;
|
||||||
|
|
||||||
AssetNotifier(this._assetService, this._assetCacheService) : super([]);
|
AssetNotifier(
|
||||||
|
this._assetService,
|
||||||
|
this._assetCacheService,
|
||||||
|
this._settingsService,
|
||||||
|
) : super(AssetsState.fromAssetList([]));
|
||||||
|
|
||||||
_cacheState() {
|
_updateAssetsState(List<Asset> newAssetList, {bool cache = true}) async {
|
||||||
_assetCacheService.put(state);
|
if (cache) {
|
||||||
|
_assetCacheService.put(newAssetList);
|
||||||
|
}
|
||||||
|
|
||||||
|
state =
|
||||||
|
await AssetsState.fromAssetList(newAssetList).withRenderDataStructure(
|
||||||
|
_settingsService.getSetting(AppSettingsEnum.tilesPerRow),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getAllAsset() async {
|
getAllAsset() async {
|
||||||
@@ -43,17 +108,19 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
|
|||||||
final remoteTask = _assetService.getRemoteAssets(
|
final remoteTask = _assetService.getRemoteAssets(
|
||||||
etag: isCacheValid ? box.get(assetEtagKey) : null,
|
etag: isCacheValid ? box.get(assetEtagKey) : null,
|
||||||
);
|
);
|
||||||
if (isCacheValid && state.isEmpty) {
|
if (isCacheValid && state.allAssets.isEmpty) {
|
||||||
state = await _assetCacheService.get();
|
await _updateAssetsState(await _assetCacheService.get(), cache: false);
|
||||||
log.info(
|
log.info(
|
||||||
"Reading assets from cache: ${stopwatch.elapsedMilliseconds}ms",
|
"Reading assets ${state.allAssets.length} from cache: ${stopwatch.elapsedMilliseconds}ms",
|
||||||
);
|
);
|
||||||
stopwatch.reset();
|
stopwatch.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
int remoteBegin = state.indexWhere((a) => a.isRemote);
|
int remoteBegin = state.allAssets.indexWhere((a) => a.isRemote);
|
||||||
remoteBegin = remoteBegin == -1 ? state.length : remoteBegin;
|
remoteBegin = remoteBegin == -1 ? state.allAssets.length : remoteBegin;
|
||||||
final List<Asset> currentLocal = state.slice(0, remoteBegin);
|
|
||||||
|
final List<Asset> currentLocal = state.allAssets.slice(0, remoteBegin);
|
||||||
|
|
||||||
final Pair<List<Asset>?, String?> remoteResult = await remoteTask;
|
final Pair<List<Asset>?, String?> remoteResult = await remoteTask;
|
||||||
List<Asset>? newRemote = remoteResult.first;
|
List<Asset>? newRemote = remoteResult.first;
|
||||||
List<Asset>? newLocal = await localTask;
|
List<Asset>? newLocal = await localTask;
|
||||||
@@ -64,27 +131,32 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
|
|||||||
log.info("state is already up-to-date");
|
log.info("state is already up-to-date");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newRemote ??= state.slice(remoteBegin);
|
newRemote ??= state.allAssets.slice(remoteBegin);
|
||||||
newLocal ??= [];
|
newLocal ??= [];
|
||||||
state = _combineLocalAndRemoteAssets(local: newLocal, remote: newRemote);
|
|
||||||
|
final combinedAssets = await _combineLocalAndRemoteAssets(
|
||||||
|
local: newLocal,
|
||||||
|
remote: newRemote,
|
||||||
|
);
|
||||||
|
await _updateAssetsState(combinedAssets);
|
||||||
|
|
||||||
log.info("Combining assets: ${stopwatch.elapsedMilliseconds}ms");
|
log.info("Combining assets: ${stopwatch.elapsedMilliseconds}ms");
|
||||||
|
|
||||||
stopwatch.reset();
|
|
||||||
_cacheState();
|
|
||||||
box.put(assetEtagKey, remoteResult.second);
|
box.put(assetEtagKey, remoteResult.second);
|
||||||
log.info("Store assets in cache: ${stopwatch.elapsedMilliseconds}ms");
|
|
||||||
} finally {
|
} finally {
|
||||||
_getAllAssetInProgress = false;
|
_getAllAssetInProgress = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Asset> _combineLocalAndRemoteAssets({
|
static Future<List<Asset>> _computeCombine(
|
||||||
required Iterable<Asset> local,
|
_CombineAssetsComputeParameters data,
|
||||||
required List<Asset> remote,
|
) async {
|
||||||
}) {
|
var local = data.local;
|
||||||
|
var remote = data.remote;
|
||||||
|
final deviceId = data.deviceId;
|
||||||
|
|
||||||
final List<Asset> assets = [];
|
final List<Asset> assets = [];
|
||||||
if (remote.isNotEmpty && local.isNotEmpty) {
|
if (remote.isNotEmpty && local.isNotEmpty) {
|
||||||
final String deviceId = Hive.box(userInfoBox).get(deviceIdKey);
|
|
||||||
final Set<String> existingIds = remote
|
final Set<String> existingIds = remote
|
||||||
.where((e) => e.deviceId == deviceId)
|
.where((e) => e.deviceId == deviceId)
|
||||||
.map((e) => e.deviceAssetId)
|
.map((e) => e.deviceAssetId)
|
||||||
@@ -97,31 +169,40 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
|
|||||||
return assets;
|
return assets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<List<Asset>> _combineLocalAndRemoteAssets({
|
||||||
|
required Iterable<Asset> local,
|
||||||
|
required List<Asset> remote,
|
||||||
|
}) async {
|
||||||
|
final String deviceId = Hive.box(userInfoBox).get(deviceIdKey);
|
||||||
|
return await compute(
|
||||||
|
_computeCombine,
|
||||||
|
_CombineAssetsComputeParameters(local, remote, deviceId),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
clearAllAsset() {
|
clearAllAsset() {
|
||||||
state = [];
|
_updateAssetsState([]);
|
||||||
_cacheState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onNewAssetUploaded(AssetResponseDto newAsset) {
|
onNewAssetUploaded(AssetResponseDto newAsset) {
|
||||||
final int i = state.indexWhere(
|
final int i = state.allAssets.indexWhere(
|
||||||
(a) =>
|
(a) =>
|
||||||
a.isRemote ||
|
a.isRemote ||
|
||||||
(a.id == newAsset.deviceAssetId && a.deviceId == newAsset.deviceId),
|
(a.id == newAsset.deviceAssetId && a.deviceId == newAsset.deviceId),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (i == -1 || state[i].deviceAssetId != newAsset.deviceAssetId) {
|
if (i == -1 || state.allAssets[i].deviceAssetId != newAsset.deviceAssetId) {
|
||||||
state = [...state, Asset.remote(newAsset)];
|
_updateAssetsState([...state.allAssets, Asset.remote(newAsset)]);
|
||||||
} else {
|
} else {
|
||||||
// order is important to keep all local-only assets at the beginning!
|
// order is important to keep all local-only assets at the beginning!
|
||||||
state = [
|
_updateAssetsState([
|
||||||
...state.slice(0, i),
|
...state.allAssets.slice(0, i),
|
||||||
...state.slice(i + 1),
|
...state.allAssets.slice(i + 1),
|
||||||
Asset.remote(newAsset),
|
Asset.remote(newAsset),
|
||||||
];
|
]);
|
||||||
// TODO here is a place to unify local/remote assets by replacing the
|
// TODO here is a place to unify local/remote assets by replacing the
|
||||||
// local-only asset in the state with a local&remote asset
|
// local-only asset in the state with a local&remote asset
|
||||||
}
|
}
|
||||||
_cacheState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteAssets(Set<Asset> deleteAssets) async {
|
deleteAssets(Set<Asset> deleteAssets) async {
|
||||||
@@ -133,8 +214,9 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
|
|||||||
deleted.addAll(localDeleted);
|
deleted.addAll(localDeleted);
|
||||||
deleted.addAll(remoteDeleted);
|
deleted.addAll(remoteDeleted);
|
||||||
if (deleted.isNotEmpty) {
|
if (deleted.isNotEmpty) {
|
||||||
state = state.where((a) => !deleted.contains(a.id)).toList();
|
_updateAssetsState(
|
||||||
_cacheState();
|
state.allAssets.where((a) => !deleted.contains(a.id)).toList(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
_deleteInProgress = false;
|
_deleteInProgress = false;
|
||||||
@@ -180,23 +262,11 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final assetProvider = StateNotifierProvider<AssetNotifier, List<Asset>>((ref) {
|
final assetProvider = StateNotifierProvider<AssetNotifier, AssetsState>((ref) {
|
||||||
return AssetNotifier(
|
return AssetNotifier(
|
||||||
ref.watch(assetServiceProvider),
|
ref.watch(assetServiceProvider),
|
||||||
ref.watch(assetCacheServiceProvider),
|
ref.watch(assetCacheServiceProvider),
|
||||||
);
|
ref.watch(appSettingsServiceProvider),
|
||||||
});
|
|
||||||
|
|
||||||
final assetGroupByDateTimeProvider = StateProvider((ref) {
|
|
||||||
final assets = ref.watch(assetProvider).toList();
|
|
||||||
// `toList()` ist needed to make a copy as to NOT sort the original list/state
|
|
||||||
|
|
||||||
assets.sortByCompare<DateTime>(
|
|
||||||
(e) => e.createdAt,
|
|
||||||
(a, b) => b.compareTo(a),
|
|
||||||
);
|
|
||||||
return assets.groupListsBy(
|
|
||||||
(element) => DateFormat('y-MM-dd').format(element.createdAt.toLocal()),
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -204,7 +274,8 @@ final assetGroupByMonthYearProvider = StateProvider((ref) {
|
|||||||
// TODO: remove `where` once temporary workaround is no longer needed (to only
|
// TODO: remove `where` once temporary workaround is no longer needed (to only
|
||||||
// allow remote assets to be added to album). Keep `toList()` as to NOT sort
|
// allow remote assets to be added to album). Keep `toList()` as to NOT sort
|
||||||
// the original list/state
|
// the original list/state
|
||||||
final assets = ref.watch(assetProvider).where((e) => e.isRemote).toList();
|
final assets =
|
||||||
|
ref.watch(assetProvider).allAssets.where((e) => e.isRemote).toList();
|
||||||
|
|
||||||
assets.sortByCompare<DateTime>(
|
assets.sortByCompare<DateTime>(
|
||||||
(e) => e.createdAt,
|
(e) => e.createdAt,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
abstract class JsonCache<T> {
|
abstract class JsonCache<T> {
|
||||||
@@ -31,8 +32,13 @@ abstract class JsonCache<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<String> _computeEncodeJson(dynamic toEncode) async {
|
||||||
|
return json.encode(toEncode);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> putRawData(dynamic data) async {
|
Future<void> putRawData(dynamic data) async {
|
||||||
final jsonString = json.encode(data);
|
final jsonString = await compute(_computeEncodeJson, data);
|
||||||
|
|
||||||
final file = await _getCacheFile();
|
final file = await _getCacheFile();
|
||||||
|
|
||||||
if (!await file.exists()) {
|
if (!await file.exists()) {
|
||||||
@@ -42,10 +48,15 @@ abstract class JsonCache<T> {
|
|||||||
await file.writeAsString(jsonString);
|
await file.writeAsString(jsonString);
|
||||||
}
|
}
|
||||||
|
|
||||||
dynamic readRawData() async {
|
static Future<dynamic> _computeDecodeJson(String jsonString) async {
|
||||||
|
return json.decode(jsonString);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<dynamic> readRawData() async {
|
||||||
final file = await _getCacheFile();
|
final file = await _getCacheFile();
|
||||||
final data = await file.readAsString();
|
final data = await file.readAsString();
|
||||||
return json.decode(data);
|
|
||||||
|
return await compute(_computeDecodeJson, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void put(T data);
|
void put(T data);
|
||||||
|
|||||||
51
mobile/lib/shared/ui/drag_sheet.dart
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class CustomDraggingHandle extends StatelessWidget {
|
||||||
|
const CustomDraggingHandle({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
height: 5,
|
||||||
|
width: 30,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.grey[500],
|
||||||
|
borderRadius: BorderRadius.circular(16),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ControlBoxButton extends StatelessWidget {
|
||||||
|
const ControlBoxButton({
|
||||||
|
Key? key,
|
||||||
|
required this.label,
|
||||||
|
required this.iconData,
|
||||||
|
required this.onPressed,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
final String label;
|
||||||
|
final IconData iconData;
|
||||||
|
final Function onPressed;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return MaterialButton(
|
||||||
|
padding: const EdgeInsets.all(10),
|
||||||
|
shape: const CircleBorder(),
|
||||||
|
onPressed: () => onPressed(),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(iconData, size: 24),
|
||||||
|
const SizedBox(height: 6),
|
||||||
|
Text(
|
||||||
|
label,
|
||||||
|
style: const TextStyle(fontSize: 12.0),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
42
mobile/openapi/.openapi-generator/FILES
generated
@@ -3,6 +3,11 @@
|
|||||||
.travis.yml
|
.travis.yml
|
||||||
README.md
|
README.md
|
||||||
analysis_options.yaml
|
analysis_options.yaml
|
||||||
|
doc/APIKeyApi.md
|
||||||
|
doc/APIKeyCreateDto.md
|
||||||
|
doc/APIKeyCreateResponseDto.md
|
||||||
|
doc/APIKeyResponseDto.md
|
||||||
|
doc/APIKeyUpdateDto.md
|
||||||
doc/AddAssetsDto.md
|
doc/AddAssetsDto.md
|
||||||
doc/AddAssetsResponseDto.md
|
doc/AddAssetsResponseDto.md
|
||||||
doc/AddUsersDto.md
|
doc/AddUsersDto.md
|
||||||
@@ -25,6 +30,8 @@ doc/CheckDuplicateAssetResponseDto.md
|
|||||||
doc/CheckExistingAssetsDto.md
|
doc/CheckExistingAssetsDto.md
|
||||||
doc/CheckExistingAssetsResponseDto.md
|
doc/CheckExistingAssetsResponseDto.md
|
||||||
doc/CreateAlbumDto.md
|
doc/CreateAlbumDto.md
|
||||||
|
doc/CreateAlbumShareLinkDto.md
|
||||||
|
doc/CreateAssetsShareLinkDto.md
|
||||||
doc/CreateProfileImageResponseDto.md
|
doc/CreateProfileImageResponseDto.md
|
||||||
doc/CreateTagDto.md
|
doc/CreateTagDto.md
|
||||||
doc/CreateUserDto.md
|
doc/CreateUserDto.md
|
||||||
@@ -36,6 +43,8 @@ doc/DeleteAssetStatus.md
|
|||||||
doc/DeviceInfoApi.md
|
doc/DeviceInfoApi.md
|
||||||
doc/DeviceInfoResponseDto.md
|
doc/DeviceInfoResponseDto.md
|
||||||
doc/DeviceTypeEnum.md
|
doc/DeviceTypeEnum.md
|
||||||
|
doc/DownloadFilesDto.md
|
||||||
|
doc/EditSharedLinkDto.md
|
||||||
doc/ExifResponseDto.md
|
doc/ExifResponseDto.md
|
||||||
doc/GetAssetByTimeBucketDto.md
|
doc/GetAssetByTimeBucketDto.md
|
||||||
doc/GetAssetCountByTimeBucketDto.md
|
doc/GetAssetCountByTimeBucketDto.md
|
||||||
@@ -59,12 +68,16 @@ doc/ServerInfoResponseDto.md
|
|||||||
doc/ServerPingResponse.md
|
doc/ServerPingResponse.md
|
||||||
doc/ServerStatsResponseDto.md
|
doc/ServerStatsResponseDto.md
|
||||||
doc/ServerVersionReponseDto.md
|
doc/ServerVersionReponseDto.md
|
||||||
|
doc/ShareApi.md
|
||||||
|
doc/SharedLinkResponseDto.md
|
||||||
|
doc/SharedLinkType.md
|
||||||
doc/SignUpDto.md
|
doc/SignUpDto.md
|
||||||
doc/SmartInfoResponseDto.md
|
doc/SmartInfoResponseDto.md
|
||||||
doc/SystemConfigApi.md
|
doc/SystemConfigApi.md
|
||||||
doc/SystemConfigDto.md
|
doc/SystemConfigDto.md
|
||||||
doc/SystemConfigFFmpegDto.md
|
doc/SystemConfigFFmpegDto.md
|
||||||
doc/SystemConfigOAuthDto.md
|
doc/SystemConfigOAuthDto.md
|
||||||
|
doc/SystemConfigPasswordLoginDto.md
|
||||||
doc/SystemConfigStorageTemplateDto.md
|
doc/SystemConfigStorageTemplateDto.md
|
||||||
doc/SystemConfigTemplateStorageOptionDto.md
|
doc/SystemConfigTemplateStorageOptionDto.md
|
||||||
doc/TagApi.md
|
doc/TagApi.md
|
||||||
@@ -74,6 +87,7 @@ doc/ThumbnailFormat.md
|
|||||||
doc/TimeGroupEnum.md
|
doc/TimeGroupEnum.md
|
||||||
doc/UpdateAlbumDto.md
|
doc/UpdateAlbumDto.md
|
||||||
doc/UpdateAssetDto.md
|
doc/UpdateAssetDto.md
|
||||||
|
doc/UpdateAssetsToSharedLinkDto.md
|
||||||
doc/UpdateTagDto.md
|
doc/UpdateTagDto.md
|
||||||
doc/UpdateUserDto.md
|
doc/UpdateUserDto.md
|
||||||
doc/UpsertDeviceInfoDto.md
|
doc/UpsertDeviceInfoDto.md
|
||||||
@@ -85,12 +99,14 @@ doc/ValidateAccessTokenResponseDto.md
|
|||||||
git_push.sh
|
git_push.sh
|
||||||
lib/api.dart
|
lib/api.dart
|
||||||
lib/api/album_api.dart
|
lib/api/album_api.dart
|
||||||
|
lib/api/api_key_api.dart
|
||||||
lib/api/asset_api.dart
|
lib/api/asset_api.dart
|
||||||
lib/api/authentication_api.dart
|
lib/api/authentication_api.dart
|
||||||
lib/api/device_info_api.dart
|
lib/api/device_info_api.dart
|
||||||
lib/api/job_api.dart
|
lib/api/job_api.dart
|
||||||
lib/api/o_auth_api.dart
|
lib/api/o_auth_api.dart
|
||||||
lib/api/server_info_api.dart
|
lib/api/server_info_api.dart
|
||||||
|
lib/api/share_api.dart
|
||||||
lib/api/system_config_api.dart
|
lib/api/system_config_api.dart
|
||||||
lib/api/tag_api.dart
|
lib/api/tag_api.dart
|
||||||
lib/api/user_api.dart
|
lib/api/user_api.dart
|
||||||
@@ -109,6 +125,10 @@ lib/model/admin_signup_response_dto.dart
|
|||||||
lib/model/album_count_response_dto.dart
|
lib/model/album_count_response_dto.dart
|
||||||
lib/model/album_response_dto.dart
|
lib/model/album_response_dto.dart
|
||||||
lib/model/all_job_status_response_dto.dart
|
lib/model/all_job_status_response_dto.dart
|
||||||
|
lib/model/api_key_create_dto.dart
|
||||||
|
lib/model/api_key_create_response_dto.dart
|
||||||
|
lib/model/api_key_response_dto.dart
|
||||||
|
lib/model/api_key_update_dto.dart
|
||||||
lib/model/asset_count_by_time_bucket.dart
|
lib/model/asset_count_by_time_bucket.dart
|
||||||
lib/model/asset_count_by_time_bucket_response_dto.dart
|
lib/model/asset_count_by_time_bucket_response_dto.dart
|
||||||
lib/model/asset_count_by_user_id_response_dto.dart
|
lib/model/asset_count_by_user_id_response_dto.dart
|
||||||
@@ -121,6 +141,8 @@ lib/model/check_duplicate_asset_response_dto.dart
|
|||||||
lib/model/check_existing_assets_dto.dart
|
lib/model/check_existing_assets_dto.dart
|
||||||
lib/model/check_existing_assets_response_dto.dart
|
lib/model/check_existing_assets_response_dto.dart
|
||||||
lib/model/create_album_dto.dart
|
lib/model/create_album_dto.dart
|
||||||
|
lib/model/create_album_share_link_dto.dart
|
||||||
|
lib/model/create_assets_share_link_dto.dart
|
||||||
lib/model/create_profile_image_response_dto.dart
|
lib/model/create_profile_image_response_dto.dart
|
||||||
lib/model/create_tag_dto.dart
|
lib/model/create_tag_dto.dart
|
||||||
lib/model/create_user_dto.dart
|
lib/model/create_user_dto.dart
|
||||||
@@ -131,6 +153,8 @@ lib/model/delete_asset_response_dto.dart
|
|||||||
lib/model/delete_asset_status.dart
|
lib/model/delete_asset_status.dart
|
||||||
lib/model/device_info_response_dto.dart
|
lib/model/device_info_response_dto.dart
|
||||||
lib/model/device_type_enum.dart
|
lib/model/device_type_enum.dart
|
||||||
|
lib/model/download_files_dto.dart
|
||||||
|
lib/model/edit_shared_link_dto.dart
|
||||||
lib/model/exif_response_dto.dart
|
lib/model/exif_response_dto.dart
|
||||||
lib/model/get_asset_by_time_bucket_dto.dart
|
lib/model/get_asset_by_time_bucket_dto.dart
|
||||||
lib/model/get_asset_count_by_time_bucket_dto.dart
|
lib/model/get_asset_count_by_time_bucket_dto.dart
|
||||||
@@ -151,11 +175,14 @@ lib/model/server_info_response_dto.dart
|
|||||||
lib/model/server_ping_response.dart
|
lib/model/server_ping_response.dart
|
||||||
lib/model/server_stats_response_dto.dart
|
lib/model/server_stats_response_dto.dart
|
||||||
lib/model/server_version_reponse_dto.dart
|
lib/model/server_version_reponse_dto.dart
|
||||||
|
lib/model/shared_link_response_dto.dart
|
||||||
|
lib/model/shared_link_type.dart
|
||||||
lib/model/sign_up_dto.dart
|
lib/model/sign_up_dto.dart
|
||||||
lib/model/smart_info_response_dto.dart
|
lib/model/smart_info_response_dto.dart
|
||||||
lib/model/system_config_dto.dart
|
lib/model/system_config_dto.dart
|
||||||
lib/model/system_config_f_fmpeg_dto.dart
|
lib/model/system_config_f_fmpeg_dto.dart
|
||||||
lib/model/system_config_o_auth_dto.dart
|
lib/model/system_config_o_auth_dto.dart
|
||||||
|
lib/model/system_config_password_login_dto.dart
|
||||||
lib/model/system_config_storage_template_dto.dart
|
lib/model/system_config_storage_template_dto.dart
|
||||||
lib/model/system_config_template_storage_option_dto.dart
|
lib/model/system_config_template_storage_option_dto.dart
|
||||||
lib/model/tag_response_dto.dart
|
lib/model/tag_response_dto.dart
|
||||||
@@ -164,6 +191,7 @@ lib/model/thumbnail_format.dart
|
|||||||
lib/model/time_group_enum.dart
|
lib/model/time_group_enum.dart
|
||||||
lib/model/update_album_dto.dart
|
lib/model/update_album_dto.dart
|
||||||
lib/model/update_asset_dto.dart
|
lib/model/update_asset_dto.dart
|
||||||
|
lib/model/update_assets_to_shared_link_dto.dart
|
||||||
lib/model/update_tag_dto.dart
|
lib/model/update_tag_dto.dart
|
||||||
lib/model/update_user_dto.dart
|
lib/model/update_user_dto.dart
|
||||||
lib/model/upsert_device_info_dto.dart
|
lib/model/upsert_device_info_dto.dart
|
||||||
@@ -180,6 +208,11 @@ test/album_api_test.dart
|
|||||||
test/album_count_response_dto_test.dart
|
test/album_count_response_dto_test.dart
|
||||||
test/album_response_dto_test.dart
|
test/album_response_dto_test.dart
|
||||||
test/all_job_status_response_dto_test.dart
|
test/all_job_status_response_dto_test.dart
|
||||||
|
test/api_key_api_test.dart
|
||||||
|
test/api_key_create_dto_test.dart
|
||||||
|
test/api_key_create_response_dto_test.dart
|
||||||
|
test/api_key_response_dto_test.dart
|
||||||
|
test/api_key_update_dto_test.dart
|
||||||
test/asset_api_test.dart
|
test/asset_api_test.dart
|
||||||
test/asset_count_by_time_bucket_response_dto_test.dart
|
test/asset_count_by_time_bucket_response_dto_test.dart
|
||||||
test/asset_count_by_time_bucket_test.dart
|
test/asset_count_by_time_bucket_test.dart
|
||||||
@@ -194,6 +227,8 @@ test/check_duplicate_asset_response_dto_test.dart
|
|||||||
test/check_existing_assets_dto_test.dart
|
test/check_existing_assets_dto_test.dart
|
||||||
test/check_existing_assets_response_dto_test.dart
|
test/check_existing_assets_response_dto_test.dart
|
||||||
test/create_album_dto_test.dart
|
test/create_album_dto_test.dart
|
||||||
|
test/create_album_share_link_dto_test.dart
|
||||||
|
test/create_assets_share_link_dto_test.dart
|
||||||
test/create_profile_image_response_dto_test.dart
|
test/create_profile_image_response_dto_test.dart
|
||||||
test/create_tag_dto_test.dart
|
test/create_tag_dto_test.dart
|
||||||
test/create_user_dto_test.dart
|
test/create_user_dto_test.dart
|
||||||
@@ -205,6 +240,8 @@ test/delete_asset_status_test.dart
|
|||||||
test/device_info_api_test.dart
|
test/device_info_api_test.dart
|
||||||
test/device_info_response_dto_test.dart
|
test/device_info_response_dto_test.dart
|
||||||
test/device_type_enum_test.dart
|
test/device_type_enum_test.dart
|
||||||
|
test/download_files_dto_test.dart
|
||||||
|
test/edit_shared_link_dto_test.dart
|
||||||
test/exif_response_dto_test.dart
|
test/exif_response_dto_test.dart
|
||||||
test/get_asset_by_time_bucket_dto_test.dart
|
test/get_asset_by_time_bucket_dto_test.dart
|
||||||
test/get_asset_count_by_time_bucket_dto_test.dart
|
test/get_asset_count_by_time_bucket_dto_test.dart
|
||||||
@@ -228,12 +265,16 @@ test/server_info_response_dto_test.dart
|
|||||||
test/server_ping_response_test.dart
|
test/server_ping_response_test.dart
|
||||||
test/server_stats_response_dto_test.dart
|
test/server_stats_response_dto_test.dart
|
||||||
test/server_version_reponse_dto_test.dart
|
test/server_version_reponse_dto_test.dart
|
||||||
|
test/share_api_test.dart
|
||||||
|
test/shared_link_response_dto_test.dart
|
||||||
|
test/shared_link_type_test.dart
|
||||||
test/sign_up_dto_test.dart
|
test/sign_up_dto_test.dart
|
||||||
test/smart_info_response_dto_test.dart
|
test/smart_info_response_dto_test.dart
|
||||||
test/system_config_api_test.dart
|
test/system_config_api_test.dart
|
||||||
test/system_config_dto_test.dart
|
test/system_config_dto_test.dart
|
||||||
test/system_config_f_fmpeg_dto_test.dart
|
test/system_config_f_fmpeg_dto_test.dart
|
||||||
test/system_config_o_auth_dto_test.dart
|
test/system_config_o_auth_dto_test.dart
|
||||||
|
test/system_config_password_login_dto_test.dart
|
||||||
test/system_config_storage_template_dto_test.dart
|
test/system_config_storage_template_dto_test.dart
|
||||||
test/system_config_template_storage_option_dto_test.dart
|
test/system_config_template_storage_option_dto_test.dart
|
||||||
test/tag_api_test.dart
|
test/tag_api_test.dart
|
||||||
@@ -243,6 +284,7 @@ test/thumbnail_format_test.dart
|
|||||||
test/time_group_enum_test.dart
|
test/time_group_enum_test.dart
|
||||||
test/update_album_dto_test.dart
|
test/update_album_dto_test.dart
|
||||||
test/update_asset_dto_test.dart
|
test/update_asset_dto_test.dart
|
||||||
|
test/update_assets_to_shared_link_dto_test.dart
|
||||||
test/update_tag_dto_test.dart
|
test/update_tag_dto_test.dart
|
||||||
test/update_user_dto_test.dart
|
test/update_user_dto_test.dart
|
||||||
test/upsert_device_info_dto_test.dart
|
test/upsert_device_info_dto_test.dart
|
||||||
|
|||||||
44
mobile/openapi/README.md
generated
@@ -3,7 +3,7 @@ Immich API
|
|||||||
|
|
||||||
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
||||||
|
|
||||||
- API version: 1.39.0
|
- API version: 1.41.1
|
||||||
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
@@ -39,22 +39,15 @@ Please follow the [installation procedure](#installation--usage) and then run th
|
|||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
// TODO Configure HTTP Bearer authorization: bearer
|
|
||||||
// Case 1. Use String Token
|
|
||||||
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
|
|
||||||
// Case 2. Use Function which generate token.
|
|
||||||
// String yourTokenGeneratorFunction() { ... }
|
|
||||||
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
|
|
||||||
|
|
||||||
final api_instance = AlbumApi();
|
final api_instance = APIKeyApi();
|
||||||
final albumId = albumId_example; // String |
|
final aPIKeyCreateDto = APIKeyCreateDto(); // APIKeyCreateDto |
|
||||||
final addAssetsDto = AddAssetsDto(); // AddAssetsDto |
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final result = api_instance.addAssetsToAlbum(albumId, addAssetsDto);
|
final result = api_instance.createKey(aPIKeyCreateDto);
|
||||||
print(result);
|
print(result);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print('Exception when calling AlbumApi->addAssetsToAlbum: $e\n');
|
print('Exception when calling APIKeyApi->createKey: $e\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -65,9 +58,15 @@ All URIs are relative to */api*
|
|||||||
|
|
||||||
Class | Method | HTTP request | Description
|
Class | Method | HTTP request | Description
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
|
*APIKeyApi* | [**createKey**](doc//APIKeyApi.md#createkey) | **POST** /api-key |
|
||||||
|
*APIKeyApi* | [**deleteKey**](doc//APIKeyApi.md#deletekey) | **DELETE** /api-key/{id} |
|
||||||
|
*APIKeyApi* | [**getKey**](doc//APIKeyApi.md#getkey) | **GET** /api-key/{id} |
|
||||||
|
*APIKeyApi* | [**getKeys**](doc//APIKeyApi.md#getkeys) | **GET** /api-key |
|
||||||
|
*APIKeyApi* | [**updateKey**](doc//APIKeyApi.md#updatekey) | **PUT** /api-key/{id} |
|
||||||
*AlbumApi* | [**addAssetsToAlbum**](doc//AlbumApi.md#addassetstoalbum) | **PUT** /album/{albumId}/assets |
|
*AlbumApi* | [**addAssetsToAlbum**](doc//AlbumApi.md#addassetstoalbum) | **PUT** /album/{albumId}/assets |
|
||||||
*AlbumApi* | [**addUsersToAlbum**](doc//AlbumApi.md#adduserstoalbum) | **PUT** /album/{albumId}/users |
|
*AlbumApi* | [**addUsersToAlbum**](doc//AlbumApi.md#adduserstoalbum) | **PUT** /album/{albumId}/users |
|
||||||
*AlbumApi* | [**createAlbum**](doc//AlbumApi.md#createalbum) | **POST** /album |
|
*AlbumApi* | [**createAlbum**](doc//AlbumApi.md#createalbum) | **POST** /album |
|
||||||
|
*AlbumApi* | [**createAlbumSharedLink**](doc//AlbumApi.md#createalbumsharedlink) | **POST** /album/create-shared-link |
|
||||||
*AlbumApi* | [**deleteAlbum**](doc//AlbumApi.md#deletealbum) | **DELETE** /album/{albumId} |
|
*AlbumApi* | [**deleteAlbum**](doc//AlbumApi.md#deletealbum) | **DELETE** /album/{albumId} |
|
||||||
*AlbumApi* | [**downloadArchive**](doc//AlbumApi.md#downloadarchive) | **GET** /album/{albumId}/download |
|
*AlbumApi* | [**downloadArchive**](doc//AlbumApi.md#downloadarchive) | **GET** /album/{albumId}/download |
|
||||||
*AlbumApi* | [**getAlbumCountByUserId**](doc//AlbumApi.md#getalbumcountbyuserid) | **GET** /album/count-by-user-id |
|
*AlbumApi* | [**getAlbumCountByUserId**](doc//AlbumApi.md#getalbumcountbyuserid) | **GET** /album/count-by-user-id |
|
||||||
@@ -78,8 +77,10 @@ Class | Method | HTTP request | Description
|
|||||||
*AlbumApi* | [**updateAlbumInfo**](doc//AlbumApi.md#updatealbuminfo) | **PATCH** /album/{albumId} |
|
*AlbumApi* | [**updateAlbumInfo**](doc//AlbumApi.md#updatealbuminfo) | **PATCH** /album/{albumId} |
|
||||||
*AssetApi* | [**checkDuplicateAsset**](doc//AssetApi.md#checkduplicateasset) | **POST** /asset/check |
|
*AssetApi* | [**checkDuplicateAsset**](doc//AssetApi.md#checkduplicateasset) | **POST** /asset/check |
|
||||||
*AssetApi* | [**checkExistingAssets**](doc//AssetApi.md#checkexistingassets) | **POST** /asset/exist |
|
*AssetApi* | [**checkExistingAssets**](doc//AssetApi.md#checkexistingassets) | **POST** /asset/exist |
|
||||||
|
*AssetApi* | [**createAssetsSharedLink**](doc//AssetApi.md#createassetssharedlink) | **POST** /asset/shared-link |
|
||||||
*AssetApi* | [**deleteAsset**](doc//AssetApi.md#deleteasset) | **DELETE** /asset |
|
*AssetApi* | [**deleteAsset**](doc//AssetApi.md#deleteasset) | **DELETE** /asset |
|
||||||
*AssetApi* | [**downloadFile**](doc//AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |
|
*AssetApi* | [**downloadFile**](doc//AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |
|
||||||
|
*AssetApi* | [**downloadFiles**](doc//AssetApi.md#downloadfiles) | **POST** /asset/download-files |
|
||||||
*AssetApi* | [**downloadLibrary**](doc//AssetApi.md#downloadlibrary) | **GET** /asset/download-library |
|
*AssetApi* | [**downloadLibrary**](doc//AssetApi.md#downloadlibrary) | **GET** /asset/download-library |
|
||||||
*AssetApi* | [**getAllAssets**](doc//AssetApi.md#getallassets) | **GET** /asset |
|
*AssetApi* | [**getAllAssets**](doc//AssetApi.md#getallassets) | **GET** /asset |
|
||||||
*AssetApi* | [**getAssetById**](doc//AssetApi.md#getassetbyid) | **GET** /asset/assetById/{assetId} |
|
*AssetApi* | [**getAssetById**](doc//AssetApi.md#getassetbyid) | **GET** /asset/assetById/{assetId} |
|
||||||
@@ -94,6 +95,7 @@ Class | Method | HTTP request | Description
|
|||||||
*AssetApi* | [**searchAsset**](doc//AssetApi.md#searchasset) | **POST** /asset/search |
|
*AssetApi* | [**searchAsset**](doc//AssetApi.md#searchasset) | **POST** /asset/search |
|
||||||
*AssetApi* | [**serveFile**](doc//AssetApi.md#servefile) | **GET** /asset/file/{assetId} |
|
*AssetApi* | [**serveFile**](doc//AssetApi.md#servefile) | **GET** /asset/file/{assetId} |
|
||||||
*AssetApi* | [**updateAsset**](doc//AssetApi.md#updateasset) | **PUT** /asset/{assetId} |
|
*AssetApi* | [**updateAsset**](doc//AssetApi.md#updateasset) | **PUT** /asset/{assetId} |
|
||||||
|
*AssetApi* | [**updateAssetsInSharedLink**](doc//AssetApi.md#updateassetsinsharedlink) | **PATCH** /asset/shared-link |
|
||||||
*AssetApi* | [**uploadFile**](doc//AssetApi.md#uploadfile) | **POST** /asset/upload |
|
*AssetApi* | [**uploadFile**](doc//AssetApi.md#uploadfile) | **POST** /asset/upload |
|
||||||
*AuthenticationApi* | [**adminSignUp**](doc//AuthenticationApi.md#adminsignup) | **POST** /auth/admin-sign-up |
|
*AuthenticationApi* | [**adminSignUp**](doc//AuthenticationApi.md#adminsignup) | **POST** /auth/admin-sign-up |
|
||||||
*AuthenticationApi* | [**changePassword**](doc//AuthenticationApi.md#changepassword) | **POST** /auth/change-password |
|
*AuthenticationApi* | [**changePassword**](doc//AuthenticationApi.md#changepassword) | **POST** /auth/change-password |
|
||||||
@@ -109,11 +111,17 @@ Class | Method | HTTP request | Description
|
|||||||
*OAuthApi* | [**callback**](doc//OAuthApi.md#callback) | **POST** /oauth/callback |
|
*OAuthApi* | [**callback**](doc//OAuthApi.md#callback) | **POST** /oauth/callback |
|
||||||
*OAuthApi* | [**generateConfig**](doc//OAuthApi.md#generateconfig) | **POST** /oauth/config |
|
*OAuthApi* | [**generateConfig**](doc//OAuthApi.md#generateconfig) | **POST** /oauth/config |
|
||||||
*OAuthApi* | [**link**](doc//OAuthApi.md#link) | **POST** /oauth/link |
|
*OAuthApi* | [**link**](doc//OAuthApi.md#link) | **POST** /oauth/link |
|
||||||
|
*OAuthApi* | [**mobileRedirect**](doc//OAuthApi.md#mobileredirect) | **GET** /oauth/mobile-redirect |
|
||||||
*OAuthApi* | [**unlink**](doc//OAuthApi.md#unlink) | **POST** /oauth/unlink |
|
*OAuthApi* | [**unlink**](doc//OAuthApi.md#unlink) | **POST** /oauth/unlink |
|
||||||
*ServerInfoApi* | [**getServerInfo**](doc//ServerInfoApi.md#getserverinfo) | **GET** /server-info |
|
*ServerInfoApi* | [**getServerInfo**](doc//ServerInfoApi.md#getserverinfo) | **GET** /server-info |
|
||||||
*ServerInfoApi* | [**getServerVersion**](doc//ServerInfoApi.md#getserverversion) | **GET** /server-info/version |
|
*ServerInfoApi* | [**getServerVersion**](doc//ServerInfoApi.md#getserverversion) | **GET** /server-info/version |
|
||||||
*ServerInfoApi* | [**getStats**](doc//ServerInfoApi.md#getstats) | **GET** /server-info/stats |
|
*ServerInfoApi* | [**getStats**](doc//ServerInfoApi.md#getstats) | **GET** /server-info/stats |
|
||||||
*ServerInfoApi* | [**pingServer**](doc//ServerInfoApi.md#pingserver) | **GET** /server-info/ping |
|
*ServerInfoApi* | [**pingServer**](doc//ServerInfoApi.md#pingserver) | **GET** /server-info/ping |
|
||||||
|
*ShareApi* | [**editSharedLink**](doc//ShareApi.md#editsharedlink) | **PATCH** /share/{id} |
|
||||||
|
*ShareApi* | [**getAllSharedLinks**](doc//ShareApi.md#getallsharedlinks) | **GET** /share |
|
||||||
|
*ShareApi* | [**getMySharedLink**](doc//ShareApi.md#getmysharedlink) | **GET** /share/me |
|
||||||
|
*ShareApi* | [**getSharedLinkById**](doc//ShareApi.md#getsharedlinkbyid) | **GET** /share/{id} |
|
||||||
|
*ShareApi* | [**removeSharedLink**](doc//ShareApi.md#removesharedlink) | **DELETE** /share/{id} |
|
||||||
*SystemConfigApi* | [**getConfig**](doc//SystemConfigApi.md#getconfig) | **GET** /system-config |
|
*SystemConfigApi* | [**getConfig**](doc//SystemConfigApi.md#getconfig) | **GET** /system-config |
|
||||||
*SystemConfigApi* | [**getDefaults**](doc//SystemConfigApi.md#getdefaults) | **GET** /system-config/defaults |
|
*SystemConfigApi* | [**getDefaults**](doc//SystemConfigApi.md#getdefaults) | **GET** /system-config/defaults |
|
||||||
*SystemConfigApi* | [**getStorageTemplateOptions**](doc//SystemConfigApi.md#getstoragetemplateoptions) | **GET** /system-config/storage-template-options |
|
*SystemConfigApi* | [**getStorageTemplateOptions**](doc//SystemConfigApi.md#getstoragetemplateoptions) | **GET** /system-config/storage-template-options |
|
||||||
@@ -137,6 +145,10 @@ Class | Method | HTTP request | Description
|
|||||||
|
|
||||||
## Documentation For Models
|
## Documentation For Models
|
||||||
|
|
||||||
|
- [APIKeyCreateDto](doc//APIKeyCreateDto.md)
|
||||||
|
- [APIKeyCreateResponseDto](doc//APIKeyCreateResponseDto.md)
|
||||||
|
- [APIKeyResponseDto](doc//APIKeyResponseDto.md)
|
||||||
|
- [APIKeyUpdateDto](doc//APIKeyUpdateDto.md)
|
||||||
- [AddAssetsDto](doc//AddAssetsDto.md)
|
- [AddAssetsDto](doc//AddAssetsDto.md)
|
||||||
- [AddAssetsResponseDto](doc//AddAssetsResponseDto.md)
|
- [AddAssetsResponseDto](doc//AddAssetsResponseDto.md)
|
||||||
- [AddUsersDto](doc//AddUsersDto.md)
|
- [AddUsersDto](doc//AddUsersDto.md)
|
||||||
@@ -156,6 +168,8 @@ Class | Method | HTTP request | Description
|
|||||||
- [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md)
|
- [CheckExistingAssetsDto](doc//CheckExistingAssetsDto.md)
|
||||||
- [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md)
|
- [CheckExistingAssetsResponseDto](doc//CheckExistingAssetsResponseDto.md)
|
||||||
- [CreateAlbumDto](doc//CreateAlbumDto.md)
|
- [CreateAlbumDto](doc//CreateAlbumDto.md)
|
||||||
|
- [CreateAlbumShareLinkDto](doc//CreateAlbumShareLinkDto.md)
|
||||||
|
- [CreateAssetsShareLinkDto](doc//CreateAssetsShareLinkDto.md)
|
||||||
- [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md)
|
- [CreateProfileImageResponseDto](doc//CreateProfileImageResponseDto.md)
|
||||||
- [CreateTagDto](doc//CreateTagDto.md)
|
- [CreateTagDto](doc//CreateTagDto.md)
|
||||||
- [CreateUserDto](doc//CreateUserDto.md)
|
- [CreateUserDto](doc//CreateUserDto.md)
|
||||||
@@ -166,6 +180,8 @@ Class | Method | HTTP request | Description
|
|||||||
- [DeleteAssetStatus](doc//DeleteAssetStatus.md)
|
- [DeleteAssetStatus](doc//DeleteAssetStatus.md)
|
||||||
- [DeviceInfoResponseDto](doc//DeviceInfoResponseDto.md)
|
- [DeviceInfoResponseDto](doc//DeviceInfoResponseDto.md)
|
||||||
- [DeviceTypeEnum](doc//DeviceTypeEnum.md)
|
- [DeviceTypeEnum](doc//DeviceTypeEnum.md)
|
||||||
|
- [DownloadFilesDto](doc//DownloadFilesDto.md)
|
||||||
|
- [EditSharedLinkDto](doc//EditSharedLinkDto.md)
|
||||||
- [ExifResponseDto](doc//ExifResponseDto.md)
|
- [ExifResponseDto](doc//ExifResponseDto.md)
|
||||||
- [GetAssetByTimeBucketDto](doc//GetAssetByTimeBucketDto.md)
|
- [GetAssetByTimeBucketDto](doc//GetAssetByTimeBucketDto.md)
|
||||||
- [GetAssetCountByTimeBucketDto](doc//GetAssetCountByTimeBucketDto.md)
|
- [GetAssetCountByTimeBucketDto](doc//GetAssetCountByTimeBucketDto.md)
|
||||||
@@ -186,11 +202,14 @@ Class | Method | HTTP request | Description
|
|||||||
- [ServerPingResponse](doc//ServerPingResponse.md)
|
- [ServerPingResponse](doc//ServerPingResponse.md)
|
||||||
- [ServerStatsResponseDto](doc//ServerStatsResponseDto.md)
|
- [ServerStatsResponseDto](doc//ServerStatsResponseDto.md)
|
||||||
- [ServerVersionReponseDto](doc//ServerVersionReponseDto.md)
|
- [ServerVersionReponseDto](doc//ServerVersionReponseDto.md)
|
||||||
|
- [SharedLinkResponseDto](doc//SharedLinkResponseDto.md)
|
||||||
|
- [SharedLinkType](doc//SharedLinkType.md)
|
||||||
- [SignUpDto](doc//SignUpDto.md)
|
- [SignUpDto](doc//SignUpDto.md)
|
||||||
- [SmartInfoResponseDto](doc//SmartInfoResponseDto.md)
|
- [SmartInfoResponseDto](doc//SmartInfoResponseDto.md)
|
||||||
- [SystemConfigDto](doc//SystemConfigDto.md)
|
- [SystemConfigDto](doc//SystemConfigDto.md)
|
||||||
- [SystemConfigFFmpegDto](doc//SystemConfigFFmpegDto.md)
|
- [SystemConfigFFmpegDto](doc//SystemConfigFFmpegDto.md)
|
||||||
- [SystemConfigOAuthDto](doc//SystemConfigOAuthDto.md)
|
- [SystemConfigOAuthDto](doc//SystemConfigOAuthDto.md)
|
||||||
|
- [SystemConfigPasswordLoginDto](doc//SystemConfigPasswordLoginDto.md)
|
||||||
- [SystemConfigStorageTemplateDto](doc//SystemConfigStorageTemplateDto.md)
|
- [SystemConfigStorageTemplateDto](doc//SystemConfigStorageTemplateDto.md)
|
||||||
- [SystemConfigTemplateStorageOptionDto](doc//SystemConfigTemplateStorageOptionDto.md)
|
- [SystemConfigTemplateStorageOptionDto](doc//SystemConfigTemplateStorageOptionDto.md)
|
||||||
- [TagResponseDto](doc//TagResponseDto.md)
|
- [TagResponseDto](doc//TagResponseDto.md)
|
||||||
@@ -199,6 +218,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [TimeGroupEnum](doc//TimeGroupEnum.md)
|
- [TimeGroupEnum](doc//TimeGroupEnum.md)
|
||||||
- [UpdateAlbumDto](doc//UpdateAlbumDto.md)
|
- [UpdateAlbumDto](doc//UpdateAlbumDto.md)
|
||||||
- [UpdateAssetDto](doc//UpdateAssetDto.md)
|
- [UpdateAssetDto](doc//UpdateAssetDto.md)
|
||||||
|
- [UpdateAssetsToSharedLinkDto](doc//UpdateAssetsToSharedLinkDto.md)
|
||||||
- [UpdateTagDto](doc//UpdateTagDto.md)
|
- [UpdateTagDto](doc//UpdateTagDto.md)
|
||||||
- [UpdateUserDto](doc//UpdateUserDto.md)
|
- [UpdateUserDto](doc//UpdateUserDto.md)
|
||||||
- [UpsertDeviceInfoDto](doc//UpsertDeviceInfoDto.md)
|
- [UpsertDeviceInfoDto](doc//UpsertDeviceInfoDto.md)
|
||||||
|
|||||||
230
mobile/openapi/doc/APIKeyApi.md
generated
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
# openapi.api.APIKeyApi
|
||||||
|
|
||||||
|
## Load the API package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
All URIs are relative to */api*
|
||||||
|
|
||||||
|
Method | HTTP request | Description
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
[**createKey**](APIKeyApi.md#createkey) | **POST** /api-key |
|
||||||
|
[**deleteKey**](APIKeyApi.md#deletekey) | **DELETE** /api-key/{id} |
|
||||||
|
[**getKey**](APIKeyApi.md#getkey) | **GET** /api-key/{id} |
|
||||||
|
[**getKeys**](APIKeyApi.md#getkeys) | **GET** /api-key |
|
||||||
|
[**updateKey**](APIKeyApi.md#updatekey) | **PUT** /api-key/{id} |
|
||||||
|
|
||||||
|
|
||||||
|
# **createKey**
|
||||||
|
> APIKeyCreateResponseDto createKey(aPIKeyCreateDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = APIKeyApi();
|
||||||
|
final aPIKeyCreateDto = APIKeyCreateDto(); // APIKeyCreateDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.createKey(aPIKeyCreateDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling APIKeyApi->createKey: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**aPIKeyCreateDto** | [**APIKeyCreateDto**](APIKeyCreateDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**APIKeyCreateResponseDto**](APIKeyCreateResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **deleteKey**
|
||||||
|
> deleteKey(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = APIKeyApi();
|
||||||
|
final id = 8.14; // num |
|
||||||
|
|
||||||
|
try {
|
||||||
|
api_instance.deleteKey(id);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling APIKeyApi->deleteKey: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **num**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
void (empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: Not defined
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **getKey**
|
||||||
|
> APIKeyResponseDto getKey(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = APIKeyApi();
|
||||||
|
final id = 8.14; // num |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.getKey(id);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling APIKeyApi->getKey: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **num**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**APIKeyResponseDto**](APIKeyResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **getKeys**
|
||||||
|
> List<APIKeyResponseDto> getKeys()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = APIKeyApi();
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.getKeys();
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling APIKeyApi->getKeys: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List<APIKeyResponseDto>**](APIKeyResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **updateKey**
|
||||||
|
> APIKeyResponseDto updateKey(id, aPIKeyUpdateDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = APIKeyApi();
|
||||||
|
final id = 8.14; // num |
|
||||||
|
final aPIKeyUpdateDto = APIKeyUpdateDto(); // APIKeyUpdateDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.updateKey(id, aPIKeyUpdateDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling APIKeyApi->updateKey: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **num**| |
|
||||||
|
**aPIKeyUpdateDto** | [**APIKeyUpdateDto**](APIKeyUpdateDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**APIKeyResponseDto**](APIKeyResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
15
mobile/openapi/doc/APIKeyCreateDto.md
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# openapi.model.APIKeyCreateDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**name** | **String** | | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
16
mobile/openapi/doc/APIKeyCreateResponseDto.md
generated
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# openapi.model.APIKeyCreateResponseDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**secret** | **String** | |
|
||||||
|
**apiKey** | [**APIKeyResponseDto**](APIKeyResponseDto.md) | |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
18
mobile/openapi/doc/APIKeyResponseDto.md
generated
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# openapi.model.APIKeyResponseDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**id** | **int** | |
|
||||||
|
**name** | **String** | |
|
||||||
|
**createdAt** | **String** | |
|
||||||
|
**updatedAt** | **String** | |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
15
mobile/openapi/doc/APIKeyUpdateDto.md
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# openapi.model.APIKeyUpdateDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**name** | **String** | |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
72
mobile/openapi/doc/AlbumApi.md
generated
@@ -12,6 +12,7 @@ Method | HTTP request | Description
|
|||||||
[**addAssetsToAlbum**](AlbumApi.md#addassetstoalbum) | **PUT** /album/{albumId}/assets |
|
[**addAssetsToAlbum**](AlbumApi.md#addassetstoalbum) | **PUT** /album/{albumId}/assets |
|
||||||
[**addUsersToAlbum**](AlbumApi.md#adduserstoalbum) | **PUT** /album/{albumId}/users |
|
[**addUsersToAlbum**](AlbumApi.md#adduserstoalbum) | **PUT** /album/{albumId}/users |
|
||||||
[**createAlbum**](AlbumApi.md#createalbum) | **POST** /album |
|
[**createAlbum**](AlbumApi.md#createalbum) | **POST** /album |
|
||||||
|
[**createAlbumSharedLink**](AlbumApi.md#createalbumsharedlink) | **POST** /album/create-shared-link |
|
||||||
[**deleteAlbum**](AlbumApi.md#deletealbum) | **DELETE** /album/{albumId} |
|
[**deleteAlbum**](AlbumApi.md#deletealbum) | **DELETE** /album/{albumId} |
|
||||||
[**downloadArchive**](AlbumApi.md#downloadarchive) | **GET** /album/{albumId}/download |
|
[**downloadArchive**](AlbumApi.md#downloadarchive) | **GET** /album/{albumId}/download |
|
||||||
[**getAlbumCountByUserId**](AlbumApi.md#getalbumcountbyuserid) | **GET** /album/count-by-user-id |
|
[**getAlbumCountByUserId**](AlbumApi.md#getalbumcountbyuserid) | **GET** /album/count-by-user-id |
|
||||||
@@ -27,6 +28,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -76,6 +79,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -125,6 +130,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -167,11 +174,62 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **createAlbumSharedLink**
|
||||||
|
> SharedLinkResponseDto createAlbumSharedLink(createAlbumShareLinkDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
// TODO Configure HTTP Bearer authorization: bearer
|
||||||
|
// Case 1. Use String Token
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
|
||||||
|
// Case 2. Use Function which generate token.
|
||||||
|
// String yourTokenGeneratorFunction() { ... }
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
|
||||||
|
|
||||||
|
final api_instance = AlbumApi();
|
||||||
|
final createAlbumShareLinkDto = CreateAlbumShareLinkDto(); // CreateAlbumShareLinkDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.createAlbumSharedLink(createAlbumShareLinkDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling AlbumApi->createAlbumSharedLink: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**createAlbumShareLinkDto** | [**CreateAlbumShareLinkDto**](CreateAlbumShareLinkDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**SharedLinkResponseDto**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
# **deleteAlbum**
|
# **deleteAlbum**
|
||||||
> deleteAlbum(albumId)
|
> deleteAlbum(albumId)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -218,6 +276,8 @@ void (empty response body)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -267,6 +327,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -310,6 +372,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -357,6 +421,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -406,6 +472,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -455,6 +523,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -503,6 +573,8 @@ void (empty response body)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
176
mobile/openapi/doc/AssetApi.md
generated
@@ -11,8 +11,10 @@ Method | HTTP request | Description
|
|||||||
------------- | ------------- | -------------
|
------------- | ------------- | -------------
|
||||||
[**checkDuplicateAsset**](AssetApi.md#checkduplicateasset) | **POST** /asset/check |
|
[**checkDuplicateAsset**](AssetApi.md#checkduplicateasset) | **POST** /asset/check |
|
||||||
[**checkExistingAssets**](AssetApi.md#checkexistingassets) | **POST** /asset/exist |
|
[**checkExistingAssets**](AssetApi.md#checkexistingassets) | **POST** /asset/exist |
|
||||||
|
[**createAssetsSharedLink**](AssetApi.md#createassetssharedlink) | **POST** /asset/shared-link |
|
||||||
[**deleteAsset**](AssetApi.md#deleteasset) | **DELETE** /asset |
|
[**deleteAsset**](AssetApi.md#deleteasset) | **DELETE** /asset |
|
||||||
[**downloadFile**](AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |
|
[**downloadFile**](AssetApi.md#downloadfile) | **GET** /asset/download/{assetId} |
|
||||||
|
[**downloadFiles**](AssetApi.md#downloadfiles) | **POST** /asset/download-files |
|
||||||
[**downloadLibrary**](AssetApi.md#downloadlibrary) | **GET** /asset/download-library |
|
[**downloadLibrary**](AssetApi.md#downloadlibrary) | **GET** /asset/download-library |
|
||||||
[**getAllAssets**](AssetApi.md#getallassets) | **GET** /asset |
|
[**getAllAssets**](AssetApi.md#getallassets) | **GET** /asset |
|
||||||
[**getAssetById**](AssetApi.md#getassetbyid) | **GET** /asset/assetById/{assetId} |
|
[**getAssetById**](AssetApi.md#getassetbyid) | **GET** /asset/assetById/{assetId} |
|
||||||
@@ -27,6 +29,7 @@ Method | HTTP request | Description
|
|||||||
[**searchAsset**](AssetApi.md#searchasset) | **POST** /asset/search |
|
[**searchAsset**](AssetApi.md#searchasset) | **POST** /asset/search |
|
||||||
[**serveFile**](AssetApi.md#servefile) | **GET** /asset/file/{assetId} |
|
[**serveFile**](AssetApi.md#servefile) | **GET** /asset/file/{assetId} |
|
||||||
[**updateAsset**](AssetApi.md#updateasset) | **PUT** /asset/{assetId} |
|
[**updateAsset**](AssetApi.md#updateasset) | **PUT** /asset/{assetId} |
|
||||||
|
[**updateAssetsInSharedLink**](AssetApi.md#updateassetsinsharedlink) | **PATCH** /asset/shared-link |
|
||||||
[**uploadFile**](AssetApi.md#uploadfile) | **POST** /asset/upload |
|
[**uploadFile**](AssetApi.md#uploadfile) | **POST** /asset/upload |
|
||||||
|
|
||||||
|
|
||||||
@@ -128,11 +131,62 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **createAssetsSharedLink**
|
||||||
|
> SharedLinkResponseDto createAssetsSharedLink(createAssetsShareLinkDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
// TODO Configure HTTP Bearer authorization: bearer
|
||||||
|
// Case 1. Use String Token
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
|
||||||
|
// Case 2. Use Function which generate token.
|
||||||
|
// String yourTokenGeneratorFunction() { ... }
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
|
||||||
|
|
||||||
|
final api_instance = AssetApi();
|
||||||
|
final createAssetsShareLinkDto = CreateAssetsShareLinkDto(); // CreateAssetsShareLinkDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.createAssetsSharedLink(createAssetsShareLinkDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling AssetApi->createAssetsSharedLink: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**createAssetsShareLinkDto** | [**CreateAssetsShareLinkDto**](CreateAssetsShareLinkDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**SharedLinkResponseDto**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
# **deleteAsset**
|
# **deleteAsset**
|
||||||
> List<DeleteAssetResponseDto> deleteAsset(deleteAssetDto)
|
> List<DeleteAssetResponseDto> deleteAsset(deleteAssetDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -180,6 +234,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -226,11 +282,62 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **downloadFiles**
|
||||||
|
> Object downloadFiles(downloadFilesDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
// TODO Configure HTTP Bearer authorization: bearer
|
||||||
|
// Case 1. Use String Token
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
|
||||||
|
// Case 2. Use Function which generate token.
|
||||||
|
// String yourTokenGeneratorFunction() { ... }
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
|
||||||
|
|
||||||
|
final api_instance = AssetApi();
|
||||||
|
final downloadFilesDto = DownloadFilesDto(); // DownloadFilesDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.downloadFiles(downloadFilesDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling AssetApi->downloadFiles: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**downloadFilesDto** | [**DownloadFilesDto**](DownloadFilesDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**Object**](Object.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
# **downloadLibrary**
|
# **downloadLibrary**
|
||||||
> Object downloadLibrary(skip)
|
> Object downloadLibrary(skip)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -376,6 +483,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -423,6 +532,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -470,6 +581,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -513,6 +626,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -556,6 +671,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -605,6 +722,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -648,6 +767,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -740,6 +861,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -787,6 +910,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -884,11 +1009,62 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **updateAssetsInSharedLink**
|
||||||
|
> SharedLinkResponseDto updateAssetsInSharedLink(updateAssetsToSharedLinkDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
// TODO Configure HTTP Bearer authorization: bearer
|
||||||
|
// Case 1. Use String Token
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken('YOUR_ACCESS_TOKEN');
|
||||||
|
// Case 2. Use Function which generate token.
|
||||||
|
// String yourTokenGeneratorFunction() { ... }
|
||||||
|
//defaultApiClient.getAuthentication<HttpBearerAuth>('bearer').setAccessToken(yourTokenGeneratorFunction);
|
||||||
|
|
||||||
|
final api_instance = AssetApi();
|
||||||
|
final updateAssetsToSharedLinkDto = UpdateAssetsToSharedLinkDto(); // UpdateAssetsToSharedLinkDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.updateAssetsInSharedLink(updateAssetsToSharedLinkDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling AssetApi->updateAssetsInSharedLink: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**updateAssetsToSharedLinkDto** | [**UpdateAssetsToSharedLinkDto**](UpdateAssetsToSharedLinkDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**SharedLinkResponseDto**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
[bearer](../README.md#bearer)
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
# **uploadFile**
|
# **uploadFile**
|
||||||
> AssetFileUploadResponseDto uploadFile(assetData)
|
> AssetFileUploadResponseDto uploadFile(assetData)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
10
mobile/openapi/doc/AuthenticationApi.md
generated
@@ -21,6 +21,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -62,6 +64,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -109,6 +113,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -150,6 +156,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -187,6 +195,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
18
mobile/openapi/doc/CreateAlbumShareLinkDto.md
generated
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# openapi.model.CreateAlbumShareLinkDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**albumId** | **String** | |
|
||||||
|
**expiredAt** | **String** | | [optional]
|
||||||
|
**allowUpload** | **bool** | | [optional]
|
||||||
|
**description** | **String** | | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
18
mobile/openapi/doc/CreateAssetsShareLinkDto.md
generated
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# openapi.model.CreateAssetsShareLinkDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**assetIds** | **List<String>** | | [default to const []]
|
||||||
|
**expiredAt** | **String** | | [optional]
|
||||||
|
**allowUpload** | **bool** | | [optional]
|
||||||
|
**description** | **String** | | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
2
mobile/openapi/doc/DeviceInfoApi.md
generated
@@ -117,6 +117,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
15
mobile/openapi/doc/DownloadFilesDto.md
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# openapi.model.DownloadFilesDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**assetIds** | **List<String>** | | [default to const []]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
18
mobile/openapi/doc/EditSharedLinkDto.md
generated
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# openapi.model.EditSharedLinkDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**description** | **String** | | [optional]
|
||||||
|
**expiredAt** | **String** | | [optional]
|
||||||
|
**allowUpload** | **bool** | | [optional]
|
||||||
|
**isEditExpireTime** | **bool** | | [optional]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
6
mobile/openapi/doc/JobApi.md
generated
@@ -19,6 +19,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -62,6 +64,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -109,6 +113,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
47
mobile/openapi/doc/OAuthApi.md
generated
@@ -12,6 +12,7 @@ Method | HTTP request | Description
|
|||||||
[**callback**](OAuthApi.md#callback) | **POST** /oauth/callback |
|
[**callback**](OAuthApi.md#callback) | **POST** /oauth/callback |
|
||||||
[**generateConfig**](OAuthApi.md#generateconfig) | **POST** /oauth/config |
|
[**generateConfig**](OAuthApi.md#generateconfig) | **POST** /oauth/config |
|
||||||
[**link**](OAuthApi.md#link) | **POST** /oauth/link |
|
[**link**](OAuthApi.md#link) | **POST** /oauth/link |
|
||||||
|
[**mobileRedirect**](OAuthApi.md#mobileredirect) | **GET** /oauth/mobile-redirect |
|
||||||
[**unlink**](OAuthApi.md#unlink) | **POST** /oauth/unlink |
|
[**unlink**](OAuthApi.md#unlink) | **POST** /oauth/unlink |
|
||||||
|
|
||||||
|
|
||||||
@@ -20,6 +21,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -61,6 +64,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -102,6 +107,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -138,11 +145,51 @@ No authorization required
|
|||||||
|
|
||||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **mobileRedirect**
|
||||||
|
> mobileRedirect()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = OAuthApi();
|
||||||
|
|
||||||
|
try {
|
||||||
|
api_instance.mobileRedirect();
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling OAuthApi->mobileRedirect: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
void (empty response body)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: Not defined
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
# **unlink**
|
# **unlink**
|
||||||
> UserResponseDto unlink()
|
> UserResponseDto unlink()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
8
mobile/openapi/doc/OAuthConfigResponseDto.md
generated
@@ -8,9 +8,11 @@ import 'package:openapi/api.dart';
|
|||||||
## Properties
|
## Properties
|
||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**enabled** | **bool** | | [readonly]
|
**enabled** | **bool** | |
|
||||||
**url** | **String** | | [optional] [readonly]
|
**passwordLoginEnabled** | **bool** | |
|
||||||
**buttonText** | **String** | | [optional] [readonly]
|
**url** | **String** | | [optional]
|
||||||
|
**buttonText** | **String** | | [optional]
|
||||||
|
**autoLaunch** | **bool** | | [optional]
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|||||||
8
mobile/openapi/doc/ServerInfoApi.md
generated
@@ -20,6 +20,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -57,6 +59,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -94,6 +98,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -131,6 +137,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
227
mobile/openapi/doc/ShareApi.md
generated
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
# openapi.api.ShareApi
|
||||||
|
|
||||||
|
## Load the API package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
All URIs are relative to */api*
|
||||||
|
|
||||||
|
Method | HTTP request | Description
|
||||||
|
------------- | ------------- | -------------
|
||||||
|
[**editSharedLink**](ShareApi.md#editsharedlink) | **PATCH** /share/{id} |
|
||||||
|
[**getAllSharedLinks**](ShareApi.md#getallsharedlinks) | **GET** /share |
|
||||||
|
[**getMySharedLink**](ShareApi.md#getmysharedlink) | **GET** /share/me |
|
||||||
|
[**getSharedLinkById**](ShareApi.md#getsharedlinkbyid) | **GET** /share/{id} |
|
||||||
|
[**removeSharedLink**](ShareApi.md#removesharedlink) | **DELETE** /share/{id} |
|
||||||
|
|
||||||
|
|
||||||
|
# **editSharedLink**
|
||||||
|
> SharedLinkResponseDto editSharedLink(id, editSharedLinkDto)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = ShareApi();
|
||||||
|
final id = id_example; // String |
|
||||||
|
final editSharedLinkDto = EditSharedLinkDto(); // EditSharedLinkDto |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.editSharedLink(id, editSharedLinkDto);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ShareApi->editSharedLink: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **String**| |
|
||||||
|
**editSharedLinkDto** | [**EditSharedLinkDto**](EditSharedLinkDto.md)| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**SharedLinkResponseDto**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: application/json
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **getAllSharedLinks**
|
||||||
|
> List<SharedLinkResponseDto> getAllSharedLinks()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = ShareApi();
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.getAllSharedLinks();
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ShareApi->getAllSharedLinks: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**List<SharedLinkResponseDto>**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **getMySharedLink**
|
||||||
|
> SharedLinkResponseDto getMySharedLink()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = ShareApi();
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.getMySharedLink();
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ShareApi->getMySharedLink: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
This endpoint does not need any parameter.
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**SharedLinkResponseDto**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **getSharedLinkById**
|
||||||
|
> SharedLinkResponseDto getSharedLinkById(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = ShareApi();
|
||||||
|
final id = id_example; // String |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.getSharedLinkById(id);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ShareApi->getSharedLinkById: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **String**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
[**SharedLinkResponseDto**](SharedLinkResponseDto.md)
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
# **removeSharedLink**
|
||||||
|
> String removeSharedLink(id)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
final api_instance = ShareApi();
|
||||||
|
final id = id_example; // String |
|
||||||
|
|
||||||
|
try {
|
||||||
|
final result = api_instance.removeSharedLink(id);
|
||||||
|
print(result);
|
||||||
|
} catch (e) {
|
||||||
|
print('Exception when calling ShareApi->removeSharedLink: $e\n');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------- | ------------- | ------------- | -------------
|
||||||
|
**id** | **String**| |
|
||||||
|
|
||||||
|
### Return type
|
||||||
|
|
||||||
|
**String**
|
||||||
|
|
||||||
|
### Authorization
|
||||||
|
|
||||||
|
No authorization required
|
||||||
|
|
||||||
|
### HTTP request headers
|
||||||
|
|
||||||
|
- **Content-Type**: Not defined
|
||||||
|
- **Accept**: application/json
|
||||||
|
|
||||||
|
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||||
|
|
||||||
24
mobile/openapi/doc/SharedLinkResponseDto.md
generated
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# openapi.model.SharedLinkResponseDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**type** | [**SharedLinkType**](SharedLinkType.md) | |
|
||||||
|
**id** | **String** | |
|
||||||
|
**description** | **String** | | [optional]
|
||||||
|
**userId** | **String** | |
|
||||||
|
**key** | **String** | |
|
||||||
|
**createdAt** | **String** | |
|
||||||
|
**expiresAt** | **String** | |
|
||||||
|
**assets** | [**List<AssetResponseDto>**](AssetResponseDto.md) | | [default to const []]
|
||||||
|
**album** | [**AlbumResponseDto**](AlbumResponseDto.md) | | [optional]
|
||||||
|
**allowUpload** | **bool** | |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
14
mobile/openapi/doc/SharedLinkType.md
generated
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# openapi.model.SharedLinkType
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
8
mobile/openapi/doc/SystemConfigApi.md
generated
@@ -20,6 +20,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -63,6 +65,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -106,6 +110,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -149,6 +155,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
1
mobile/openapi/doc/SystemConfigDto.md
generated
@@ -10,6 +10,7 @@ Name | Type | Description | Notes
|
|||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**ffmpeg** | [**SystemConfigFFmpegDto**](SystemConfigFFmpegDto.md) | |
|
**ffmpeg** | [**SystemConfigFFmpegDto**](SystemConfigFFmpegDto.md) | |
|
||||||
**oauth** | [**SystemConfigOAuthDto**](SystemConfigOAuthDto.md) | |
|
**oauth** | [**SystemConfigOAuthDto**](SystemConfigOAuthDto.md) | |
|
||||||
|
**passwordLogin** | [**SystemConfigPasswordLoginDto**](SystemConfigPasswordLoginDto.md) | |
|
||||||
**storageTemplate** | [**SystemConfigStorageTemplateDto**](SystemConfigStorageTemplateDto.md) | |
|
**storageTemplate** | [**SystemConfigStorageTemplateDto**](SystemConfigStorageTemplateDto.md) | |
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|||||||
3
mobile/openapi/doc/SystemConfigOAuthDto.md
generated
@@ -15,6 +15,9 @@ Name | Type | Description | Notes
|
|||||||
**scope** | **String** | |
|
**scope** | **String** | |
|
||||||
**buttonText** | **String** | |
|
**buttonText** | **String** | |
|
||||||
**autoRegister** | **bool** | |
|
**autoRegister** | **bool** | |
|
||||||
|
**autoLaunch** | **bool** | |
|
||||||
|
**mobileOverrideEnabled** | **bool** | |
|
||||||
|
**mobileRedirectUri** | **String** | |
|
||||||
|
|
||||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|||||||
15
mobile/openapi/doc/SystemConfigPasswordLoginDto.md
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# openapi.model.SystemConfigPasswordLoginDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**enabled** | **bool** | |
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
10
mobile/openapi/doc/TagApi.md
generated
@@ -21,6 +21,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -62,6 +64,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -102,6 +106,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -139,6 +145,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -180,6 +188,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
15
mobile/openapi/doc/UpdateAssetsToSharedLinkDto.md
generated
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# openapi.model.UpdateAssetsToSharedLinkDto
|
||||||
|
|
||||||
|
## Load the model package
|
||||||
|
```dart
|
||||||
|
import 'package:openapi/api.dart';
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
Name | Type | Description | Notes
|
||||||
|
------------ | ------------- | ------------- | -------------
|
||||||
|
**assetIds** | **List<String>** | | [default to const []]
|
||||||
|
|
||||||
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
|
||||||
1
mobile/openapi/doc/UpdateUserDto.md
generated
@@ -9,6 +9,7 @@ import 'package:openapi/api.dart';
|
|||||||
Name | Type | Description | Notes
|
Name | Type | Description | Notes
|
||||||
------------ | ------------- | ------------- | -------------
|
------------ | ------------- | ------------- | -------------
|
||||||
**id** | **String** | |
|
**id** | **String** | |
|
||||||
|
**email** | **String** | | [optional]
|
||||||
**password** | **String** | | [optional]
|
**password** | **String** | | [optional]
|
||||||
**firstName** | **String** | | [optional]
|
**firstName** | **String** | | [optional]
|
||||||
**lastName** | **String** | | [optional]
|
**lastName** | **String** | | [optional]
|
||||||
|
|||||||
20
mobile/openapi/doc/UserApi.md
generated
@@ -26,6 +26,8 @@ Method | HTTP request | Description
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -73,6 +75,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -120,6 +124,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -167,6 +173,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -214,6 +222,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -257,6 +267,8 @@ This endpoint does not need any parameter.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -298,6 +310,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -339,6 +353,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -380,6 +396,8 @@ No authorization required
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
@@ -427,6 +445,8 @@ Name | Type | Description | Notes
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
```dart
|
```dart
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|||||||
14
mobile/openapi/lib/api.dart
generated
@@ -27,6 +27,7 @@ part 'auth/oauth.dart';
|
|||||||
part 'auth/http_basic_auth.dart';
|
part 'auth/http_basic_auth.dart';
|
||||||
part 'auth/http_bearer_auth.dart';
|
part 'auth/http_bearer_auth.dart';
|
||||||
|
|
||||||
|
part 'api/api_key_api.dart';
|
||||||
part 'api/album_api.dart';
|
part 'api/album_api.dart';
|
||||||
part 'api/asset_api.dart';
|
part 'api/asset_api.dart';
|
||||||
part 'api/authentication_api.dart';
|
part 'api/authentication_api.dart';
|
||||||
@@ -34,10 +35,15 @@ part 'api/device_info_api.dart';
|
|||||||
part 'api/job_api.dart';
|
part 'api/job_api.dart';
|
||||||
part 'api/o_auth_api.dart';
|
part 'api/o_auth_api.dart';
|
||||||
part 'api/server_info_api.dart';
|
part 'api/server_info_api.dart';
|
||||||
|
part 'api/share_api.dart';
|
||||||
part 'api/system_config_api.dart';
|
part 'api/system_config_api.dart';
|
||||||
part 'api/tag_api.dart';
|
part 'api/tag_api.dart';
|
||||||
part 'api/user_api.dart';
|
part 'api/user_api.dart';
|
||||||
|
|
||||||
|
part 'model/api_key_create_dto.dart';
|
||||||
|
part 'model/api_key_create_response_dto.dart';
|
||||||
|
part 'model/api_key_response_dto.dart';
|
||||||
|
part 'model/api_key_update_dto.dart';
|
||||||
part 'model/add_assets_dto.dart';
|
part 'model/add_assets_dto.dart';
|
||||||
part 'model/add_assets_response_dto.dart';
|
part 'model/add_assets_response_dto.dart';
|
||||||
part 'model/add_users_dto.dart';
|
part 'model/add_users_dto.dart';
|
||||||
@@ -57,6 +63,8 @@ part 'model/check_duplicate_asset_response_dto.dart';
|
|||||||
part 'model/check_existing_assets_dto.dart';
|
part 'model/check_existing_assets_dto.dart';
|
||||||
part 'model/check_existing_assets_response_dto.dart';
|
part 'model/check_existing_assets_response_dto.dart';
|
||||||
part 'model/create_album_dto.dart';
|
part 'model/create_album_dto.dart';
|
||||||
|
part 'model/create_album_share_link_dto.dart';
|
||||||
|
part 'model/create_assets_share_link_dto.dart';
|
||||||
part 'model/create_profile_image_response_dto.dart';
|
part 'model/create_profile_image_response_dto.dart';
|
||||||
part 'model/create_tag_dto.dart';
|
part 'model/create_tag_dto.dart';
|
||||||
part 'model/create_user_dto.dart';
|
part 'model/create_user_dto.dart';
|
||||||
@@ -67,6 +75,8 @@ part 'model/delete_asset_response_dto.dart';
|
|||||||
part 'model/delete_asset_status.dart';
|
part 'model/delete_asset_status.dart';
|
||||||
part 'model/device_info_response_dto.dart';
|
part 'model/device_info_response_dto.dart';
|
||||||
part 'model/device_type_enum.dart';
|
part 'model/device_type_enum.dart';
|
||||||
|
part 'model/download_files_dto.dart';
|
||||||
|
part 'model/edit_shared_link_dto.dart';
|
||||||
part 'model/exif_response_dto.dart';
|
part 'model/exif_response_dto.dart';
|
||||||
part 'model/get_asset_by_time_bucket_dto.dart';
|
part 'model/get_asset_by_time_bucket_dto.dart';
|
||||||
part 'model/get_asset_count_by_time_bucket_dto.dart';
|
part 'model/get_asset_count_by_time_bucket_dto.dart';
|
||||||
@@ -87,11 +97,14 @@ part 'model/server_info_response_dto.dart';
|
|||||||
part 'model/server_ping_response.dart';
|
part 'model/server_ping_response.dart';
|
||||||
part 'model/server_stats_response_dto.dart';
|
part 'model/server_stats_response_dto.dart';
|
||||||
part 'model/server_version_reponse_dto.dart';
|
part 'model/server_version_reponse_dto.dart';
|
||||||
|
part 'model/shared_link_response_dto.dart';
|
||||||
|
part 'model/shared_link_type.dart';
|
||||||
part 'model/sign_up_dto.dart';
|
part 'model/sign_up_dto.dart';
|
||||||
part 'model/smart_info_response_dto.dart';
|
part 'model/smart_info_response_dto.dart';
|
||||||
part 'model/system_config_dto.dart';
|
part 'model/system_config_dto.dart';
|
||||||
part 'model/system_config_f_fmpeg_dto.dart';
|
part 'model/system_config_f_fmpeg_dto.dart';
|
||||||
part 'model/system_config_o_auth_dto.dart';
|
part 'model/system_config_o_auth_dto.dart';
|
||||||
|
part 'model/system_config_password_login_dto.dart';
|
||||||
part 'model/system_config_storage_template_dto.dart';
|
part 'model/system_config_storage_template_dto.dart';
|
||||||
part 'model/system_config_template_storage_option_dto.dart';
|
part 'model/system_config_template_storage_option_dto.dart';
|
||||||
part 'model/tag_response_dto.dart';
|
part 'model/tag_response_dto.dart';
|
||||||
@@ -100,6 +113,7 @@ part 'model/thumbnail_format.dart';
|
|||||||
part 'model/time_group_enum.dart';
|
part 'model/time_group_enum.dart';
|
||||||
part 'model/update_album_dto.dart';
|
part 'model/update_album_dto.dart';
|
||||||
part 'model/update_asset_dto.dart';
|
part 'model/update_asset_dto.dart';
|
||||||
|
part 'model/update_assets_to_shared_link_dto.dart';
|
||||||
part 'model/update_tag_dto.dart';
|
part 'model/update_tag_dto.dart';
|
||||||
part 'model/update_user_dto.dart';
|
part 'model/update_user_dto.dart';
|
||||||
part 'model/upsert_device_info_dto.dart';
|
part 'model/upsert_device_info_dto.dart';
|
||||||
|
|||||||
127
mobile/openapi/lib/api/album_api.dart
generated
@@ -16,7 +16,10 @@ class AlbumApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'PUT /album/{albumId}/assets' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -48,6 +51,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -68,7 +73,10 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PUT /album/{albumId}/users' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -100,6 +108,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -120,7 +130,10 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /album' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [CreateAlbumDto] createAlbumDto (required):
|
/// * [CreateAlbumDto] createAlbumDto (required):
|
||||||
@@ -149,6 +162,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [CreateAlbumDto] createAlbumDto (required):
|
/// * [CreateAlbumDto] createAlbumDto (required):
|
||||||
@@ -167,7 +182,62 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'DELETE /album/{albumId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [CreateAlbumShareLinkDto] createAlbumShareLinkDto (required):
|
||||||
|
Future<Response> createAlbumSharedLinkWithHttpInfo(CreateAlbumShareLinkDto createAlbumShareLinkDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/album/create-shared-link';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = createAlbumShareLinkDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'POST',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [CreateAlbumShareLinkDto] createAlbumShareLinkDto (required):
|
||||||
|
Future<SharedLinkResponseDto?> createAlbumSharedLink(CreateAlbumShareLinkDto createAlbumShareLinkDto,) async {
|
||||||
|
final response = await createAlbumSharedLinkWithHttpInfo(createAlbumShareLinkDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -197,6 +267,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -207,7 +279,10 @@ class AlbumApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /album/{albumId}/download' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -243,6 +318,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -263,7 +340,9 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /album/count-by-user-id' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getAlbumCountByUserIdWithHttpInfo() async {
|
Future<Response> getAlbumCountByUserIdWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/album/count-by-user-id';
|
final path = r'/album/count-by-user-id';
|
||||||
@@ -289,6 +368,7 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<AlbumCountResponseDto?> getAlbumCountByUserId() async {
|
Future<AlbumCountResponseDto?> getAlbumCountByUserId() async {
|
||||||
final response = await getAlbumCountByUserIdWithHttpInfo();
|
final response = await getAlbumCountByUserIdWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -304,7 +384,10 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /album/{albumId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -334,6 +417,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -352,7 +437,10 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /album' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] shared:
|
/// * [bool] shared:
|
||||||
@@ -391,6 +479,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] shared:
|
/// * [bool] shared:
|
||||||
@@ -415,7 +505,10 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'DELETE /album/{albumId}/assets' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -447,6 +540,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -467,7 +562,10 @@ class AlbumApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'DELETE /album/{albumId}/user/{userId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -500,6 +598,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -512,7 +612,10 @@ class AlbumApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PATCH /album/{albumId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
@@ -544,6 +647,8 @@ class AlbumApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
|
|||||||
272
mobile/openapi/lib/api/api_key_api.dart
generated
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
//
|
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
||||||
|
//
|
||||||
|
// @dart=2.12
|
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import
|
||||||
|
// ignore_for_file: always_put_required_named_parameters_first
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars
|
||||||
|
|
||||||
|
part of openapi.api;
|
||||||
|
|
||||||
|
|
||||||
|
class APIKeyApi {
|
||||||
|
APIKeyApi([ApiClient? apiClient]) : apiClient = apiClient ?? defaultApiClient;
|
||||||
|
|
||||||
|
final ApiClient apiClient;
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [APIKeyCreateDto] aPIKeyCreateDto (required):
|
||||||
|
Future<Response> createKeyWithHttpInfo(APIKeyCreateDto aPIKeyCreateDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/api-key';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = aPIKeyCreateDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'POST',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [APIKeyCreateDto] aPIKeyCreateDto (required):
|
||||||
|
Future<APIKeyCreateResponseDto?> createKey(APIKeyCreateDto aPIKeyCreateDto,) async {
|
||||||
|
final response = await createKeyWithHttpInfo(aPIKeyCreateDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'APIKeyCreateResponseDto',) as APIKeyCreateResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [num] id (required):
|
||||||
|
Future<Response> deleteKeyWithHttpInfo(num id,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/api-key/{id}'
|
||||||
|
.replaceAll('{id}', id.toString());
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'DELETE',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [num] id (required):
|
||||||
|
Future<void> deleteKey(num id,) async {
|
||||||
|
final response = await deleteKeyWithHttpInfo(id,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [num] id (required):
|
||||||
|
Future<Response> getKeyWithHttpInfo(num id,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/api-key/{id}'
|
||||||
|
.replaceAll('{id}', id.toString());
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [num] id (required):
|
||||||
|
Future<APIKeyResponseDto?> getKey(num id,) async {
|
||||||
|
final response = await getKeyWithHttpInfo(id,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'APIKeyResponseDto',) as APIKeyResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
Future<Response> getKeysWithHttpInfo() async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/api-key';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
Future<List<APIKeyResponseDto>?> getKeys() async {
|
||||||
|
final response = await getKeysWithHttpInfo();
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
final responseBody = await _decodeBodyBytes(response);
|
||||||
|
return (await apiClient.deserializeAsync(responseBody, 'List<APIKeyResponseDto>') as List)
|
||||||
|
.cast<APIKeyResponseDto>()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [num] id (required):
|
||||||
|
///
|
||||||
|
/// * [APIKeyUpdateDto] aPIKeyUpdateDto (required):
|
||||||
|
Future<Response> updateKeyWithHttpInfo(num id, APIKeyUpdateDto aPIKeyUpdateDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/api-key/{id}'
|
||||||
|
.replaceAll('{id}', id.toString());
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = aPIKeyUpdateDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'PUT',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [num] id (required):
|
||||||
|
///
|
||||||
|
/// * [APIKeyUpdateDto] aPIKeyUpdateDto (required):
|
||||||
|
Future<APIKeyResponseDto?> updateKey(num id, APIKeyUpdateDto aPIKeyUpdateDto,) async {
|
||||||
|
final response = await updateKeyWithHttpInfo(id, aPIKeyUpdateDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'APIKeyResponseDto',) as APIKeyResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
239
mobile/openapi/lib/api/asset_api.dart
generated
@@ -120,7 +120,62 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'DELETE /asset' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [CreateAssetsShareLinkDto] createAssetsShareLinkDto (required):
|
||||||
|
Future<Response> createAssetsSharedLinkWithHttpInfo(CreateAssetsShareLinkDto createAssetsShareLinkDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/asset/shared-link';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = createAssetsShareLinkDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'POST',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [CreateAssetsShareLinkDto] createAssetsShareLinkDto (required):
|
||||||
|
Future<SharedLinkResponseDto?> createAssetsSharedLink(CreateAssetsShareLinkDto createAssetsShareLinkDto,) async {
|
||||||
|
final response = await createAssetsSharedLinkWithHttpInfo(createAssetsShareLinkDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DeleteAssetDto] deleteAssetDto (required):
|
/// * [DeleteAssetDto] deleteAssetDto (required):
|
||||||
@@ -149,6 +204,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DeleteAssetDto] deleteAssetDto (required):
|
/// * [DeleteAssetDto] deleteAssetDto (required):
|
||||||
@@ -170,7 +227,10 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/download/{assetId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId (required):
|
/// * [String] assetId (required):
|
||||||
@@ -211,6 +271,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId (required):
|
/// * [String] assetId (required):
|
||||||
@@ -233,7 +295,62 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/download-library' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [DownloadFilesDto] downloadFilesDto (required):
|
||||||
|
Future<Response> downloadFilesWithHttpInfo(DownloadFilesDto downloadFilesDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/asset/download-files';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = downloadFilesDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'POST',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [DownloadFilesDto] downloadFilesDto (required):
|
||||||
|
Future<Object?> downloadFiles(DownloadFilesDto downloadFilesDto,) async {
|
||||||
|
final response = await downloadFilesWithHttpInfo(downloadFilesDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'Object',) as Object;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [num] skip:
|
/// * [num] skip:
|
||||||
@@ -266,6 +383,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [num] skip:
|
/// * [num] skip:
|
||||||
@@ -398,7 +517,10 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /asset/time-bucket' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required):
|
/// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required):
|
||||||
@@ -427,6 +549,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required):
|
/// * [GetAssetByTimeBucketDto] getAssetByTimeBucketDto (required):
|
||||||
@@ -448,7 +572,10 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /asset/count-by-time-bucket' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required):
|
/// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required):
|
||||||
@@ -477,6 +604,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required):
|
/// * [GetAssetCountByTimeBucketDto] getAssetCountByTimeBucketDto (required):
|
||||||
@@ -495,7 +624,9 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/count-by-user-id' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getAssetCountByUserIdWithHttpInfo() async {
|
Future<Response> getAssetCountByUserIdWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/asset/count-by-user-id';
|
final path = r'/asset/count-by-user-id';
|
||||||
@@ -521,6 +652,7 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<AssetCountByUserIdResponseDto?> getAssetCountByUserId() async {
|
Future<AssetCountByUserIdResponseDto?> getAssetCountByUserId() async {
|
||||||
final response = await getAssetCountByUserIdWithHttpInfo();
|
final response = await getAssetCountByUserIdWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -536,7 +668,9 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/search-terms' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getAssetSearchTermsWithHttpInfo() async {
|
Future<Response> getAssetSearchTermsWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/asset/search-terms';
|
final path = r'/asset/search-terms';
|
||||||
@@ -562,6 +696,7 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<List<String>?> getAssetSearchTerms() async {
|
Future<List<String>?> getAssetSearchTerms() async {
|
||||||
final response = await getAssetSearchTermsWithHttpInfo();
|
final response = await getAssetSearchTermsWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -580,7 +715,10 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/thumbnail/{assetId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId (required):
|
/// * [String] assetId (required):
|
||||||
@@ -616,6 +754,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId (required):
|
/// * [String] assetId (required):
|
||||||
@@ -636,7 +776,9 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/curated-locations' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getCuratedLocationsWithHttpInfo() async {
|
Future<Response> getCuratedLocationsWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/asset/curated-locations';
|
final path = r'/asset/curated-locations';
|
||||||
@@ -662,6 +804,7 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<List<CuratedLocationsResponseDto>?> getCuratedLocations() async {
|
Future<List<CuratedLocationsResponseDto>?> getCuratedLocations() async {
|
||||||
final response = await getCuratedLocationsWithHttpInfo();
|
final response = await getCuratedLocationsWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -680,7 +823,9 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/curated-objects' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getCuratedObjectsWithHttpInfo() async {
|
Future<Response> getCuratedObjectsWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/asset/curated-objects';
|
final path = r'/asset/curated-objects';
|
||||||
@@ -706,6 +851,7 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<List<CuratedObjectsResponseDto>?> getCuratedObjects() async {
|
Future<List<CuratedObjectsResponseDto>?> getCuratedObjects() async {
|
||||||
final response = await getCuratedObjectsWithHttpInfo();
|
final response = await getCuratedObjectsWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -780,7 +926,10 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /asset/search' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SearchAssetDto] searchAssetDto (required):
|
/// * [SearchAssetDto] searchAssetDto (required):
|
||||||
@@ -809,6 +958,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SearchAssetDto] searchAssetDto (required):
|
/// * [SearchAssetDto] searchAssetDto (required):
|
||||||
@@ -830,7 +981,10 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /asset/file/{assetId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId (required):
|
/// * [String] assetId (required):
|
||||||
@@ -871,6 +1025,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId (required):
|
/// * [String] assetId (required):
|
||||||
@@ -950,7 +1106,62 @@ class AssetApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /asset/upload' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [UpdateAssetsToSharedLinkDto] updateAssetsToSharedLinkDto (required):
|
||||||
|
Future<Response> updateAssetsInSharedLinkWithHttpInfo(UpdateAssetsToSharedLinkDto updateAssetsToSharedLinkDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/asset/shared-link';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = updateAssetsToSharedLinkDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'PATCH',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [UpdateAssetsToSharedLinkDto] updateAssetsToSharedLinkDto (required):
|
||||||
|
Future<SharedLinkResponseDto?> updateAssetsInSharedLink(UpdateAssetsToSharedLinkDto updateAssetsToSharedLinkDto,) async {
|
||||||
|
final response = await updateAssetsInSharedLinkWithHttpInfo(updateAssetsToSharedLinkDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
@@ -989,6 +1200,8 @@ class AssetApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
|||||||
31
mobile/openapi/lib/api/authentication_api.dart
generated
@@ -16,7 +16,10 @@ class AuthenticationApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /auth/admin-sign-up' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SignUpDto] signUpDto (required):
|
/// * [SignUpDto] signUpDto (required):
|
||||||
@@ -45,6 +48,8 @@ class AuthenticationApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SignUpDto] signUpDto (required):
|
/// * [SignUpDto] signUpDto (required):
|
||||||
@@ -63,7 +68,10 @@ class AuthenticationApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /auth/change-password' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [ChangePasswordDto] changePasswordDto (required):
|
/// * [ChangePasswordDto] changePasswordDto (required):
|
||||||
@@ -92,6 +100,8 @@ class AuthenticationApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [ChangePasswordDto] changePasswordDto (required):
|
/// * [ChangePasswordDto] changePasswordDto (required):
|
||||||
@@ -110,7 +120,10 @@ class AuthenticationApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /auth/login' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [LoginCredentialDto] loginCredentialDto (required):
|
/// * [LoginCredentialDto] loginCredentialDto (required):
|
||||||
@@ -139,6 +152,8 @@ class AuthenticationApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [LoginCredentialDto] loginCredentialDto (required):
|
/// * [LoginCredentialDto] loginCredentialDto (required):
|
||||||
@@ -157,7 +172,9 @@ class AuthenticationApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /auth/logout' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> logoutWithHttpInfo() async {
|
Future<Response> logoutWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/auth/logout';
|
final path = r'/auth/logout';
|
||||||
@@ -183,6 +200,7 @@ class AuthenticationApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<LogoutResponseDto?> logout() async {
|
Future<LogoutResponseDto?> logout() async {
|
||||||
final response = await logoutWithHttpInfo();
|
final response = await logoutWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -198,7 +216,9 @@ class AuthenticationApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /auth/validateToken' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> validateAccessTokenWithHttpInfo() async {
|
Future<Response> validateAccessTokenWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/auth/validateToken';
|
final path = r'/auth/validateToken';
|
||||||
@@ -224,6 +244,7 @@ class AuthenticationApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<ValidateAccessTokenResponseDto?> validateAccessToken() async {
|
Future<ValidateAccessTokenResponseDto?> validateAccessToken() async {
|
||||||
final response = await validateAccessTokenWithHttpInfo();
|
final response = await validateAccessTokenWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
7
mobile/openapi/lib/api/device_info_api.dart
generated
@@ -120,7 +120,10 @@ class DeviceInfoApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PUT /device-info' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
|
/// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
|
||||||
@@ -149,6 +152,8 @@ class DeviceInfoApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
|
/// * [UpsertDeviceInfoDto] upsertDeviceInfoDto (required):
|
||||||
|
|||||||
19
mobile/openapi/lib/api/job_api.dart
generated
@@ -16,7 +16,9 @@ class JobApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /jobs' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getAllJobsStatusWithHttpInfo() async {
|
Future<Response> getAllJobsStatusWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/jobs';
|
final path = r'/jobs';
|
||||||
@@ -42,6 +44,7 @@ class JobApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<AllJobStatusResponseDto?> getAllJobsStatus() async {
|
Future<AllJobStatusResponseDto?> getAllJobsStatus() async {
|
||||||
final response = await getAllJobsStatusWithHttpInfo();
|
final response = await getAllJobsStatusWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -57,7 +60,10 @@ class JobApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /jobs/{jobId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [JobId] jobId (required):
|
/// * [JobId] jobId (required):
|
||||||
@@ -87,6 +93,8 @@ class JobApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [JobId] jobId (required):
|
/// * [JobId] jobId (required):
|
||||||
@@ -105,7 +113,10 @@ class JobApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PUT /jobs/{jobId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [JobId] jobId (required):
|
/// * [JobId] jobId (required):
|
||||||
@@ -137,6 +148,8 @@ class JobApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [JobId] jobId (required):
|
/// * [JobId] jobId (required):
|
||||||
|
|||||||
62
mobile/openapi/lib/api/o_auth_api.dart
generated
@@ -16,7 +16,10 @@ class OAuthApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /oauth/callback' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
||||||
@@ -45,6 +48,8 @@ class OAuthApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
||||||
@@ -63,7 +68,10 @@ class OAuthApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /oauth/config' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [OAuthConfigDto] oAuthConfigDto (required):
|
/// * [OAuthConfigDto] oAuthConfigDto (required):
|
||||||
@@ -92,6 +100,8 @@ class OAuthApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [OAuthConfigDto] oAuthConfigDto (required):
|
/// * [OAuthConfigDto] oAuthConfigDto (required):
|
||||||
@@ -110,7 +120,10 @@ class OAuthApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /oauth/link' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
||||||
@@ -139,6 +152,8 @@ class OAuthApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
/// * [OAuthCallbackDto] oAuthCallbackDto (required):
|
||||||
@@ -157,7 +172,45 @@ class OAuthApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /oauth/unlink' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
Future<Response> mobileRedirectWithHttpInfo() async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/oauth/mobile-redirect';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
Future<void> mobileRedirect() async {
|
||||||
|
final response = await mobileRedirectWithHttpInfo();
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> unlinkWithHttpInfo() async {
|
Future<Response> unlinkWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/oauth/unlink';
|
final path = r'/oauth/unlink';
|
||||||
@@ -183,6 +236,7 @@ class OAuthApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<UserResponseDto?> unlink() async {
|
Future<UserResponseDto?> unlink() async {
|
||||||
final response = await unlinkWithHttpInfo();
|
final response = await unlinkWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
20
mobile/openapi/lib/api/server_info_api.dart
generated
@@ -16,7 +16,9 @@ class ServerInfoApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /server-info' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getServerInfoWithHttpInfo() async {
|
Future<Response> getServerInfoWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/server-info';
|
final path = r'/server-info';
|
||||||
@@ -42,6 +44,7 @@ class ServerInfoApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<ServerInfoResponseDto?> getServerInfo() async {
|
Future<ServerInfoResponseDto?> getServerInfo() async {
|
||||||
final response = await getServerInfoWithHttpInfo();
|
final response = await getServerInfoWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -57,7 +60,9 @@ class ServerInfoApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /server-info/version' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getServerVersionWithHttpInfo() async {
|
Future<Response> getServerVersionWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/server-info/version';
|
final path = r'/server-info/version';
|
||||||
@@ -83,6 +88,7 @@ class ServerInfoApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<ServerVersionReponseDto?> getServerVersion() async {
|
Future<ServerVersionReponseDto?> getServerVersion() async {
|
||||||
final response = await getServerVersionWithHttpInfo();
|
final response = await getServerVersionWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -98,7 +104,9 @@ class ServerInfoApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /server-info/stats' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getStatsWithHttpInfo() async {
|
Future<Response> getStatsWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/server-info/stats';
|
final path = r'/server-info/stats';
|
||||||
@@ -124,6 +132,7 @@ class ServerInfoApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<ServerStatsResponseDto?> getStats() async {
|
Future<ServerStatsResponseDto?> getStats() async {
|
||||||
final response = await getStatsWithHttpInfo();
|
final response = await getStatsWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -139,7 +148,9 @@ class ServerInfoApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /server-info/ping' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> pingServerWithHttpInfo() async {
|
Future<Response> pingServerWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/server-info/ping';
|
final path = r'/server-info/ping';
|
||||||
@@ -165,6 +176,7 @@ class ServerInfoApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<ServerPingResponse?> pingServer() async {
|
Future<ServerPingResponse?> pingServer() async {
|
||||||
final response = await pingServerWithHttpInfo();
|
final response = await pingServerWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
272
mobile/openapi/lib/api/share_api.dart
generated
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
//
|
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
||||||
|
//
|
||||||
|
// @dart=2.12
|
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import
|
||||||
|
// ignore_for_file: always_put_required_named_parameters_first
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars
|
||||||
|
|
||||||
|
part of openapi.api;
|
||||||
|
|
||||||
|
|
||||||
|
class ShareApi {
|
||||||
|
ShareApi([ApiClient? apiClient]) : apiClient = apiClient ?? defaultApiClient;
|
||||||
|
|
||||||
|
final ApiClient apiClient;
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [EditSharedLinkDto] editSharedLinkDto (required):
|
||||||
|
Future<Response> editSharedLinkWithHttpInfo(String id, EditSharedLinkDto editSharedLinkDto,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/share/{id}'
|
||||||
|
.replaceAll('{id}', id);
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody = editSharedLinkDto;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>['application/json'];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'PATCH',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [EditSharedLinkDto] editSharedLinkDto (required):
|
||||||
|
Future<SharedLinkResponseDto?> editSharedLink(String id, EditSharedLinkDto editSharedLinkDto,) async {
|
||||||
|
final response = await editSharedLinkWithHttpInfo(id, editSharedLinkDto,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
Future<Response> getAllSharedLinksWithHttpInfo() async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/share';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
Future<List<SharedLinkResponseDto>?> getAllSharedLinks() async {
|
||||||
|
final response = await getAllSharedLinksWithHttpInfo();
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
final responseBody = await _decodeBodyBytes(response);
|
||||||
|
return (await apiClient.deserializeAsync(responseBody, 'List<SharedLinkResponseDto>') as List)
|
||||||
|
.cast<SharedLinkResponseDto>()
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
Future<Response> getMySharedLinkWithHttpInfo() async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/share/me';
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
Future<SharedLinkResponseDto?> getMySharedLink() async {
|
||||||
|
final response = await getMySharedLinkWithHttpInfo();
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<Response> getSharedLinkByIdWithHttpInfo(String id,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/share/{id}'
|
||||||
|
.replaceAll('{id}', id);
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<SharedLinkResponseDto?> getSharedLinkById(String id,) async {
|
||||||
|
final response = await getSharedLinkByIdWithHttpInfo(id,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'SharedLinkResponseDto',) as SharedLinkResponseDto;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<Response> removeSharedLinkWithHttpInfo(String id,) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final path = r'/share/{id}'
|
||||||
|
.replaceAll('{id}', id);
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
path,
|
||||||
|
'DELETE',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
Future<String?> removeSharedLink(String id,) async {
|
||||||
|
final response = await removeSharedLinkWithHttpInfo(id,);
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'String',) as String;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
22
mobile/openapi/lib/api/system_config_api.dart
generated
@@ -16,7 +16,9 @@ class SystemConfigApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /system-config' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getConfigWithHttpInfo() async {
|
Future<Response> getConfigWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/system-config';
|
final path = r'/system-config';
|
||||||
@@ -42,6 +44,7 @@ class SystemConfigApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<SystemConfigDto?> getConfig() async {
|
Future<SystemConfigDto?> getConfig() async {
|
||||||
final response = await getConfigWithHttpInfo();
|
final response = await getConfigWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -57,7 +60,9 @@ class SystemConfigApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /system-config/defaults' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getDefaultsWithHttpInfo() async {
|
Future<Response> getDefaultsWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/system-config/defaults';
|
final path = r'/system-config/defaults';
|
||||||
@@ -83,6 +88,7 @@ class SystemConfigApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<SystemConfigDto?> getDefaults() async {
|
Future<SystemConfigDto?> getDefaults() async {
|
||||||
final response = await getDefaultsWithHttpInfo();
|
final response = await getDefaultsWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -98,7 +104,9 @@ class SystemConfigApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /system-config/storage-template-options' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getStorageTemplateOptionsWithHttpInfo() async {
|
Future<Response> getStorageTemplateOptionsWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/system-config/storage-template-options';
|
final path = r'/system-config/storage-template-options';
|
||||||
@@ -124,6 +132,7 @@ class SystemConfigApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<SystemConfigTemplateStorageOptionDto?> getStorageTemplateOptions() async {
|
Future<SystemConfigTemplateStorageOptionDto?> getStorageTemplateOptions() async {
|
||||||
final response = await getStorageTemplateOptionsWithHttpInfo();
|
final response = await getStorageTemplateOptionsWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -139,7 +148,10 @@ class SystemConfigApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PUT /system-config' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SystemConfigDto] systemConfigDto (required):
|
/// * [SystemConfigDto] systemConfigDto (required):
|
||||||
@@ -168,6 +180,8 @@ class SystemConfigApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SystemConfigDto] systemConfigDto (required):
|
/// * [SystemConfigDto] systemConfigDto (required):
|
||||||
|
|||||||
33
mobile/openapi/lib/api/tag_api.dart
generated
@@ -16,7 +16,10 @@ class TagApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /tag' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [CreateTagDto] createTagDto (required):
|
/// * [CreateTagDto] createTagDto (required):
|
||||||
@@ -45,6 +48,8 @@ class TagApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [CreateTagDto] createTagDto (required):
|
/// * [CreateTagDto] createTagDto (required):
|
||||||
@@ -63,7 +68,10 @@ class TagApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'DELETE /tag/{id}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
@@ -93,6 +101,8 @@ class TagApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
@@ -103,7 +113,9 @@ class TagApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /tag' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> findAllWithHttpInfo() async {
|
Future<Response> findAllWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/tag';
|
final path = r'/tag';
|
||||||
@@ -129,6 +141,7 @@ class TagApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<List<TagResponseDto>?> findAll() async {
|
Future<List<TagResponseDto>?> findAll() async {
|
||||||
final response = await findAllWithHttpInfo();
|
final response = await findAllWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -147,7 +160,10 @@ class TagApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /tag/{id}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
@@ -177,6 +193,8 @@ class TagApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
@@ -195,7 +213,10 @@ class TagApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PATCH /tag/{id}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
@@ -227,6 +248,8 @@ class TagApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
|||||||
68
mobile/openapi/lib/api/user_api.dart
generated
@@ -16,7 +16,10 @@ class UserApi {
|
|||||||
|
|
||||||
final ApiClient apiClient;
|
final ApiClient apiClient;
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /user/profile-image' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] file (required):
|
/// * [MultipartFile] file (required):
|
||||||
@@ -55,6 +58,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] file (required):
|
/// * [MultipartFile] file (required):
|
||||||
@@ -73,7 +78,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /user' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [CreateUserDto] createUserDto (required):
|
/// * [CreateUserDto] createUserDto (required):
|
||||||
@@ -102,6 +110,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [CreateUserDto] createUserDto (required):
|
/// * [CreateUserDto] createUserDto (required):
|
||||||
@@ -120,7 +130,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'DELETE /user/{userId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -150,6 +163,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -168,7 +183,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /user' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] isAll (required):
|
/// * [bool] isAll (required):
|
||||||
@@ -199,6 +217,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] isAll (required):
|
/// * [bool] isAll (required):
|
||||||
@@ -220,7 +240,9 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /user/me' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
Future<Response> getMyUserInfoWithHttpInfo() async {
|
Future<Response> getMyUserInfoWithHttpInfo() async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final path = r'/user/me';
|
final path = r'/user/me';
|
||||||
@@ -246,6 +268,7 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
Future<UserResponseDto?> getMyUserInfo() async {
|
Future<UserResponseDto?> getMyUserInfo() async {
|
||||||
final response = await getMyUserInfoWithHttpInfo();
|
final response = await getMyUserInfoWithHttpInfo();
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -261,7 +284,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /user/profile-image/{userId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -291,6 +317,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -309,7 +337,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /user/info/{userId}' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -339,6 +370,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -357,7 +390,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'GET /user/count' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] admin:
|
/// * [bool] admin:
|
||||||
@@ -390,6 +426,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] admin:
|
/// * [bool] admin:
|
||||||
@@ -408,7 +446,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'POST /user/{userId}/restore' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -438,6 +479,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] userId (required):
|
/// * [String] userId (required):
|
||||||
@@ -456,7 +499,10 @@ class UserApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Performs an HTTP 'PUT /user' operation and returns the [Response].
|
///
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [UpdateUserDto] updateUserDto (required):
|
/// * [UpdateUserDto] updateUserDto (required):
|
||||||
@@ -485,6 +531,8 @@ class UserApi {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [UpdateUserDto] updateUserDto (required):
|
/// * [UpdateUserDto] updateUserDto (required):
|
||||||
|
|||||||