mirror of
https://github.com/immich-app/immich.git
synced 2026-02-02 10:14:50 -08:00
Compare commits
28 Commits
fix-migrat
...
refactor/p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2aab5c28a1 | ||
|
|
855817514c | ||
|
|
d5ad35ea52 | ||
|
|
e63213d774 | ||
|
|
0be1ffade6 | ||
|
|
1a04caee29 | ||
|
|
3ace578fc0 | ||
|
|
25c573bc7a | ||
|
|
10bb83cf75 | ||
|
|
10b53b525d | ||
|
|
8db61d341f | ||
|
|
eadb2f89af | ||
|
|
f2f11b1924 | ||
|
|
141be5cbc9 | ||
|
|
e81faa1dbf | ||
|
|
0beb1f9e7a | ||
|
|
e07a91f9c2 | ||
|
|
c6defd453b | ||
|
|
4e0e1b2c5c | ||
|
|
84c3980844 | ||
|
|
e50579eefc | ||
|
|
0cb153a971 | ||
|
|
12d23e987b | ||
|
|
9486eed97e | ||
|
|
913e939606 | ||
|
|
9be01e79f7 | ||
|
|
2d09853c3d | ||
|
|
91831f68e2 |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[tools]
|
[tools]
|
||||||
terragrunt = "0.93.10"
|
terragrunt = "0.98.0"
|
||||||
opentofu = "1.10.7"
|
opentofu = "1.11.4"
|
||||||
|
|
||||||
[tasks."tg:fmt"]
|
[tasks."tg:fmt"]
|
||||||
run = "terragrunt hclfmt"
|
run = "terragrunt hclfmt"
|
||||||
|
|||||||
4
docs/static/archived-versions.json
vendored
4
docs/static/archived-versions.json
vendored
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"label": "v2.5.1",
|
"label": "v2.5.2",
|
||||||
"url": "https://docs.v2.5.1.archive.immich.app"
|
"url": "https://docs.v2.5.2.archive.immich.app"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "v2.4.1",
|
"label": "v2.4.1",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
116
e2e/src/web/specs/search/search-gallery.ui-spec.ts
Normal file
116
e2e/src/web/specs/search/search-gallery.ui-spec.ts
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
import { faker } from '@faker-js/faker';
|
||||||
|
import { expect, test } from '@playwright/test';
|
||||||
|
import {
|
||||||
|
Changes,
|
||||||
|
createDefaultTimelineConfig,
|
||||||
|
generateTimelineData,
|
||||||
|
TimelineAssetConfig,
|
||||||
|
TimelineData,
|
||||||
|
} from 'src/generators/timeline';
|
||||||
|
import { setupBaseMockApiRoutes } from 'src/mock-network/base-network';
|
||||||
|
import { setupTimelineMockApiRoutes, TimelineTestContext } from 'src/mock-network/timeline-network';
|
||||||
|
import { assetViewerUtils } from 'src/web/specs/timeline/utils';
|
||||||
|
|
||||||
|
const buildSearchUrl = (assetId: string) => {
|
||||||
|
const searchQuery = encodeURIComponent(JSON.stringify({ originalFileName: 'test' }));
|
||||||
|
return `/search/photos/${assetId}?query=${searchQuery}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
test.describe.configure({ mode: 'parallel' });
|
||||||
|
test.describe('search gallery-viewer', () => {
|
||||||
|
let adminUserId: string;
|
||||||
|
let timelineRestData: TimelineData;
|
||||||
|
const assets: TimelineAssetConfig[] = [];
|
||||||
|
const testContext = new TimelineTestContext();
|
||||||
|
const changes: Changes = {
|
||||||
|
albumAdditions: [],
|
||||||
|
assetDeletions: [],
|
||||||
|
assetArchivals: [],
|
||||||
|
assetFavorites: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
test.beforeAll(async () => {
|
||||||
|
adminUserId = faker.string.uuid();
|
||||||
|
testContext.adminId = adminUserId;
|
||||||
|
timelineRestData = generateTimelineData({ ...createDefaultTimelineConfig(), ownerId: adminUserId });
|
||||||
|
for (const timeBucket of timelineRestData.buckets.values()) {
|
||||||
|
assets.push(...timeBucket);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test.beforeEach(async ({ context }) => {
|
||||||
|
await setupBaseMockApiRoutes(context, adminUserId);
|
||||||
|
await setupTimelineMockApiRoutes(context, timelineRestData, changes, testContext);
|
||||||
|
|
||||||
|
await context.route('**/api/search/metadata', async (route, request) => {
|
||||||
|
if (request.method() === 'POST') {
|
||||||
|
const searchAssets = assets.slice(0, 5).filter((asset) => !changes.assetDeletions.includes(asset.id));
|
||||||
|
return route.fulfill({
|
||||||
|
status: 200,
|
||||||
|
contentType: 'application/json',
|
||||||
|
json: {
|
||||||
|
albums: { total: 0, count: 0, items: [], facets: [] },
|
||||||
|
assets: {
|
||||||
|
total: searchAssets.length,
|
||||||
|
count: searchAssets.length,
|
||||||
|
items: searchAssets,
|
||||||
|
facets: [],
|
||||||
|
nextPage: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await route.fallback();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test.afterEach(() => {
|
||||||
|
testContext.slowBucket = false;
|
||||||
|
changes.albumAdditions = [];
|
||||||
|
changes.assetDeletions = [];
|
||||||
|
changes.assetArchivals = [];
|
||||||
|
changes.assetFavorites = [];
|
||||||
|
});
|
||||||
|
|
||||||
|
test.describe('/search/photos/:id', () => {
|
||||||
|
test('Deleting a photo advances to the next photo', async ({ page }) => {
|
||||||
|
const asset = assets[0];
|
||||||
|
await page.goto(buildSearchUrl(asset.id));
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, asset);
|
||||||
|
await page.getByLabel('Delete').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, assets[1]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Deleting two photos in a row advances to the next photo each time', async ({ page }) => {
|
||||||
|
const asset = assets[0];
|
||||||
|
await page.goto(buildSearchUrl(asset.id));
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, asset);
|
||||||
|
await page.getByLabel('Delete').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, assets[1]);
|
||||||
|
await page.getByLabel('Delete').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, assets[2]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Navigating backward then deleting advances to the next photo', async ({ page }) => {
|
||||||
|
const asset = assets[1];
|
||||||
|
await page.goto(buildSearchUrl(asset.id));
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, asset);
|
||||||
|
await page.getByLabel('View previous asset').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, assets[0]);
|
||||||
|
await page.getByLabel('View next asset').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, asset);
|
||||||
|
await page.getByLabel('Delete').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, assets[2]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Deleting the last photo advances to the previous photo', async ({ page }) => {
|
||||||
|
const lastAsset = assets[4];
|
||||||
|
await page.goto(buildSearchUrl(lastAsset.id));
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, lastAsset);
|
||||||
|
await expect(page.getByLabel('View next asset')).toHaveCount(0);
|
||||||
|
await page.getByLabel('Delete').click();
|
||||||
|
await assetViewerUtils.waitForViewerLoad(page, assets[3]);
|
||||||
|
await expect(page.getByLabel('View previous asset')).toBeVisible();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-i18n",
|
"name": "immich-i18n",
|
||||||
"version": "2.5.1",
|
"version": "2.5.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"format": "prettier --check .",
|
"format": "prettier --check .",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "immich-ml"
|
name = "immich-ml"
|
||||||
version = "2.5.1"
|
version = "2.5.2"
|
||||||
description = ""
|
description = ""
|
||||||
authors = [{ name = "Hau Tran", email = "alex.tran1502@gmail.com" }]
|
authors = [{ name = "Hau Tran", email = "alex.tran1502@gmail.com" }]
|
||||||
requires-python = ">=3.11,<4.0"
|
requires-python = ">=3.11,<4.0"
|
||||||
|
|||||||
2
machine-learning/uv.lock
generated
2
machine-learning/uv.lock
generated
@@ -919,7 +919,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "immich-ml"
|
name = "immich-ml"
|
||||||
version = "2.4.1"
|
version = "2.5.2"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "aiocache" },
|
{ name = "aiocache" },
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ if [ "$CURRENT_SERVER" != "$NEXT_SERVER" ]; then
|
|||||||
pnpm --prefix server run build
|
pnpm --prefix server run build
|
||||||
( cd ./open-api && bash ./bin/generate-open-api.sh )
|
( cd ./open-api && bash ./bin/generate-open-api.sh )
|
||||||
|
|
||||||
uvx --from=toml-cli toml set --toml-path=machine-learning/pyproject.toml project.version "$NEXT_SERVER"
|
uv version --directory machine-learning "$NEXT_SERVER"
|
||||||
|
|
||||||
./misc/release/archive-version.js "$NEXT_SERVER"
|
./misc/release/archive-version.js "$NEXT_SERVER"
|
||||||
fi
|
fi
|
||||||
|
|||||||
19
mise.toml
19
mise.toml
@@ -1,12 +1,25 @@
|
|||||||
experimental_monorepo_root = true
|
experimental_monorepo_root = true
|
||||||
|
|
||||||
|
[monorepo]
|
||||||
|
config_roots = [
|
||||||
|
"plugins",
|
||||||
|
"server",
|
||||||
|
"cli",
|
||||||
|
"deployment",
|
||||||
|
"mobile",
|
||||||
|
"e2e",
|
||||||
|
"web",
|
||||||
|
"docs",
|
||||||
|
".github",
|
||||||
|
]
|
||||||
|
|
||||||
[tools]
|
[tools]
|
||||||
node = "24.13.0"
|
node = "24.13.0"
|
||||||
flutter = "3.35.7"
|
flutter = "3.35.7"
|
||||||
pnpm = "10.28.0"
|
pnpm = "10.28.0"
|
||||||
terragrunt = "0.93.10"
|
terragrunt = "0.98.0"
|
||||||
opentofu = "1.10.7"
|
opentofu = "1.11.4"
|
||||||
java = "25.0.1"
|
java = "21.0.2"
|
||||||
|
|
||||||
[tools."github:CQLabs/homebrew-dcm"]
|
[tools."github:CQLabs/homebrew-dcm"]
|
||||||
version = "1.30.0"
|
version = "1.30.0"
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"flutter": "3.35.7"
|
|
||||||
}
|
|
||||||
5
mobile/.gitignore
vendored
5
mobile/.gitignore
vendored
@@ -55,8 +55,5 @@ default.isar
|
|||||||
default.isar.lock
|
default.isar.lock
|
||||||
libisar.so
|
libisar.so
|
||||||
|
|
||||||
# FVM Version
|
|
||||||
.fvm/
|
|
||||||
|
|
||||||
# Translation file
|
# Translation file
|
||||||
lib/generated/
|
lib/generated/
|
||||||
|
|||||||
4
mobile/.vscode/settings.json
vendored
4
mobile/.vscode/settings.json
vendored
@@ -2,7 +2,9 @@
|
|||||||
"dart.flutterSdkPath": ".fvm/versions/3.35.7",
|
"dart.flutterSdkPath": ".fvm/versions/3.35.7",
|
||||||
"dart.lineLength": 120,
|
"dart.lineLength": 120,
|
||||||
"[dart]": {
|
"[dart]": {
|
||||||
"editor.rulers": [120]
|
"editor.rulers": [
|
||||||
|
120
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"search.exclude": {
|
"search.exclude": {
|
||||||
"**/.fvm": true
|
"**/.fvm": true
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ The Immich mobile app is a Flutter-based solution leveraging the Isar Database f
|
|||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
1. Setup Flutter toolchain using FVM.
|
1. [Install mise](https://mise.jdx.dev/installing-mise.html).
|
||||||
2. Run `flutter pub get` to install the dependencies.
|
2. Change to the immich directory and trust the mise config with `mise trust`.
|
||||||
3. Run `make translation` to generate the translation file.
|
3. Install tools with mise: `mise install`.
|
||||||
4. Run `fvm flutter run` to start the app.
|
4. Run `flutter pub get` to install the dependencies.
|
||||||
|
5. Run `make translation` to generate the translation file.
|
||||||
|
6. Run `flutter run` to start the app.
|
||||||
|
|
||||||
## Translation
|
## Translation
|
||||||
|
|
||||||
@@ -29,7 +31,7 @@ dcm analyze lib
|
|||||||
```
|
```
|
||||||
|
|
||||||
[DCM](https://dcm.dev/) is a vendor tool that needs to be downloaded manually to run locally.
|
[DCM](https://dcm.dev/) is a vendor tool that needs to be downloaded manually to run locally.
|
||||||
Immich was provided an open source license.
|
Immich was provided an open source license.
|
||||||
To use it, it is important that you do not have an active free tier license (can be verified with `dcm license`).
|
To use it, it is important that you do not have an active free tier license (can be verified with `dcm license`).
|
||||||
If you have write-access to the Immich repository directly, running dcm in your clone should just work.
|
If you have write-access to the Immich repository directly, running dcm in your clone should just work.
|
||||||
If you are working on a clone of a fork, you need to connect to the main Immich repository as remote first:
|
If you are working on a clone of a fork, you need to connect to the main Immich repository as remote first:
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ platform :android do
|
|||||||
task: 'bundle',
|
task: 'bundle',
|
||||||
build_type: 'Release',
|
build_type: 'Release',
|
||||||
properties: {
|
properties: {
|
||||||
"android.injected.version.code" => 3032,
|
"android.injected.version.code" => 3033,
|
||||||
"android.injected.version.name" => "2.5.1",
|
"android.injected.version.name" => "2.5.2",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
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')
|
||||||
|
|||||||
@@ -741,7 +741,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 = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
CUSTOM_GROUP_ID = group.app.immich.share;
|
CUSTOM_GROUP_ID = group.app.immich.share;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@@ -885,7 +885,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
CUSTOM_GROUP_ID = group.app.immich.share;
|
CUSTOM_GROUP_ID = group.app.immich.share;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@@ -915,7 +915,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
CUSTOM_GROUP_ID = group.app.immich.share;
|
CUSTOM_GROUP_ID = group.app.immich.share;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@@ -949,7 +949,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
@@ -992,7 +992,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
@@ -1032,7 +1032,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu17;
|
GCC_C_LANGUAGE_STANDARD = gnu17;
|
||||||
@@ -1071,7 +1071,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
CUSTOM_GROUP_ID = group.app.immich.share;
|
CUSTOM_GROUP_ID = group.app.immich.share;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
@@ -1115,7 +1115,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
CUSTOM_GROUP_ID = group.app.immich.share;
|
CUSTOM_GROUP_ID = group.app.immich.share;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
@@ -1156,7 +1156,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
|
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 233;
|
CURRENT_PROJECT_VERSION = 240;
|
||||||
CUSTOM_GROUP_ID = group.app.immich.share;
|
CUSTOM_GROUP_ID = group.app.immich.share;
|
||||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||||
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
ENABLE_USER_SCRIPT_SANDBOXING = YES;
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ class RemoteImageApiDelegate: NSObject, URLSessionDataDelegate {
|
|||||||
kCGImageSourceShouldCache: false,
|
kCGImageSourceShouldCache: false,
|
||||||
kCGImageSourceShouldCacheImmediately: true,
|
kCGImageSourceShouldCacheImmediately: true,
|
||||||
kCGImageSourceCreateThumbnailWithTransform: true,
|
kCGImageSourceCreateThumbnailWithTransform: true,
|
||||||
|
kCGImageSourceCreateThumbnailFromImageAlways: true
|
||||||
] as CFDictionary
|
] as CFDictionary
|
||||||
|
|
||||||
func urlSession(
|
func urlSession(
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.5.1</string>
|
<string>2.5.2</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>233</string>
|
<string>240</string>
|
||||||
<key>FLTEnableImpeller</key>
|
<key>FLTEnableImpeller</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
|
|||||||
@@ -39,6 +39,14 @@ iOS Release to TestFlight
|
|||||||
|
|
||||||
iOS Manual Release
|
iOS Manual Release
|
||||||
|
|
||||||
|
### ios gha_build_only
|
||||||
|
|
||||||
|
```sh
|
||||||
|
[bundle exec] fastlane ios gha_build_only
|
||||||
|
```
|
||||||
|
|
||||||
|
iOS Build Only (no TestFlight upload)
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||||
|
|||||||
@@ -89,7 +89,9 @@ enum StoreKey<T> {
|
|||||||
cleanupKeepMediaType<int>._(1009),
|
cleanupKeepMediaType<int>._(1009),
|
||||||
cleanupKeepAlbumIds<String>._(1010),
|
cleanupKeepAlbumIds<String>._(1010),
|
||||||
cleanupCutoffDaysAgo<int>._(1011),
|
cleanupCutoffDaysAgo<int>._(1011),
|
||||||
cleanupDefaultsInitialized<bool>._(1012);
|
cleanupDefaultsInitialized<bool>._(1012),
|
||||||
|
|
||||||
|
syncMigrationStatus<String>._(1013);
|
||||||
|
|
||||||
const StoreKey._(this.id);
|
const StoreKey._(this.id);
|
||||||
final int id;
|
final int id;
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:immich_mobile/domain/models/store.model.dart';
|
import 'package:immich_mobile/domain/models/store.model.dart';
|
||||||
import 'package:immich_mobile/domain/models/sync_event.model.dart';
|
import 'package:immich_mobile/domain/models/sync_event.model.dart';
|
||||||
@@ -7,12 +10,21 @@ import 'package:immich_mobile/extensions/platform_extensions.dart';
|
|||||||
import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/local_asset.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/storage.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/storage.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/sync_api.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/sync_api.repository.dart';
|
||||||
|
import 'package:immich_mobile/infrastructure/repositories/sync_migration.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/trashed_local_asset.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/trashed_local_asset.repository.dart';
|
||||||
import 'package:immich_mobile/repositories/local_files_manager.repository.dart';
|
import 'package:immich_mobile/repositories/local_files_manager.repository.dart';
|
||||||
|
import 'package:immich_mobile/services/api.service.dart';
|
||||||
|
import 'package:immich_mobile/utils/semver.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:openapi/api.dart';
|
import 'package:openapi/api.dart';
|
||||||
|
|
||||||
|
enum SyncMigrationTask {
|
||||||
|
v20260128_ResetExifV1, // EXIF table has incorrect width and height information.
|
||||||
|
v20260128_CopyExifWidthHeightToAsset, // Asset table has incorrect width and height for video ratio calculations.
|
||||||
|
v20260128_ResetAssetV1, // Asset v2.5.0 has width and height information that were edited assets.
|
||||||
|
}
|
||||||
|
|
||||||
class SyncStreamService {
|
class SyncStreamService {
|
||||||
final Logger _logger = Logger('SyncStreamService');
|
final Logger _logger = Logger('SyncStreamService');
|
||||||
|
|
||||||
@@ -22,6 +34,8 @@ class SyncStreamService {
|
|||||||
final DriftTrashedLocalAssetRepository _trashedLocalAssetRepository;
|
final DriftTrashedLocalAssetRepository _trashedLocalAssetRepository;
|
||||||
final LocalFilesManagerRepository _localFilesManager;
|
final LocalFilesManagerRepository _localFilesManager;
|
||||||
final StorageRepository _storageRepository;
|
final StorageRepository _storageRepository;
|
||||||
|
final SyncMigrationRepository _syncMigrationRepository;
|
||||||
|
final ApiService _api;
|
||||||
final bool Function()? _cancelChecker;
|
final bool Function()? _cancelChecker;
|
||||||
|
|
||||||
SyncStreamService({
|
SyncStreamService({
|
||||||
@@ -31,6 +45,8 @@ class SyncStreamService {
|
|||||||
required DriftTrashedLocalAssetRepository trashedLocalAssetRepository,
|
required DriftTrashedLocalAssetRepository trashedLocalAssetRepository,
|
||||||
required LocalFilesManagerRepository localFilesManager,
|
required LocalFilesManagerRepository localFilesManager,
|
||||||
required StorageRepository storageRepository,
|
required StorageRepository storageRepository,
|
||||||
|
required SyncMigrationRepository syncMigrationRepository,
|
||||||
|
required ApiService api,
|
||||||
bool Function()? cancelChecker,
|
bool Function()? cancelChecker,
|
||||||
}) : _syncApiRepository = syncApiRepository,
|
}) : _syncApiRepository = syncApiRepository,
|
||||||
_syncStreamRepository = syncStreamRepository,
|
_syncStreamRepository = syncStreamRepository,
|
||||||
@@ -38,12 +54,32 @@ class SyncStreamService {
|
|||||||
_trashedLocalAssetRepository = trashedLocalAssetRepository,
|
_trashedLocalAssetRepository = trashedLocalAssetRepository,
|
||||||
_localFilesManager = localFilesManager,
|
_localFilesManager = localFilesManager,
|
||||||
_storageRepository = storageRepository,
|
_storageRepository = storageRepository,
|
||||||
|
_syncMigrationRepository = syncMigrationRepository,
|
||||||
|
_api = api,
|
||||||
_cancelChecker = cancelChecker;
|
_cancelChecker = cancelChecker;
|
||||||
|
|
||||||
bool get isCancelled => _cancelChecker?.call() ?? false;
|
bool get isCancelled => _cancelChecker?.call() ?? false;
|
||||||
|
|
||||||
Future<bool> sync() async {
|
Future<bool> sync() async {
|
||||||
_logger.info("Remote sync request for user");
|
_logger.info("Remote sync request for user");
|
||||||
|
final serverVersion = await _api.serverInfoApi.getServerVersion();
|
||||||
|
if (serverVersion == null) {
|
||||||
|
_logger.severe("Cannot perform sync: unable to determine server version");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
final semVer = SemVer(major: serverVersion.major, minor: serverVersion.minor, patch: serverVersion.patch_);
|
||||||
|
|
||||||
|
final value = Store.get(StoreKey.syncMigrationStatus, "[]");
|
||||||
|
final migrations = (jsonDecode(value) as List).cast<String>();
|
||||||
|
int previousLength = migrations.length;
|
||||||
|
await _runPreSyncTasks(migrations, semVer);
|
||||||
|
|
||||||
|
if (migrations.length != previousLength) {
|
||||||
|
_logger.info("Updated pre-sync migration status: $migrations");
|
||||||
|
await Store.put(StoreKey.syncMigrationStatus, jsonEncode(migrations));
|
||||||
|
}
|
||||||
|
|
||||||
// Start the sync stream and handle events
|
// Start the sync stream and handle events
|
||||||
bool shouldReset = false;
|
bool shouldReset = false;
|
||||||
await _syncApiRepository.streamChanges(_handleEvents, onReset: () => shouldReset = true);
|
await _syncApiRepository.streamChanges(_handleEvents, onReset: () => shouldReset = true);
|
||||||
@@ -51,9 +87,56 @@ class SyncStreamService {
|
|||||||
_logger.info("Resetting sync state as requested by server");
|
_logger.info("Resetting sync state as requested by server");
|
||||||
await _syncApiRepository.streamChanges(_handleEvents);
|
await _syncApiRepository.streamChanges(_handleEvents);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
previousLength = migrations.length;
|
||||||
|
await _runPostSyncTasks(migrations);
|
||||||
|
|
||||||
|
if (migrations.length != previousLength) {
|
||||||
|
_logger.info("Updated pre-sync migration status: $migrations");
|
||||||
|
await Store.put(StoreKey.syncMigrationStatus, jsonEncode(migrations));
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> _runPreSyncTasks(List<String> migrations, SemVer semVer) async {
|
||||||
|
if (!migrations.contains(SyncMigrationTask.v20260128_ResetExifV1.name)) {
|
||||||
|
_logger.info("Running pre-sync task: v20260128_ResetExifV1");
|
||||||
|
await _syncApiRepository.deleteSyncAck([
|
||||||
|
SyncEntityType.assetExifV1,
|
||||||
|
SyncEntityType.partnerAssetExifV1,
|
||||||
|
SyncEntityType.albumAssetExifCreateV1,
|
||||||
|
SyncEntityType.albumAssetExifUpdateV1,
|
||||||
|
]);
|
||||||
|
migrations.add(SyncMigrationTask.v20260128_ResetExifV1.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!migrations.contains(SyncMigrationTask.v20260128_ResetAssetV1.name) &&
|
||||||
|
semVer >= const SemVer(major: 2, minor: 5, patch: 0)) {
|
||||||
|
_logger.info("Running pre-sync task: v20260128_ResetAssetV1");
|
||||||
|
await _syncApiRepository.deleteSyncAck([
|
||||||
|
SyncEntityType.assetV1,
|
||||||
|
SyncEntityType.partnerAssetV1,
|
||||||
|
SyncEntityType.albumAssetCreateV1,
|
||||||
|
SyncEntityType.albumAssetUpdateV1,
|
||||||
|
]);
|
||||||
|
|
||||||
|
migrations.add(SyncMigrationTask.v20260128_ResetAssetV1.name);
|
||||||
|
|
||||||
|
if (!migrations.contains(SyncMigrationTask.v20260128_CopyExifWidthHeightToAsset.name)) {
|
||||||
|
migrations.add(SyncMigrationTask.v20260128_CopyExifWidthHeightToAsset.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _runPostSyncTasks(List<String> migrations) async {
|
||||||
|
if (!migrations.contains(SyncMigrationTask.v20260128_CopyExifWidthHeightToAsset.name)) {
|
||||||
|
_logger.info("Running post-sync task: v20260128_CopyExifWidthHeightToAsset");
|
||||||
|
await _syncMigrationRepository.v20260128CopyExifWidthHeightToAsset();
|
||||||
|
migrations.add(SyncMigrationTask.v20260128_CopyExifWidthHeightToAsset.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _handleEvents(List<SyncEvent> events, Function() abort, Function() reset) async {
|
Future<void> _handleEvents(List<SyncEvent> events, Function() abort, Function() reset) async {
|
||||||
List<SyncEvent> items = [];
|
List<SyncEvent> items = [];
|
||||||
for (final event in events) {
|
for (final event in events) {
|
||||||
|
|||||||
@@ -19,6 +19,10 @@ class SyncApiRepository {
|
|||||||
return _api.syncApi.sendSyncAck(SyncAckSetDto(acks: data));
|
return _api.syncApi.sendSyncAck(SyncAckSetDto(acks: data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> deleteSyncAck(List<SyncEntityType> types) {
|
||||||
|
return _api.syncApi.deleteSyncAck(SyncAckDeleteDto(types: types));
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> streamChanges(
|
Future<void> streamChanges(
|
||||||
Future<void> Function(List<SyncEvent>, Function() abort, Function() reset) onData, {
|
Future<void> Function(List<SyncEvent>, Function() abort, Function() reset) onData, {
|
||||||
Function()? onReset,
|
Function()? onReset,
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
|
||||||
|
|
||||||
|
class SyncMigrationRepository extends DriftDatabaseRepository {
|
||||||
|
final Drift _db;
|
||||||
|
|
||||||
|
const SyncMigrationRepository(super.db) : _db = db;
|
||||||
|
|
||||||
|
Future<void> v20260128CopyExifWidthHeightToAsset() async {
|
||||||
|
await _db.customStatement('''
|
||||||
|
UPDATE remote_asset_entity
|
||||||
|
SET width = CASE
|
||||||
|
WHEN exif.orientation IN ('5', '6', '7', '8', '-90', '90') THEN exif.height
|
||||||
|
ELSE exif.width
|
||||||
|
END,
|
||||||
|
height = CASE
|
||||||
|
WHEN exif.orientation IN ('5', '6', '7', '8', '-90', '90') THEN exif.width
|
||||||
|
ELSE exif.height
|
||||||
|
END
|
||||||
|
FROM remote_exif_entity exif
|
||||||
|
WHERE exif.asset_id = remote_asset_entity.id
|
||||||
|
AND (exif.width IS NOT NULL OR exif.height IS NOT NULL);
|
||||||
|
''');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,7 +20,7 @@ enum VersionStatus {
|
|||||||
|
|
||||||
class ServerInfo {
|
class ServerInfo {
|
||||||
final ServerVersion serverVersion;
|
final ServerVersion serverVersion;
|
||||||
final ServerVersion latestVersion;
|
final ServerVersion? latestVersion;
|
||||||
final ServerFeatures serverFeatures;
|
final ServerFeatures serverFeatures;
|
||||||
final ServerConfig serverConfig;
|
final ServerConfig serverConfig;
|
||||||
final ServerDiskInfo serverDiskInfo;
|
final ServerDiskInfo serverDiskInfo;
|
||||||
|
|||||||
@@ -92,7 +92,9 @@ class AssetViewer extends ConsumerStatefulWidget {
|
|||||||
if (asset.isVideo || asset.isMotionPhoto) {
|
if (asset.isVideo || asset.isMotionPhoto) {
|
||||||
ref.read(videoPlaybackValueProvider.notifier).reset();
|
ref.read(videoPlaybackValueProvider.notifier).reset();
|
||||||
ref.read(videoPlayerControlsProvider.notifier).pause();
|
ref.read(videoPlayerControlsProvider.notifier).pause();
|
||||||
// Hide controls by default for videos and motion photos
|
}
|
||||||
|
// Hide controls by default for videos
|
||||||
|
if (asset.isVideo) {
|
||||||
ref.read(assetViewerProvider.notifier).setControls(false);
|
ref.read(assetViewerProvider.notifier).setControls(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,6 +149,11 @@ class _AssetViewerState extends ConsumerState<AssetViewer> {
|
|||||||
if (asset != null) {
|
if (asset != null) {
|
||||||
_stackChildrenKeepAlive = ref.read(stackChildrenNotifier(asset).notifier).ref.keepAlive();
|
_stackChildrenKeepAlive = ref.read(stackChildrenNotifier(asset).notifier).ref.keepAlive();
|
||||||
}
|
}
|
||||||
|
if (ref.read(assetViewerProvider).showingControls) {
|
||||||
|
unawaited(SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge));
|
||||||
|
} else {
|
||||||
|
unawaited(SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'package:immich_mobile/domain/services/hash.service.dart';
|
|||||||
import 'package:immich_mobile/domain/services/local_sync.service.dart';
|
import 'package:immich_mobile/domain/services/local_sync.service.dart';
|
||||||
import 'package:immich_mobile/domain/services/sync_stream.service.dart';
|
import 'package:immich_mobile/domain/services/sync_stream.service.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/sync_api.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/sync_api.repository.dart';
|
||||||
|
import 'package:immich_mobile/infrastructure/repositories/sync_migration.repository.dart';
|
||||||
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
|
import 'package:immich_mobile/infrastructure/repositories/sync_stream.repository.dart';
|
||||||
import 'package:immich_mobile/providers/api.provider.dart';
|
import 'package:immich_mobile/providers/api.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
|
||||||
@@ -13,6 +14,8 @@ import 'package:immich_mobile/providers/infrastructure/platform.provider.dart';
|
|||||||
import 'package:immich_mobile/providers/infrastructure/storage.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/storage.provider.dart';
|
||||||
import 'package:immich_mobile/repositories/local_files_manager.repository.dart';
|
import 'package:immich_mobile/repositories/local_files_manager.repository.dart';
|
||||||
|
|
||||||
|
final syncMigrationRepositoryProvider = Provider((ref) => SyncMigrationRepository(ref.watch(driftProvider)));
|
||||||
|
|
||||||
final syncStreamServiceProvider = Provider(
|
final syncStreamServiceProvider = Provider(
|
||||||
(ref) => SyncStreamService(
|
(ref) => SyncStreamService(
|
||||||
syncApiRepository: ref.watch(syncApiRepositoryProvider),
|
syncApiRepository: ref.watch(syncApiRepositoryProvider),
|
||||||
@@ -21,6 +24,8 @@ final syncStreamServiceProvider = Provider(
|
|||||||
trashedLocalAssetRepository: ref.watch(trashedLocalAssetRepository),
|
trashedLocalAssetRepository: ref.watch(trashedLocalAssetRepository),
|
||||||
localFilesManager: ref.watch(localFilesManagerRepositoryProvider),
|
localFilesManager: ref.watch(localFilesManagerRepositoryProvider),
|
||||||
storageRepository: ref.watch(storageRepositoryProvider),
|
storageRepository: ref.watch(storageRepositoryProvider),
|
||||||
|
syncMigrationRepository: ref.watch(syncMigrationRepositoryProvider),
|
||||||
|
api: ref.watch(apiServiceProvider),
|
||||||
cancelChecker: ref.watch(cancellationProvider),
|
cancelChecker: ref.watch(cancellationProvider),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
|
|||||||
: super(
|
: super(
|
||||||
const ServerInfo(
|
const ServerInfo(
|
||||||
serverVersion: ServerVersion(major: 0, minor: 0, patch: 0),
|
serverVersion: ServerVersion(major: 0, minor: 0, patch: 0),
|
||||||
latestVersion: ServerVersion(major: 0, minor: 0, patch: 0),
|
latestVersion: null,
|
||||||
serverFeatures: ServerFeatures(map: true, trash: true, oauthEnabled: false, passwordLogin: true),
|
serverFeatures: ServerFeatures(map: true, trash: true, oauthEnabled: false, passwordLogin: true),
|
||||||
serverConfig: ServerConfig(
|
serverConfig: ServerConfig(
|
||||||
trashDays: 30,
|
trashDays: 30,
|
||||||
@@ -43,7 +43,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
|
|||||||
try {
|
try {
|
||||||
final serverVersion = await _serverInfoService.getServerVersion();
|
final serverVersion = await _serverInfoService.getServerVersion();
|
||||||
|
|
||||||
// using isClientOutOfDate since that will show to users reguardless of if they are an admin
|
// using isClientOutOfDate since that will show to users regardless of if they are an admin
|
||||||
if (serverVersion == null) {
|
if (serverVersion == null) {
|
||||||
state = state.copyWith(versionStatus: VersionStatus.error);
|
state = state.copyWith(versionStatus: VersionStatus.error);
|
||||||
return;
|
return;
|
||||||
@@ -76,7 +76,7 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
|
|||||||
state = state.copyWith(versionStatus: VersionStatus.upToDate);
|
state = state.copyWith(versionStatus: VersionStatus.upToDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
handleReleaseInfo(ServerVersion serverVersion, ServerVersion latestVersion) {
|
handleReleaseInfo(ServerVersion serverVersion, ServerVersion? latestVersion) {
|
||||||
// Update local server version
|
// Update local server version
|
||||||
_checkServerVersionMismatch(serverVersion, latestVersion: latestVersion);
|
_checkServerVersionMismatch(serverVersion, latestVersion: latestVersion);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import 'package:immich_mobile/utils/datetime_helpers.dart';
|
|||||||
import 'package:immich_mobile/utils/debug_print.dart';
|
import 'package:immich_mobile/utils/debug_print.dart';
|
||||||
import 'package:immich_mobile/utils/diff.dart';
|
import 'package:immich_mobile/utils/diff.dart';
|
||||||
import 'package:isar/isar.dart';
|
import 'package:isar/isar.dart';
|
||||||
|
|
||||||
// ignore: import_rule_photo_manager
|
// ignore: import_rule_photo_manager
|
||||||
import 'package:photo_manager/photo_manager.dart';
|
import 'package:photo_manager/photo_manager.dart';
|
||||||
|
|
||||||
@@ -88,7 +89,6 @@ Future<void> migrateDatabaseIfNeeded(Isar db, Drift drift) async {
|
|||||||
|
|
||||||
if (version < 20 && Store.isBetaTimelineEnabled) {
|
if (version < 20 && Store.isBetaTimelineEnabled) {
|
||||||
await _syncLocalAlbumIsIosSharedAlbum(drift);
|
await _syncLocalAlbumIsIosSharedAlbum(drift);
|
||||||
await _backfillAssetExifWidthHeight(drift);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetVersion >= 12) {
|
if (targetVersion >= 12) {
|
||||||
@@ -282,22 +282,6 @@ Future<void> _syncLocalAlbumIsIosSharedAlbum(Drift db) async {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _backfillAssetExifWidthHeight(Drift db) async {
|
|
||||||
try {
|
|
||||||
await db.customStatement('''
|
|
||||||
UPDATE remote_exif_entity AS remote_exif
|
|
||||||
SET width = asset.width,
|
|
||||||
height = asset.height
|
|
||||||
FROM remote_asset_entity AS asset
|
|
||||||
WHERE remote_exif.asset_id = asset.id;
|
|
||||||
''');
|
|
||||||
|
|
||||||
dPrint(() => "[MIGRATION] Successfully backfilled asset exif width and height");
|
|
||||||
} catch (error) {
|
|
||||||
dPrint(() => "[MIGRATION] Error while backfilling asset exif width and height: $error");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> migrateDeviceAssetToSqlite(Isar db, Drift drift) async {
|
Future<void> migrateDeviceAssetToSqlite(Isar db, Drift drift) async {
|
||||||
try {
|
try {
|
||||||
final isarDeviceAssets = await db.deviceAssetEntitys.where().findAll();
|
final isarDeviceAssets = await db.deviceAssetEntitys.where().findAll();
|
||||||
|
|||||||
@@ -170,50 +170,52 @@ class AppBarServerInfo extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const Padding(padding: EdgeInsets.symmetric(horizontal: 10), child: Divider(thickness: 1)),
|
if (serverInfoState.latestVersion != null) ...[
|
||||||
Row(
|
const Padding(padding: EdgeInsets.symmetric(horizontal: 10), child: Divider(thickness: 1)),
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
Row(
|
||||||
children: [
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
Expanded(
|
children: [
|
||||||
child: Padding(
|
Expanded(
|
||||||
padding: const EdgeInsets.only(left: 10.0),
|
child: Padding(
|
||||||
child: Row(
|
padding: const EdgeInsets.only(left: 10.0),
|
||||||
children: [
|
child: Row(
|
||||||
if (serverInfoState.versionStatus == VersionStatus.serverOutOfDate)
|
children: [
|
||||||
const Padding(
|
if (serverInfoState.versionStatus == VersionStatus.serverOutOfDate)
|
||||||
padding: EdgeInsets.only(right: 5.0),
|
const Padding(
|
||||||
child: Icon(Icons.info, color: Color.fromARGB(255, 243, 188, 106), size: 12),
|
padding: EdgeInsets.only(right: 5.0),
|
||||||
|
child: Icon(Icons.info, color: Color.fromARGB(255, 243, 188, 106), size: 12),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"latest_version".tr(),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: titleFontSize,
|
||||||
|
color: context.textTheme.labelSmall?.color,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
Text(
|
],
|
||||||
"latest_version".tr(),
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: titleFontSize,
|
|
||||||
color: context.textTheme.labelSmall?.color,
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
flex: 0,
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.only(right: 10.0),
|
|
||||||
child: Text(
|
|
||||||
serverInfoState.latestVersion.major > 0
|
|
||||||
? "${serverInfoState.latestVersion.major}.${serverInfoState.latestVersion.minor}.${serverInfoState.latestVersion.patch}"
|
|
||||||
: "--",
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: contentFontSize,
|
|
||||||
color: context.colorScheme.onSurfaceSecondary,
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
Expanded(
|
||||||
],
|
flex: 0,
|
||||||
),
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(right: 10.0),
|
||||||
|
child: Text(
|
||||||
|
serverInfoState.latestVersion!.major > 0
|
||||||
|
? "${serverInfoState.latestVersion!.major}.${serverInfoState.latestVersion!.minor}.${serverInfoState.latestVersion!.patch}"
|
||||||
|
: "--",
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: contentFontSize,
|
||||||
|
color: context.colorScheme.onSurfaceSecondary,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -414,6 +414,7 @@ class LoginForm extends HookConsumerWidget {
|
|||||||
keyboardAction: TextInputAction.next,
|
keyboardAction: TextInputAction.next,
|
||||||
keyboardType: TextInputType.url,
|
keyboardType: TextInputType.url,
|
||||||
autofillHints: const [AutofillHints.url],
|
autofillHints: const [AutofillHints.url],
|
||||||
|
autoCorrect: false,
|
||||||
onSubmit: (ctx, _) => ImmichForm.of(ctx).submit(),
|
onSubmit: (ctx, _) => ImmichForm.of(ctx).submit(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -203,9 +203,13 @@ class PhotoViewGestureRecognizer extends ScaleGestureRecognizer {
|
|||||||
|
|
||||||
void _decideIfWeAcceptEvent(PointerEvent event) {
|
void _decideIfWeAcceptEvent(PointerEvent event) {
|
||||||
final move = _initialFocalPoint! - _currentFocalPoint!;
|
final move = _initialFocalPoint! - _currentFocalPoint!;
|
||||||
final bool shouldMove = validateAxis == Axis.vertical
|
|
||||||
? hitDetector!.shouldMove(move, Axis.vertical)
|
// Accept gesture if movement is possible in the direction the user is swiping
|
||||||
: hitDetector!.shouldMove(move, Axis.horizontal);
|
final bool isHorizontalGesture = move.dx.abs() > move.dy.abs();
|
||||||
|
final bool shouldMove = isHorizontalGesture
|
||||||
|
? hitDetector!.shouldMove(move, Axis.horizontal)
|
||||||
|
: hitDetector!.shouldMove(move, Axis.vertical);
|
||||||
|
|
||||||
if (shouldMove || _pointerLocations.keys.length > 1) {
|
if (shouldMove || _pointerLocations.keys.length > 1) {
|
||||||
final double spanDelta = (_currentSpan! - _initialSpan!).abs();
|
final double spanDelta = (_currentSpan! - _initialSpan!).abs();
|
||||||
final double focalPointDelta = (_currentFocalPoint! - _initialFocalPoint!).distance;
|
final double focalPointDelta = (_currentFocalPoint! - _initialFocalPoint!).distance;
|
||||||
|
|||||||
2
mobile/openapi/README.md
generated
2
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: 2.5.1
|
- API version: 2.5.2
|
||||||
- Generator version: 7.8.0
|
- Generator version: 7.8.0
|
||||||
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
||||||
|
|
||||||
|
|||||||
14
mobile/openapi/lib/api/activities_api.dart
generated
14
mobile/openapi/lib/api/activities_api.dart
generated
@@ -130,14 +130,19 @@ class ActivitiesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
|
/// Album ID
|
||||||
///
|
///
|
||||||
/// * [String] assetId:
|
/// * [String] assetId:
|
||||||
|
/// Asset ID (if activity is for an asset)
|
||||||
///
|
///
|
||||||
/// * [ReactionLevel] level:
|
/// * [ReactionLevel] level:
|
||||||
|
/// Filter by activity level
|
||||||
///
|
///
|
||||||
/// * [ReactionType] type:
|
/// * [ReactionType] type:
|
||||||
|
/// Filter by activity type
|
||||||
///
|
///
|
||||||
/// * [String] userId:
|
/// * [String] userId:
|
||||||
|
/// Filter by user ID
|
||||||
Future<Response> getActivitiesWithHttpInfo(String albumId, { String? assetId, ReactionLevel? level, ReactionType? type, String? userId, }) async {
|
Future<Response> getActivitiesWithHttpInfo(String albumId, { String? assetId, ReactionLevel? level, ReactionType? type, String? userId, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/activities';
|
final apiPath = r'/activities';
|
||||||
@@ -184,14 +189,19 @@ class ActivitiesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
|
/// Album ID
|
||||||
///
|
///
|
||||||
/// * [String] assetId:
|
/// * [String] assetId:
|
||||||
|
/// Asset ID (if activity is for an asset)
|
||||||
///
|
///
|
||||||
/// * [ReactionLevel] level:
|
/// * [ReactionLevel] level:
|
||||||
|
/// Filter by activity level
|
||||||
///
|
///
|
||||||
/// * [ReactionType] type:
|
/// * [ReactionType] type:
|
||||||
|
/// Filter by activity type
|
||||||
///
|
///
|
||||||
/// * [String] userId:
|
/// * [String] userId:
|
||||||
|
/// Filter by user ID
|
||||||
Future<List<ActivityResponseDto>?> getActivities(String albumId, { String? assetId, ReactionLevel? level, ReactionType? type, String? userId, }) async {
|
Future<List<ActivityResponseDto>?> getActivities(String albumId, { String? assetId, ReactionLevel? level, ReactionType? type, String? userId, }) async {
|
||||||
final response = await getActivitiesWithHttpInfo(albumId, assetId: assetId, level: level, type: type, userId: userId, );
|
final response = await getActivitiesWithHttpInfo(albumId, assetId: assetId, level: level, type: type, userId: userId, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -219,8 +229,10 @@ class ActivitiesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
|
/// Album ID
|
||||||
///
|
///
|
||||||
/// * [String] assetId:
|
/// * [String] assetId:
|
||||||
|
/// Asset ID (if activity is for an asset)
|
||||||
Future<Response> getActivityStatisticsWithHttpInfo(String albumId, { String? assetId, }) async {
|
Future<Response> getActivityStatisticsWithHttpInfo(String albumId, { String? assetId, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/activities/statistics';
|
final apiPath = r'/activities/statistics';
|
||||||
@@ -258,8 +270,10 @@ class ActivitiesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId (required):
|
/// * [String] albumId (required):
|
||||||
|
/// Album ID
|
||||||
///
|
///
|
||||||
/// * [String] assetId:
|
/// * [String] assetId:
|
||||||
|
/// Asset ID (if activity is for an asset)
|
||||||
Future<ActivityStatisticsResponseDto?> getActivityStatistics(String albumId, { String? assetId, }) async {
|
Future<ActivityStatisticsResponseDto?> getActivityStatistics(String albumId, { String? assetId, }) async {
|
||||||
final response = await getActivityStatisticsWithHttpInfo(albumId, assetId: assetId, );
|
final response = await getActivityStatisticsWithHttpInfo(albumId, assetId: assetId, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
8
mobile/openapi/lib/api/albums_api.dart
generated
8
mobile/openapi/lib/api/albums_api.dart
generated
@@ -347,6 +347,7 @@ class AlbumsApi {
|
|||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [bool] withoutAssets:
|
/// * [bool] withoutAssets:
|
||||||
|
/// Exclude assets from response
|
||||||
Future<Response> getAlbumInfoWithHttpInfo(String id, { String? key, String? slug, bool? withoutAssets, }) async {
|
Future<Response> getAlbumInfoWithHttpInfo(String id, { String? key, String? slug, bool? withoutAssets, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/albums/{id}'
|
final apiPath = r'/albums/{id}'
|
||||||
@@ -396,6 +397,7 @@ class AlbumsApi {
|
|||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [bool] withoutAssets:
|
/// * [bool] withoutAssets:
|
||||||
|
/// Exclude assets from response
|
||||||
Future<AlbumResponseDto?> getAlbumInfo(String id, { String? key, String? slug, bool? withoutAssets, }) async {
|
Future<AlbumResponseDto?> getAlbumInfo(String id, { String? key, String? slug, bool? withoutAssets, }) async {
|
||||||
final response = await getAlbumInfoWithHttpInfo(id, key: key, slug: slug, withoutAssets: withoutAssets, );
|
final response = await getAlbumInfoWithHttpInfo(id, key: key, slug: slug, withoutAssets: withoutAssets, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -468,9 +470,10 @@ class AlbumsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId:
|
/// * [String] assetId:
|
||||||
/// Only returns albums that contain the asset Ignores the shared parameter undefined: get all albums
|
/// Filter albums containing this asset ID (ignores shared parameter)
|
||||||
///
|
///
|
||||||
/// * [bool] shared:
|
/// * [bool] shared:
|
||||||
|
/// Filter by shared status: true = only shared, false = only own, undefined = all
|
||||||
Future<Response> getAllAlbumsWithHttpInfo({ String? assetId, bool? shared, }) async {
|
Future<Response> getAllAlbumsWithHttpInfo({ String? assetId, bool? shared, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/albums';
|
final apiPath = r'/albums';
|
||||||
@@ -510,9 +513,10 @@ class AlbumsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] assetId:
|
/// * [String] assetId:
|
||||||
/// Only returns albums that contain the asset Ignores the shared parameter undefined: get all albums
|
/// Filter albums containing this asset ID (ignores shared parameter)
|
||||||
///
|
///
|
||||||
/// * [bool] shared:
|
/// * [bool] shared:
|
||||||
|
/// Filter by shared status: true = only shared, false = only own, undefined = all
|
||||||
Future<List<AlbumResponseDto>?> getAllAlbums({ String? assetId, bool? shared, }) async {
|
Future<List<AlbumResponseDto>?> getAllAlbums({ String? assetId, bool? shared, }) async {
|
||||||
final response = await getAllAlbumsWithHttpInfo( assetId: assetId, shared: shared, );
|
final response = await getAllAlbumsWithHttpInfo( assetId: assetId, shared: shared, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
62
mobile/openapi/lib/api/assets_api.dart
generated
62
mobile/openapi/lib/api/assets_api.dart
generated
@@ -185,8 +185,10 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
/// Asset ID
|
||||||
///
|
///
|
||||||
/// * [String] key (required):
|
/// * [String] key (required):
|
||||||
|
/// Metadata key
|
||||||
Future<Response> deleteAssetMetadataWithHttpInfo(String id, String key,) async {
|
Future<Response> deleteAssetMetadataWithHttpInfo(String id, String key,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/{id}/metadata/{key}'
|
final apiPath = r'/assets/{id}/metadata/{key}'
|
||||||
@@ -221,8 +223,10 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
/// Asset ID
|
||||||
///
|
///
|
||||||
/// * [String] key (required):
|
/// * [String] key (required):
|
||||||
|
/// Metadata key
|
||||||
Future<void> deleteAssetMetadata(String id, String key,) async {
|
Future<void> deleteAssetMetadata(String id, String key,) async {
|
||||||
final response = await deleteAssetMetadataWithHttpInfo(id, key,);
|
final response = await deleteAssetMetadataWithHttpInfo(id, key,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -337,6 +341,7 @@ class AssetsApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [bool] edited:
|
/// * [bool] edited:
|
||||||
|
/// Return edited asset if available
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
@@ -386,6 +391,7 @@ class AssetsApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [bool] edited:
|
/// * [bool] edited:
|
||||||
|
/// Return edited asset if available
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
@@ -475,6 +481,7 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
Future<Response> getAllUserAssetsByDeviceIdWithHttpInfo(String deviceId,) async {
|
Future<Response> getAllUserAssetsByDeviceIdWithHttpInfo(String deviceId,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/device/{deviceId}'
|
final apiPath = r'/assets/device/{deviceId}'
|
||||||
@@ -508,6 +515,7 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
Future<List<String>?> getAllUserAssetsByDeviceId(String deviceId,) async {
|
Future<List<String>?> getAllUserAssetsByDeviceId(String deviceId,) async {
|
||||||
final response = await getAllUserAssetsByDeviceIdWithHttpInfo(deviceId,);
|
final response = await getAllUserAssetsByDeviceIdWithHttpInfo(deviceId,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -724,8 +732,10 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
/// Asset ID
|
||||||
///
|
///
|
||||||
/// * [String] key (required):
|
/// * [String] key (required):
|
||||||
|
/// Metadata key
|
||||||
Future<Response> getAssetMetadataByKeyWithHttpInfo(String id, String key,) async {
|
Future<Response> getAssetMetadataByKeyWithHttpInfo(String id, String key,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/{id}/metadata/{key}'
|
final apiPath = r'/assets/{id}/metadata/{key}'
|
||||||
@@ -760,8 +770,10 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
/// Asset ID
|
||||||
///
|
///
|
||||||
/// * [String] key (required):
|
/// * [String] key (required):
|
||||||
|
/// Metadata key
|
||||||
Future<AssetMetadataResponseDto?> getAssetMetadataByKey(String id, String key,) async {
|
Future<AssetMetadataResponseDto?> getAssetMetadataByKey(String id, String key,) async {
|
||||||
final response = await getAssetMetadataByKeyWithHttpInfo(id, key,);
|
final response = await getAssetMetadataByKeyWithHttpInfo(id, key,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -846,10 +858,13 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Filter by trash status
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Filter by visibility
|
||||||
Future<Response> getAssetStatisticsWithHttpInfo({ bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
Future<Response> getAssetStatisticsWithHttpInfo({ bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/statistics';
|
final apiPath = r'/assets/statistics';
|
||||||
@@ -892,10 +907,13 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Filter by trash status
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Filter by visibility
|
||||||
Future<AssetStatsResponseDto?> getAssetStatistics({ bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
Future<AssetStatsResponseDto?> getAssetStatistics({ bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
||||||
final response = await getAssetStatisticsWithHttpInfo( isFavorite: isFavorite, isTrashed: isTrashed, visibility: visibility, );
|
final response = await getAssetStatisticsWithHttpInfo( isFavorite: isFavorite, isTrashed: isTrashed, visibility: visibility, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -920,6 +938,7 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [num] count:
|
/// * [num] count:
|
||||||
|
/// Number of random assets to return
|
||||||
Future<Response> getRandomWithHttpInfo({ num? count, }) async {
|
Future<Response> getRandomWithHttpInfo({ num? count, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/random';
|
final apiPath = r'/assets/random';
|
||||||
@@ -956,6 +975,7 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [num] count:
|
/// * [num] count:
|
||||||
|
/// Number of random assets to return
|
||||||
Future<List<AssetResponseDto>?> getRandom({ num? count, }) async {
|
Future<List<AssetResponseDto>?> getRandom({ num? count, }) async {
|
||||||
final response = await getRandomWithHttpInfo( count: count, );
|
final response = await getRandomWithHttpInfo( count: count, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -1106,22 +1126,29 @@ class AssetsApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
/// Asset file data
|
||||||
///
|
///
|
||||||
/// * [String] deviceAssetId (required):
|
/// * [String] deviceAssetId (required):
|
||||||
|
/// Device asset ID
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAt (required):
|
/// * [DateTime] fileCreatedAt (required):
|
||||||
|
/// File creation date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileModifiedAt (required):
|
/// * [DateTime] fileModifiedAt (required):
|
||||||
|
/// File modification date
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [String] duration:
|
/// * [String] duration:
|
||||||
|
/// Duration (for videos)
|
||||||
///
|
///
|
||||||
/// * [String] filename:
|
/// * [String] filename:
|
||||||
|
/// Filename
|
||||||
Future<Response> replaceAssetWithHttpInfo(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
Future<Response> replaceAssetWithHttpInfo(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/{id}/original'
|
final apiPath = r'/assets/{id}/original'
|
||||||
@@ -1198,22 +1225,29 @@ class AssetsApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
/// Asset file data
|
||||||
///
|
///
|
||||||
/// * [String] deviceAssetId (required):
|
/// * [String] deviceAssetId (required):
|
||||||
|
/// Device asset ID
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAt (required):
|
/// * [DateTime] fileCreatedAt (required):
|
||||||
|
/// File creation date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileModifiedAt (required):
|
/// * [DateTime] fileModifiedAt (required):
|
||||||
|
/// File modification date
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [String] duration:
|
/// * [String] duration:
|
||||||
|
/// Duration (for videos)
|
||||||
///
|
///
|
||||||
/// * [String] filename:
|
/// * [String] filename:
|
||||||
|
/// Filename
|
||||||
Future<AssetMediaResponseDto?> replaceAsset(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
Future<AssetMediaResponseDto?> replaceAsset(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
||||||
final response = await replaceAssetWithHttpInfo(id, assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, duration: duration, filename: filename, );
|
final response = await replaceAssetWithHttpInfo(id, assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, duration: duration, filename: filename, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -1518,14 +1552,19 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
/// Asset file data
|
||||||
///
|
///
|
||||||
/// * [String] deviceAssetId (required):
|
/// * [String] deviceAssetId (required):
|
||||||
|
/// Device asset ID
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAt (required):
|
/// * [DateTime] fileCreatedAt (required):
|
||||||
|
/// File creation date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileModifiedAt (required):
|
/// * [DateTime] fileModifiedAt (required):
|
||||||
|
/// File modification date
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
@@ -1535,18 +1574,25 @@ class AssetsApi {
|
|||||||
/// sha1 checksum that can be used for duplicate detection before the file is uploaded
|
/// sha1 checksum that can be used for duplicate detection before the file is uploaded
|
||||||
///
|
///
|
||||||
/// * [String] duration:
|
/// * [String] duration:
|
||||||
|
/// Duration (for videos)
|
||||||
///
|
///
|
||||||
/// * [String] filename:
|
/// * [String] filename:
|
||||||
|
/// Filename
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Mark as favorite
|
||||||
///
|
///
|
||||||
/// * [String] livePhotoVideoId:
|
/// * [String] livePhotoVideoId:
|
||||||
|
/// Live photo video ID
|
||||||
///
|
///
|
||||||
/// * [List<AssetMetadataUpsertItemDto>] metadata:
|
/// * [List<AssetMetadataUpsertItemDto>] metadata:
|
||||||
|
/// Asset metadata items
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] sidecarData:
|
/// * [MultipartFile] sidecarData:
|
||||||
|
/// Sidecar file data
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Asset visibility
|
||||||
Future<Response> uploadAssetWithHttpInfo(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, List<AssetMetadataUpsertItemDto>? metadata, MultipartFile? sidecarData, AssetVisibility? visibility, }) async {
|
Future<Response> uploadAssetWithHttpInfo(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, List<AssetMetadataUpsertItemDto>? metadata, MultipartFile? sidecarData, AssetVisibility? visibility, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets';
|
final apiPath = r'/assets';
|
||||||
@@ -1645,14 +1691,19 @@ class AssetsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
/// Asset file data
|
||||||
///
|
///
|
||||||
/// * [String] deviceAssetId (required):
|
/// * [String] deviceAssetId (required):
|
||||||
|
/// Device asset ID
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAt (required):
|
/// * [DateTime] fileCreatedAt (required):
|
||||||
|
/// File creation date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileModifiedAt (required):
|
/// * [DateTime] fileModifiedAt (required):
|
||||||
|
/// File modification date
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
@@ -1662,18 +1713,25 @@ class AssetsApi {
|
|||||||
/// sha1 checksum that can be used for duplicate detection before the file is uploaded
|
/// sha1 checksum that can be used for duplicate detection before the file is uploaded
|
||||||
///
|
///
|
||||||
/// * [String] duration:
|
/// * [String] duration:
|
||||||
|
/// Duration (for videos)
|
||||||
///
|
///
|
||||||
/// * [String] filename:
|
/// * [String] filename:
|
||||||
|
/// Filename
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Mark as favorite
|
||||||
///
|
///
|
||||||
/// * [String] livePhotoVideoId:
|
/// * [String] livePhotoVideoId:
|
||||||
|
/// Live photo video ID
|
||||||
///
|
///
|
||||||
/// * [List<AssetMetadataUpsertItemDto>] metadata:
|
/// * [List<AssetMetadataUpsertItemDto>] metadata:
|
||||||
|
/// Asset metadata items
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] sidecarData:
|
/// * [MultipartFile] sidecarData:
|
||||||
|
/// Sidecar file data
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Asset visibility
|
||||||
Future<AssetMediaResponseDto?> uploadAsset(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, List<AssetMetadataUpsertItemDto>? metadata, MultipartFile? sidecarData, AssetVisibility? visibility, }) async {
|
Future<AssetMediaResponseDto?> uploadAsset(MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? xImmichChecksum, String? duration, String? filename, bool? isFavorite, String? livePhotoVideoId, List<AssetMetadataUpsertItemDto>? metadata, MultipartFile? sidecarData, AssetVisibility? visibility, }) async {
|
||||||
final response = await uploadAssetWithHttpInfo(assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, xImmichChecksum: xImmichChecksum, duration: duration, filename: filename, isFavorite: isFavorite, livePhotoVideoId: livePhotoVideoId, metadata: metadata, sidecarData: sidecarData, visibility: visibility, );
|
final response = await uploadAssetWithHttpInfo(assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, xImmichChecksum: xImmichChecksum, duration: duration, filename: filename, isFavorite: isFavorite, livePhotoVideoId: livePhotoVideoId, metadata: metadata, sidecarData: sidecarData, visibility: visibility, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -1700,10 +1758,12 @@ class AssetsApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [bool] edited:
|
/// * [bool] edited:
|
||||||
|
/// Return edited asset if available
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [AssetMediaSize] size:
|
/// * [AssetMediaSize] size:
|
||||||
|
/// Asset media size
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
Future<Response> viewAssetWithHttpInfo(String id, { bool? edited, String? key, AssetMediaSize? size, String? slug, }) async {
|
Future<Response> viewAssetWithHttpInfo(String id, { bool? edited, String? key, AssetMediaSize? size, String? slug, }) async {
|
||||||
@@ -1754,10 +1814,12 @@ class AssetsApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [bool] edited:
|
/// * [bool] edited:
|
||||||
|
/// Return edited asset if available
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [AssetMediaSize] size:
|
/// * [AssetMediaSize] size:
|
||||||
|
/// Asset media size
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
Future<MultipartFile?> viewAsset(String id, { bool? edited, String? key, AssetMediaSize? size, String? slug, }) async {
|
Future<MultipartFile?> viewAsset(String id, { bool? edited, String? key, AssetMediaSize? size, String? slug, }) async {
|
||||||
|
|||||||
20
mobile/openapi/lib/api/deprecated_api.dart
generated
20
mobile/openapi/lib/api/deprecated_api.dart
generated
@@ -82,6 +82,7 @@ class DeprecatedApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
Future<Response> getAllUserAssetsByDeviceIdWithHttpInfo(String deviceId,) async {
|
Future<Response> getAllUserAssetsByDeviceIdWithHttpInfo(String deviceId,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/device/{deviceId}'
|
final apiPath = r'/assets/device/{deviceId}'
|
||||||
@@ -115,6 +116,7 @@ class DeprecatedApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
Future<List<String>?> getAllUserAssetsByDeviceId(String deviceId,) async {
|
Future<List<String>?> getAllUserAssetsByDeviceId(String deviceId,) async {
|
||||||
final response = await getAllUserAssetsByDeviceIdWithHttpInfo(deviceId,);
|
final response = await getAllUserAssetsByDeviceIdWithHttpInfo(deviceId,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -305,6 +307,7 @@ class DeprecatedApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [num] count:
|
/// * [num] count:
|
||||||
|
/// Number of random assets to return
|
||||||
Future<Response> getRandomWithHttpInfo({ num? count, }) async {
|
Future<Response> getRandomWithHttpInfo({ num? count, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/random';
|
final apiPath = r'/assets/random';
|
||||||
@@ -341,6 +344,7 @@ class DeprecatedApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [num] count:
|
/// * [num] count:
|
||||||
|
/// Number of random assets to return
|
||||||
Future<List<AssetResponseDto>?> getRandom({ num? count, }) async {
|
Future<List<AssetResponseDto>?> getRandom({ num? count, }) async {
|
||||||
final response = await getRandomWithHttpInfo( count: count, );
|
final response = await getRandomWithHttpInfo( count: count, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -370,22 +374,29 @@ class DeprecatedApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
/// Asset file data
|
||||||
///
|
///
|
||||||
/// * [String] deviceAssetId (required):
|
/// * [String] deviceAssetId (required):
|
||||||
|
/// Device asset ID
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAt (required):
|
/// * [DateTime] fileCreatedAt (required):
|
||||||
|
/// File creation date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileModifiedAt (required):
|
/// * [DateTime] fileModifiedAt (required):
|
||||||
|
/// File modification date
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [String] duration:
|
/// * [String] duration:
|
||||||
|
/// Duration (for videos)
|
||||||
///
|
///
|
||||||
/// * [String] filename:
|
/// * [String] filename:
|
||||||
|
/// Filename
|
||||||
Future<Response> replaceAssetWithHttpInfo(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
Future<Response> replaceAssetWithHttpInfo(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/assets/{id}/original'
|
final apiPath = r'/assets/{id}/original'
|
||||||
@@ -462,22 +473,29 @@ class DeprecatedApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] assetData (required):
|
/// * [MultipartFile] assetData (required):
|
||||||
|
/// Asset file data
|
||||||
///
|
///
|
||||||
/// * [String] deviceAssetId (required):
|
/// * [String] deviceAssetId (required):
|
||||||
|
/// Device asset ID
|
||||||
///
|
///
|
||||||
/// * [String] deviceId (required):
|
/// * [String] deviceId (required):
|
||||||
|
/// Device ID
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAt (required):
|
/// * [DateTime] fileCreatedAt (required):
|
||||||
|
/// File creation date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileModifiedAt (required):
|
/// * [DateTime] fileModifiedAt (required):
|
||||||
|
/// File modification date
|
||||||
///
|
///
|
||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [String] duration:
|
/// * [String] duration:
|
||||||
|
/// Duration (for videos)
|
||||||
///
|
///
|
||||||
/// * [String] filename:
|
/// * [String] filename:
|
||||||
|
/// Filename
|
||||||
Future<AssetMediaResponseDto?> replaceAsset(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
Future<AssetMediaResponseDto?> replaceAsset(String id, MultipartFile assetData, String deviceAssetId, String deviceId, DateTime fileCreatedAt, DateTime fileModifiedAt, { String? key, String? slug, String? duration, String? filename, }) async {
|
||||||
final response = await replaceAssetWithHttpInfo(id, assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, duration: duration, filename: filename, );
|
final response = await replaceAssetWithHttpInfo(id, assetData, deviceAssetId, deviceId, fileCreatedAt, fileModifiedAt, key: key, slug: slug, duration: duration, filename: filename, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -502,6 +520,7 @@ class DeprecatedApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueCommandDto] queueCommandDto (required):
|
/// * [QueueCommandDto] queueCommandDto (required):
|
||||||
Future<Response> runQueueCommandLegacyWithHttpInfo(QueueName name, QueueCommandDto queueCommandDto,) async {
|
Future<Response> runQueueCommandLegacyWithHttpInfo(QueueName name, QueueCommandDto queueCommandDto,) async {
|
||||||
@@ -537,6 +556,7 @@ class DeprecatedApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueCommandDto] queueCommandDto (required):
|
/// * [QueueCommandDto] queueCommandDto (required):
|
||||||
Future<QueueResponseLegacyDto?> runQueueCommandLegacy(QueueName name, QueueCommandDto queueCommandDto,) async {
|
Future<QueueResponseLegacyDto?> runQueueCommandLegacy(QueueName name, QueueCommandDto queueCommandDto,) async {
|
||||||
|
|||||||
2
mobile/openapi/lib/api/faces_api.dart
generated
2
mobile/openapi/lib/api/faces_api.dart
generated
@@ -126,6 +126,7 @@ class FacesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
/// Face ID
|
||||||
Future<Response> getFacesWithHttpInfo(String id,) async {
|
Future<Response> getFacesWithHttpInfo(String id,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/faces';
|
final apiPath = r'/faces';
|
||||||
@@ -160,6 +161,7 @@ class FacesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
|
/// Face ID
|
||||||
Future<List<AssetFaceResponseDto>?> getFaces(String id,) async {
|
Future<List<AssetFaceResponseDto>?> getFaces(String id,) async {
|
||||||
final response = await getFacesWithHttpInfo(id,);
|
final response = await getFacesWithHttpInfo(id,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
2
mobile/openapi/lib/api/jobs_api.dart
generated
2
mobile/openapi/lib/api/jobs_api.dart
generated
@@ -121,6 +121,7 @@ class JobsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueCommandDto] queueCommandDto (required):
|
/// * [QueueCommandDto] queueCommandDto (required):
|
||||||
Future<Response> runQueueCommandLegacyWithHttpInfo(QueueName name, QueueCommandDto queueCommandDto,) async {
|
Future<Response> runQueueCommandLegacyWithHttpInfo(QueueName name, QueueCommandDto queueCommandDto,) async {
|
||||||
@@ -156,6 +157,7 @@ class JobsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueCommandDto] queueCommandDto (required):
|
/// * [QueueCommandDto] queueCommandDto (required):
|
||||||
Future<QueueResponseLegacyDto?> runQueueCommandLegacy(QueueName name, QueueCommandDto queueCommandDto,) async {
|
Future<QueueResponseLegacyDto?> runQueueCommandLegacy(QueueName name, QueueCommandDto queueCommandDto,) async {
|
||||||
|
|||||||
16
mobile/openapi/lib/api/map_api.dart
generated
16
mobile/openapi/lib/api/map_api.dart
generated
@@ -25,16 +25,22 @@ class MapApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAfter:
|
/// * [DateTime] fileCreatedAfter:
|
||||||
|
/// Filter assets created after this date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedBefore:
|
/// * [DateTime] fileCreatedBefore:
|
||||||
|
/// Filter assets created before this date
|
||||||
///
|
///
|
||||||
/// * [bool] isArchived:
|
/// * [bool] isArchived:
|
||||||
|
/// Filter by archived status
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] withPartners:
|
/// * [bool] withPartners:
|
||||||
|
/// Include partner assets
|
||||||
///
|
///
|
||||||
/// * [bool] withSharedAlbums:
|
/// * [bool] withSharedAlbums:
|
||||||
|
/// Include shared album assets
|
||||||
Future<Response> getMapMarkersWithHttpInfo({ DateTime? fileCreatedAfter, DateTime? fileCreatedBefore, bool? isArchived, bool? isFavorite, bool? withPartners, bool? withSharedAlbums, }) async {
|
Future<Response> getMapMarkersWithHttpInfo({ DateTime? fileCreatedAfter, DateTime? fileCreatedBefore, bool? isArchived, bool? isFavorite, bool? withPartners, bool? withSharedAlbums, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/map/markers';
|
final apiPath = r'/map/markers';
|
||||||
@@ -86,16 +92,22 @@ class MapApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedAfter:
|
/// * [DateTime] fileCreatedAfter:
|
||||||
|
/// Filter assets created after this date
|
||||||
///
|
///
|
||||||
/// * [DateTime] fileCreatedBefore:
|
/// * [DateTime] fileCreatedBefore:
|
||||||
|
/// Filter assets created before this date
|
||||||
///
|
///
|
||||||
/// * [bool] isArchived:
|
/// * [bool] isArchived:
|
||||||
|
/// Filter by archived status
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] withPartners:
|
/// * [bool] withPartners:
|
||||||
|
/// Include partner assets
|
||||||
///
|
///
|
||||||
/// * [bool] withSharedAlbums:
|
/// * [bool] withSharedAlbums:
|
||||||
|
/// Include shared album assets
|
||||||
Future<List<MapMarkerResponseDto>?> getMapMarkers({ DateTime? fileCreatedAfter, DateTime? fileCreatedBefore, bool? isArchived, bool? isFavorite, bool? withPartners, bool? withSharedAlbums, }) async {
|
Future<List<MapMarkerResponseDto>?> getMapMarkers({ DateTime? fileCreatedAfter, DateTime? fileCreatedBefore, bool? isArchived, bool? isFavorite, bool? withPartners, bool? withSharedAlbums, }) async {
|
||||||
final response = await getMapMarkersWithHttpInfo( fileCreatedAfter: fileCreatedAfter, fileCreatedBefore: fileCreatedBefore, isArchived: isArchived, isFavorite: isFavorite, withPartners: withPartners, withSharedAlbums: withSharedAlbums, );
|
final response = await getMapMarkersWithHttpInfo( fileCreatedAfter: fileCreatedAfter, fileCreatedBefore: fileCreatedBefore, isArchived: isArchived, isFavorite: isFavorite, withPartners: withPartners, withSharedAlbums: withSharedAlbums, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -123,8 +135,10 @@ class MapApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [double] lat (required):
|
/// * [double] lat (required):
|
||||||
|
/// Latitude (-90 to 90)
|
||||||
///
|
///
|
||||||
/// * [double] lon (required):
|
/// * [double] lon (required):
|
||||||
|
/// Longitude (-180 to 180)
|
||||||
Future<Response> reverseGeocodeWithHttpInfo(double lat, double lon,) async {
|
Future<Response> reverseGeocodeWithHttpInfo(double lat, double lon,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/map/reverse-geocode';
|
final apiPath = r'/map/reverse-geocode';
|
||||||
@@ -160,8 +174,10 @@ class MapApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [double] lat (required):
|
/// * [double] lat (required):
|
||||||
|
/// Latitude (-90 to 90)
|
||||||
///
|
///
|
||||||
/// * [double] lon (required):
|
/// * [double] lon (required):
|
||||||
|
/// Longitude (-180 to 180)
|
||||||
Future<List<MapReverseGeocodeResponseDto>?> reverseGeocode(double lat, double lon,) async {
|
Future<List<MapReverseGeocodeResponseDto>?> reverseGeocode(double lat, double lon,) async {
|
||||||
final response = await reverseGeocodeWithHttpInfo(lat, lon,);
|
final response = await reverseGeocodeWithHttpInfo(lat, lon,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
20
mobile/openapi/lib/api/memories_api.dart
generated
20
mobile/openapi/lib/api/memories_api.dart
generated
@@ -251,17 +251,22 @@ class MemoriesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DateTime] for_:
|
/// * [DateTime] for_:
|
||||||
|
/// Filter by date
|
||||||
///
|
///
|
||||||
/// * [bool] isSaved:
|
/// * [bool] isSaved:
|
||||||
|
/// Filter by saved status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Include trashed memories
|
||||||
///
|
///
|
||||||
/// * [MemorySearchOrder] order:
|
/// * [MemorySearchOrder] order:
|
||||||
|
/// Sort order
|
||||||
///
|
///
|
||||||
/// * [int] size:
|
/// * [int] size:
|
||||||
/// Number of memories to return
|
/// Number of memories to return
|
||||||
///
|
///
|
||||||
/// * [MemoryType] type:
|
/// * [MemoryType] type:
|
||||||
|
/// Memory type
|
||||||
Future<Response> memoriesStatisticsWithHttpInfo({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
Future<Response> memoriesStatisticsWithHttpInfo({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/memories/statistics';
|
final apiPath = r'/memories/statistics';
|
||||||
@@ -313,17 +318,22 @@ class MemoriesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DateTime] for_:
|
/// * [DateTime] for_:
|
||||||
|
/// Filter by date
|
||||||
///
|
///
|
||||||
/// * [bool] isSaved:
|
/// * [bool] isSaved:
|
||||||
|
/// Filter by saved status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Include trashed memories
|
||||||
///
|
///
|
||||||
/// * [MemorySearchOrder] order:
|
/// * [MemorySearchOrder] order:
|
||||||
|
/// Sort order
|
||||||
///
|
///
|
||||||
/// * [int] size:
|
/// * [int] size:
|
||||||
/// Number of memories to return
|
/// Number of memories to return
|
||||||
///
|
///
|
||||||
/// * [MemoryType] type:
|
/// * [MemoryType] type:
|
||||||
|
/// Memory type
|
||||||
Future<MemoryStatisticsResponseDto?> memoriesStatistics({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
Future<MemoryStatisticsResponseDto?> memoriesStatistics({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
||||||
final response = await memoriesStatisticsWithHttpInfo( for_: for_, isSaved: isSaved, isTrashed: isTrashed, order: order, size: size, type: type, );
|
final response = await memoriesStatisticsWithHttpInfo( for_: for_, isSaved: isSaved, isTrashed: isTrashed, order: order, size: size, type: type, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -412,17 +422,22 @@ class MemoriesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DateTime] for_:
|
/// * [DateTime] for_:
|
||||||
|
/// Filter by date
|
||||||
///
|
///
|
||||||
/// * [bool] isSaved:
|
/// * [bool] isSaved:
|
||||||
|
/// Filter by saved status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Include trashed memories
|
||||||
///
|
///
|
||||||
/// * [MemorySearchOrder] order:
|
/// * [MemorySearchOrder] order:
|
||||||
|
/// Sort order
|
||||||
///
|
///
|
||||||
/// * [int] size:
|
/// * [int] size:
|
||||||
/// Number of memories to return
|
/// Number of memories to return
|
||||||
///
|
///
|
||||||
/// * [MemoryType] type:
|
/// * [MemoryType] type:
|
||||||
|
/// Memory type
|
||||||
Future<Response> searchMemoriesWithHttpInfo({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
Future<Response> searchMemoriesWithHttpInfo({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/memories';
|
final apiPath = r'/memories';
|
||||||
@@ -474,17 +489,22 @@ class MemoriesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [DateTime] for_:
|
/// * [DateTime] for_:
|
||||||
|
/// Filter by date
|
||||||
///
|
///
|
||||||
/// * [bool] isSaved:
|
/// * [bool] isSaved:
|
||||||
|
/// Filter by saved status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Include trashed memories
|
||||||
///
|
///
|
||||||
/// * [MemorySearchOrder] order:
|
/// * [MemorySearchOrder] order:
|
||||||
|
/// Sort order
|
||||||
///
|
///
|
||||||
/// * [int] size:
|
/// * [int] size:
|
||||||
/// Number of memories to return
|
/// Number of memories to return
|
||||||
///
|
///
|
||||||
/// * [MemoryType] type:
|
/// * [MemoryType] type:
|
||||||
|
/// Memory type
|
||||||
Future<List<MemoryResponseDto>?> searchMemories({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
Future<List<MemoryResponseDto>?> searchMemories({ DateTime? for_, bool? isSaved, bool? isTrashed, MemorySearchOrder? order, int? size, MemoryType? type, }) async {
|
||||||
final response = await searchMemoriesWithHttpInfo( for_: for_, isSaved: isSaved, isTrashed: isTrashed, order: order, size: size, type: type, );
|
final response = await searchMemoriesWithHttpInfo( for_: for_, isSaved: isSaved, isTrashed: isTrashed, order: order, size: size, type: type, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
8
mobile/openapi/lib/api/notifications_api.dart
generated
8
mobile/openapi/lib/api/notifications_api.dart
generated
@@ -179,12 +179,16 @@ class NotificationsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id:
|
/// * [String] id:
|
||||||
|
/// Filter by notification ID
|
||||||
///
|
///
|
||||||
/// * [NotificationLevel] level:
|
/// * [NotificationLevel] level:
|
||||||
|
/// Filter by notification level
|
||||||
///
|
///
|
||||||
/// * [NotificationType] type:
|
/// * [NotificationType] type:
|
||||||
|
/// Filter by notification type
|
||||||
///
|
///
|
||||||
/// * [bool] unread:
|
/// * [bool] unread:
|
||||||
|
/// Filter by unread status
|
||||||
Future<Response> getNotificationsWithHttpInfo({ String? id, NotificationLevel? level, NotificationType? type, bool? unread, }) async {
|
Future<Response> getNotificationsWithHttpInfo({ String? id, NotificationLevel? level, NotificationType? type, bool? unread, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/notifications';
|
final apiPath = r'/notifications';
|
||||||
@@ -230,12 +234,16 @@ class NotificationsApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id:
|
/// * [String] id:
|
||||||
|
/// Filter by notification ID
|
||||||
///
|
///
|
||||||
/// * [NotificationLevel] level:
|
/// * [NotificationLevel] level:
|
||||||
|
/// Filter by notification level
|
||||||
///
|
///
|
||||||
/// * [NotificationType] type:
|
/// * [NotificationType] type:
|
||||||
|
/// Filter by notification type
|
||||||
///
|
///
|
||||||
/// * [bool] unread:
|
/// * [bool] unread:
|
||||||
|
/// Filter by unread status
|
||||||
Future<List<NotificationDto>?> getNotifications({ String? id, NotificationLevel? level, NotificationType? type, bool? unread, }) async {
|
Future<List<NotificationDto>?> getNotifications({ String? id, NotificationLevel? level, NotificationType? type, bool? unread, }) async {
|
||||||
final response = await getNotificationsWithHttpInfo( id: id, level: level, type: type, unread: unread, );
|
final response = await getNotificationsWithHttpInfo( id: id, level: level, type: type, unread: unread, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
2
mobile/openapi/lib/api/partners_api.dart
generated
2
mobile/openapi/lib/api/partners_api.dart
generated
@@ -138,6 +138,7 @@ class PartnersApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [PartnerDirection] direction (required):
|
/// * [PartnerDirection] direction (required):
|
||||||
|
/// Partner direction
|
||||||
Future<Response> getPartnersWithHttpInfo(PartnerDirection direction,) async {
|
Future<Response> getPartnersWithHttpInfo(PartnerDirection direction,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/partners';
|
final apiPath = r'/partners';
|
||||||
@@ -172,6 +173,7 @@ class PartnersApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [PartnerDirection] direction (required):
|
/// * [PartnerDirection] direction (required):
|
||||||
|
/// Partner direction
|
||||||
Future<List<PartnerResponseDto>?> getPartners(PartnerDirection direction,) async {
|
Future<List<PartnerResponseDto>?> getPartners(PartnerDirection direction,) async {
|
||||||
final response = await getPartnersWithHttpInfo(direction,);
|
final response = await getPartnersWithHttpInfo(direction,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
6
mobile/openapi/lib/api/people_api.dart
generated
6
mobile/openapi/lib/api/people_api.dart
generated
@@ -178,8 +178,10 @@ class PeopleApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] closestAssetId:
|
/// * [String] closestAssetId:
|
||||||
|
/// Closest asset ID for similarity search
|
||||||
///
|
///
|
||||||
/// * [String] closestPersonId:
|
/// * [String] closestPersonId:
|
||||||
|
/// Closest person ID for similarity search
|
||||||
///
|
///
|
||||||
/// * [num] page:
|
/// * [num] page:
|
||||||
/// Page number for pagination
|
/// Page number for pagination
|
||||||
@@ -188,6 +190,7 @@ class PeopleApi {
|
|||||||
/// Number of items per page
|
/// Number of items per page
|
||||||
///
|
///
|
||||||
/// * [bool] withHidden:
|
/// * [bool] withHidden:
|
||||||
|
/// Include hidden people
|
||||||
Future<Response> getAllPeopleWithHttpInfo({ String? closestAssetId, String? closestPersonId, num? page, num? size, bool? withHidden, }) async {
|
Future<Response> getAllPeopleWithHttpInfo({ String? closestAssetId, String? closestPersonId, num? page, num? size, bool? withHidden, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/people';
|
final apiPath = r'/people';
|
||||||
@@ -236,8 +239,10 @@ class PeopleApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] closestAssetId:
|
/// * [String] closestAssetId:
|
||||||
|
/// Closest asset ID for similarity search
|
||||||
///
|
///
|
||||||
/// * [String] closestPersonId:
|
/// * [String] closestPersonId:
|
||||||
|
/// Closest person ID for similarity search
|
||||||
///
|
///
|
||||||
/// * [num] page:
|
/// * [num] page:
|
||||||
/// Page number for pagination
|
/// Page number for pagination
|
||||||
@@ -246,6 +251,7 @@ class PeopleApi {
|
|||||||
/// Number of items per page
|
/// Number of items per page
|
||||||
///
|
///
|
||||||
/// * [bool] withHidden:
|
/// * [bool] withHidden:
|
||||||
|
/// Include hidden people
|
||||||
Future<PeopleResponseDto?> getAllPeople({ String? closestAssetId, String? closestPersonId, num? page, num? size, bool? withHidden, }) async {
|
Future<PeopleResponseDto?> getAllPeople({ String? closestAssetId, String? closestPersonId, num? page, num? size, bool? withHidden, }) async {
|
||||||
final response = await getAllPeopleWithHttpInfo( closestAssetId: closestAssetId, closestPersonId: closestPersonId, page: page, size: size, withHidden: withHidden, );
|
final response = await getAllPeopleWithHttpInfo( closestAssetId: closestAssetId, closestPersonId: closestPersonId, page: page, size: size, withHidden: withHidden, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
10
mobile/openapi/lib/api/queues_api.dart
generated
10
mobile/openapi/lib/api/queues_api.dart
generated
@@ -25,6 +25,7 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueDeleteDto] queueDeleteDto (required):
|
/// * [QueueDeleteDto] queueDeleteDto (required):
|
||||||
Future<Response> emptyQueueWithHttpInfo(QueueName name, QueueDeleteDto queueDeleteDto,) async {
|
Future<Response> emptyQueueWithHttpInfo(QueueName name, QueueDeleteDto queueDeleteDto,) async {
|
||||||
@@ -60,6 +61,7 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueDeleteDto] queueDeleteDto (required):
|
/// * [QueueDeleteDto] queueDeleteDto (required):
|
||||||
Future<void> emptyQueue(QueueName name, QueueDeleteDto queueDeleteDto,) async {
|
Future<void> emptyQueue(QueueName name, QueueDeleteDto queueDeleteDto,) async {
|
||||||
@@ -78,6 +80,7 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
Future<Response> getQueueWithHttpInfo(QueueName name,) async {
|
Future<Response> getQueueWithHttpInfo(QueueName name,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/queues/{name}'
|
final apiPath = r'/queues/{name}'
|
||||||
@@ -111,6 +114,7 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
Future<QueueResponseDto?> getQueue(QueueName name,) async {
|
Future<QueueResponseDto?> getQueue(QueueName name,) async {
|
||||||
final response = await getQueueWithHttpInfo(name,);
|
final response = await getQueueWithHttpInfo(name,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -135,8 +139,10 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [List<QueueJobStatus>] status:
|
/// * [List<QueueJobStatus>] status:
|
||||||
|
/// Filter jobs by status
|
||||||
Future<Response> getQueueJobsWithHttpInfo(QueueName name, { List<QueueJobStatus>? status, }) async {
|
Future<Response> getQueueJobsWithHttpInfo(QueueName name, { List<QueueJobStatus>? status, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/queues/{name}/jobs'
|
final apiPath = r'/queues/{name}/jobs'
|
||||||
@@ -174,8 +180,10 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [List<QueueJobStatus>] status:
|
/// * [List<QueueJobStatus>] status:
|
||||||
|
/// Filter jobs by status
|
||||||
Future<List<QueueJobResponseDto>?> getQueueJobs(QueueName name, { List<QueueJobStatus>? status, }) async {
|
Future<List<QueueJobResponseDto>?> getQueueJobs(QueueName name, { List<QueueJobStatus>? status, }) async {
|
||||||
final response = await getQueueJobsWithHttpInfo(name, status: status, );
|
final response = await getQueueJobsWithHttpInfo(name, status: status, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -254,6 +262,7 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueUpdateDto] queueUpdateDto (required):
|
/// * [QueueUpdateDto] queueUpdateDto (required):
|
||||||
Future<Response> updateQueueWithHttpInfo(QueueName name, QueueUpdateDto queueUpdateDto,) async {
|
Future<Response> updateQueueWithHttpInfo(QueueName name, QueueUpdateDto queueUpdateDto,) async {
|
||||||
@@ -289,6 +298,7 @@ class QueuesApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [QueueName] name (required):
|
/// * [QueueName] name (required):
|
||||||
|
/// Queue name
|
||||||
///
|
///
|
||||||
/// * [QueueUpdateDto] queueUpdateDto (required):
|
/// * [QueueUpdateDto] queueUpdateDto (required):
|
||||||
Future<QueueResponseDto?> updateQueue(QueueName name, QueueUpdateDto queueUpdateDto,) async {
|
Future<QueueResponseDto?> updateQueue(QueueName name, QueueUpdateDto queueUpdateDto,) async {
|
||||||
|
|||||||
84
mobile/openapi/lib/api/search_api.dart
generated
84
mobile/openapi/lib/api/search_api.dart
generated
@@ -127,18 +127,25 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SearchSuggestionType] type (required):
|
/// * [SearchSuggestionType] type (required):
|
||||||
|
/// Suggestion type
|
||||||
///
|
///
|
||||||
/// * [String] country:
|
/// * [String] country:
|
||||||
|
/// Filter by country
|
||||||
///
|
///
|
||||||
/// * [bool] includeNull:
|
/// * [bool] includeNull:
|
||||||
|
/// Include null values in suggestions
|
||||||
///
|
///
|
||||||
/// * [String] lensModel:
|
/// * [String] lensModel:
|
||||||
|
/// Filter by lens model
|
||||||
///
|
///
|
||||||
/// * [String] make:
|
/// * [String] make:
|
||||||
|
/// Filter by camera make
|
||||||
///
|
///
|
||||||
/// * [String] model:
|
/// * [String] model:
|
||||||
|
/// Filter by camera model
|
||||||
///
|
///
|
||||||
/// * [String] state:
|
/// * [String] state:
|
||||||
|
/// Filter by state/province
|
||||||
Future<Response> getSearchSuggestionsWithHttpInfo(SearchSuggestionType type, { String? country, bool? includeNull, String? lensModel, String? make, String? model, String? state, }) async {
|
Future<Response> getSearchSuggestionsWithHttpInfo(SearchSuggestionType type, { String? country, bool? includeNull, String? lensModel, String? make, String? model, String? state, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/search/suggestions';
|
final apiPath = r'/search/suggestions';
|
||||||
@@ -191,18 +198,25 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [SearchSuggestionType] type (required):
|
/// * [SearchSuggestionType] type (required):
|
||||||
|
/// Suggestion type
|
||||||
///
|
///
|
||||||
/// * [String] country:
|
/// * [String] country:
|
||||||
|
/// Filter by country
|
||||||
///
|
///
|
||||||
/// * [bool] includeNull:
|
/// * [bool] includeNull:
|
||||||
|
/// Include null values in suggestions
|
||||||
///
|
///
|
||||||
/// * [String] lensModel:
|
/// * [String] lensModel:
|
||||||
|
/// Filter by lens model
|
||||||
///
|
///
|
||||||
/// * [String] make:
|
/// * [String] make:
|
||||||
|
/// Filter by camera make
|
||||||
///
|
///
|
||||||
/// * [String] model:
|
/// * [String] model:
|
||||||
|
/// Filter by camera model
|
||||||
///
|
///
|
||||||
/// * [String] state:
|
/// * [String] state:
|
||||||
|
/// Filter by state/province
|
||||||
Future<List<String>?> getSearchSuggestions(SearchSuggestionType type, { String? country, bool? includeNull, String? lensModel, String? make, String? model, String? state, }) async {
|
Future<List<String>?> getSearchSuggestions(SearchSuggestionType type, { String? country, bool? includeNull, String? lensModel, String? make, String? model, String? state, }) async {
|
||||||
final response = await getSearchSuggestionsWithHttpInfo(type, country: country, includeNull: includeNull, lensModel: lensModel, make: make, model: model, state: state, );
|
final response = await getSearchSuggestionsWithHttpInfo(type, country: country, includeNull: includeNull, lensModel: lensModel, make: make, model: model, state: state, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -342,68 +356,100 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [List<String>] albumIds:
|
/// * [List<String>] albumIds:
|
||||||
|
/// Filter by album IDs
|
||||||
///
|
///
|
||||||
/// * [String] city:
|
/// * [String] city:
|
||||||
|
/// Filter by city name
|
||||||
///
|
///
|
||||||
/// * [String] country:
|
/// * [String] country:
|
||||||
|
/// Filter by country name
|
||||||
///
|
///
|
||||||
/// * [DateTime] createdAfter:
|
/// * [DateTime] createdAfter:
|
||||||
|
/// Filter by creation date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] createdBefore:
|
/// * [DateTime] createdBefore:
|
||||||
|
/// Filter by creation date (before)
|
||||||
///
|
///
|
||||||
/// * [String] deviceId:
|
/// * [String] deviceId:
|
||||||
|
/// Device ID to filter by
|
||||||
///
|
///
|
||||||
/// * [bool] isEncoded:
|
/// * [bool] isEncoded:
|
||||||
|
/// Filter by encoded status
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] isMotion:
|
/// * [bool] isMotion:
|
||||||
|
/// Filter by motion photo status
|
||||||
///
|
///
|
||||||
/// * [bool] isNotInAlbum:
|
/// * [bool] isNotInAlbum:
|
||||||
|
/// Filter assets not in any album
|
||||||
///
|
///
|
||||||
/// * [bool] isOffline:
|
/// * [bool] isOffline:
|
||||||
|
/// Filter by offline status
|
||||||
///
|
///
|
||||||
/// * [String] lensModel:
|
/// * [String] lensModel:
|
||||||
|
/// Filter by lens model
|
||||||
///
|
///
|
||||||
/// * [String] libraryId:
|
/// * [String] libraryId:
|
||||||
|
/// Library ID to filter by
|
||||||
///
|
///
|
||||||
/// * [String] make:
|
/// * [String] make:
|
||||||
|
/// Filter by camera make
|
||||||
///
|
///
|
||||||
/// * [int] minFileSize:
|
/// * [int] minFileSize:
|
||||||
|
/// Minimum file size in bytes
|
||||||
///
|
///
|
||||||
/// * [String] model:
|
/// * [String] model:
|
||||||
|
/// Filter by camera model
|
||||||
///
|
///
|
||||||
/// * [String] ocr:
|
/// * [String] ocr:
|
||||||
|
/// Filter by OCR text content
|
||||||
///
|
///
|
||||||
/// * [List<String>] personIds:
|
/// * [List<String>] personIds:
|
||||||
|
/// Filter by person IDs
|
||||||
///
|
///
|
||||||
/// * [num] rating:
|
/// * [num] rating:
|
||||||
|
/// Filter by rating
|
||||||
///
|
///
|
||||||
/// * [num] size:
|
/// * [num] size:
|
||||||
|
/// Number of results to return
|
||||||
///
|
///
|
||||||
/// * [String] state:
|
/// * [String] state:
|
||||||
|
/// Filter by state/province name
|
||||||
///
|
///
|
||||||
/// * [List<String>] tagIds:
|
/// * [List<String>] tagIds:
|
||||||
|
/// Filter by tag IDs
|
||||||
///
|
///
|
||||||
/// * [DateTime] takenAfter:
|
/// * [DateTime] takenAfter:
|
||||||
|
/// Filter by taken date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] takenBefore:
|
/// * [DateTime] takenBefore:
|
||||||
|
/// Filter by taken date (before)
|
||||||
///
|
///
|
||||||
/// * [DateTime] trashedAfter:
|
/// * [DateTime] trashedAfter:
|
||||||
|
/// Filter by trash date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] trashedBefore:
|
/// * [DateTime] trashedBefore:
|
||||||
|
/// Filter by trash date (before)
|
||||||
///
|
///
|
||||||
/// * [AssetTypeEnum] type:
|
/// * [AssetTypeEnum] type:
|
||||||
|
/// Asset type filter
|
||||||
///
|
///
|
||||||
/// * [DateTime] updatedAfter:
|
/// * [DateTime] updatedAfter:
|
||||||
|
/// Filter by update date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] updatedBefore:
|
/// * [DateTime] updatedBefore:
|
||||||
|
/// Filter by update date (before)
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Filter by visibility
|
||||||
///
|
///
|
||||||
/// * [bool] withDeleted:
|
/// * [bool] withDeleted:
|
||||||
|
/// Include deleted assets
|
||||||
///
|
///
|
||||||
/// * [bool] withExif:
|
/// * [bool] withExif:
|
||||||
|
/// Include EXIF data in response
|
||||||
Future<Response> searchLargeAssetsWithHttpInfo({ List<String>? albumIds, String? city, String? country, DateTime? createdAfter, DateTime? createdBefore, String? deviceId, bool? isEncoded, bool? isFavorite, bool? isMotion, bool? isNotInAlbum, bool? isOffline, String? lensModel, String? libraryId, String? make, int? minFileSize, String? model, String? ocr, List<String>? personIds, num? rating, num? size, String? state, List<String>? tagIds, DateTime? takenAfter, DateTime? takenBefore, DateTime? trashedAfter, DateTime? trashedBefore, AssetTypeEnum? type, DateTime? updatedAfter, DateTime? updatedBefore, AssetVisibility? visibility, bool? withDeleted, bool? withExif, }) async {
|
Future<Response> searchLargeAssetsWithHttpInfo({ List<String>? albumIds, String? city, String? country, DateTime? createdAfter, DateTime? createdBefore, String? deviceId, bool? isEncoded, bool? isFavorite, bool? isMotion, bool? isNotInAlbum, bool? isOffline, String? lensModel, String? libraryId, String? make, int? minFileSize, String? model, String? ocr, List<String>? personIds, num? rating, num? size, String? state, List<String>? tagIds, DateTime? takenAfter, DateTime? takenBefore, DateTime? trashedAfter, DateTime? trashedBefore, AssetTypeEnum? type, DateTime? updatedAfter, DateTime? updatedBefore, AssetVisibility? visibility, bool? withDeleted, bool? withExif, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/search/large-assets';
|
final apiPath = r'/search/large-assets';
|
||||||
@@ -533,68 +579,100 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [List<String>] albumIds:
|
/// * [List<String>] albumIds:
|
||||||
|
/// Filter by album IDs
|
||||||
///
|
///
|
||||||
/// * [String] city:
|
/// * [String] city:
|
||||||
|
/// Filter by city name
|
||||||
///
|
///
|
||||||
/// * [String] country:
|
/// * [String] country:
|
||||||
|
/// Filter by country name
|
||||||
///
|
///
|
||||||
/// * [DateTime] createdAfter:
|
/// * [DateTime] createdAfter:
|
||||||
|
/// Filter by creation date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] createdBefore:
|
/// * [DateTime] createdBefore:
|
||||||
|
/// Filter by creation date (before)
|
||||||
///
|
///
|
||||||
/// * [String] deviceId:
|
/// * [String] deviceId:
|
||||||
|
/// Device ID to filter by
|
||||||
///
|
///
|
||||||
/// * [bool] isEncoded:
|
/// * [bool] isEncoded:
|
||||||
|
/// Filter by encoded status
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] isMotion:
|
/// * [bool] isMotion:
|
||||||
|
/// Filter by motion photo status
|
||||||
///
|
///
|
||||||
/// * [bool] isNotInAlbum:
|
/// * [bool] isNotInAlbum:
|
||||||
|
/// Filter assets not in any album
|
||||||
///
|
///
|
||||||
/// * [bool] isOffline:
|
/// * [bool] isOffline:
|
||||||
|
/// Filter by offline status
|
||||||
///
|
///
|
||||||
/// * [String] lensModel:
|
/// * [String] lensModel:
|
||||||
|
/// Filter by lens model
|
||||||
///
|
///
|
||||||
/// * [String] libraryId:
|
/// * [String] libraryId:
|
||||||
|
/// Library ID to filter by
|
||||||
///
|
///
|
||||||
/// * [String] make:
|
/// * [String] make:
|
||||||
|
/// Filter by camera make
|
||||||
///
|
///
|
||||||
/// * [int] minFileSize:
|
/// * [int] minFileSize:
|
||||||
|
/// Minimum file size in bytes
|
||||||
///
|
///
|
||||||
/// * [String] model:
|
/// * [String] model:
|
||||||
|
/// Filter by camera model
|
||||||
///
|
///
|
||||||
/// * [String] ocr:
|
/// * [String] ocr:
|
||||||
|
/// Filter by OCR text content
|
||||||
///
|
///
|
||||||
/// * [List<String>] personIds:
|
/// * [List<String>] personIds:
|
||||||
|
/// Filter by person IDs
|
||||||
///
|
///
|
||||||
/// * [num] rating:
|
/// * [num] rating:
|
||||||
|
/// Filter by rating
|
||||||
///
|
///
|
||||||
/// * [num] size:
|
/// * [num] size:
|
||||||
|
/// Number of results to return
|
||||||
///
|
///
|
||||||
/// * [String] state:
|
/// * [String] state:
|
||||||
|
/// Filter by state/province name
|
||||||
///
|
///
|
||||||
/// * [List<String>] tagIds:
|
/// * [List<String>] tagIds:
|
||||||
|
/// Filter by tag IDs
|
||||||
///
|
///
|
||||||
/// * [DateTime] takenAfter:
|
/// * [DateTime] takenAfter:
|
||||||
|
/// Filter by taken date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] takenBefore:
|
/// * [DateTime] takenBefore:
|
||||||
|
/// Filter by taken date (before)
|
||||||
///
|
///
|
||||||
/// * [DateTime] trashedAfter:
|
/// * [DateTime] trashedAfter:
|
||||||
|
/// Filter by trash date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] trashedBefore:
|
/// * [DateTime] trashedBefore:
|
||||||
|
/// Filter by trash date (before)
|
||||||
///
|
///
|
||||||
/// * [AssetTypeEnum] type:
|
/// * [AssetTypeEnum] type:
|
||||||
|
/// Asset type filter
|
||||||
///
|
///
|
||||||
/// * [DateTime] updatedAfter:
|
/// * [DateTime] updatedAfter:
|
||||||
|
/// Filter by update date (after)
|
||||||
///
|
///
|
||||||
/// * [DateTime] updatedBefore:
|
/// * [DateTime] updatedBefore:
|
||||||
|
/// Filter by update date (before)
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Filter by visibility
|
||||||
///
|
///
|
||||||
/// * [bool] withDeleted:
|
/// * [bool] withDeleted:
|
||||||
|
/// Include deleted assets
|
||||||
///
|
///
|
||||||
/// * [bool] withExif:
|
/// * [bool] withExif:
|
||||||
|
/// Include EXIF data in response
|
||||||
Future<List<AssetResponseDto>?> searchLargeAssets({ List<String>? albumIds, String? city, String? country, DateTime? createdAfter, DateTime? createdBefore, String? deviceId, bool? isEncoded, bool? isFavorite, bool? isMotion, bool? isNotInAlbum, bool? isOffline, String? lensModel, String? libraryId, String? make, int? minFileSize, String? model, String? ocr, List<String>? personIds, num? rating, num? size, String? state, List<String>? tagIds, DateTime? takenAfter, DateTime? takenBefore, DateTime? trashedAfter, DateTime? trashedBefore, AssetTypeEnum? type, DateTime? updatedAfter, DateTime? updatedBefore, AssetVisibility? visibility, bool? withDeleted, bool? withExif, }) async {
|
Future<List<AssetResponseDto>?> searchLargeAssets({ List<String>? albumIds, String? city, String? country, DateTime? createdAfter, DateTime? createdBefore, String? deviceId, bool? isEncoded, bool? isFavorite, bool? isMotion, bool? isNotInAlbum, bool? isOffline, String? lensModel, String? libraryId, String? make, int? minFileSize, String? model, String? ocr, List<String>? personIds, num? rating, num? size, String? state, List<String>? tagIds, DateTime? takenAfter, DateTime? takenBefore, DateTime? trashedAfter, DateTime? trashedBefore, AssetTypeEnum? type, DateTime? updatedAfter, DateTime? updatedBefore, AssetVisibility? visibility, bool? withDeleted, bool? withExif, }) async {
|
||||||
final response = await searchLargeAssetsWithHttpInfo( albumIds: albumIds, city: city, country: country, createdAfter: createdAfter, createdBefore: createdBefore, deviceId: deviceId, isEncoded: isEncoded, isFavorite: isFavorite, isMotion: isMotion, isNotInAlbum: isNotInAlbum, isOffline: isOffline, lensModel: lensModel, libraryId: libraryId, make: make, minFileSize: minFileSize, model: model, ocr: ocr, personIds: personIds, rating: rating, size: size, state: state, tagIds: tagIds, takenAfter: takenAfter, takenBefore: takenBefore, trashedAfter: trashedAfter, trashedBefore: trashedBefore, type: type, updatedAfter: updatedAfter, updatedBefore: updatedBefore, visibility: visibility, withDeleted: withDeleted, withExif: withExif, );
|
final response = await searchLargeAssetsWithHttpInfo( albumIds: albumIds, city: city, country: country, createdAfter: createdAfter, createdBefore: createdBefore, deviceId: deviceId, isEncoded: isEncoded, isFavorite: isFavorite, isMotion: isMotion, isNotInAlbum: isNotInAlbum, isOffline: isOffline, lensModel: lensModel, libraryId: libraryId, make: make, minFileSize: minFileSize, model: model, ocr: ocr, personIds: personIds, rating: rating, size: size, state: state, tagIds: tagIds, takenAfter: takenAfter, takenBefore: takenBefore, trashedAfter: trashedAfter, trashedBefore: trashedBefore, type: type, updatedAfter: updatedAfter, updatedBefore: updatedBefore, visibility: visibility, withDeleted: withDeleted, withExif: withExif, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -622,8 +700,10 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] name (required):
|
/// * [String] name (required):
|
||||||
|
/// Person name to search for
|
||||||
///
|
///
|
||||||
/// * [bool] withHidden:
|
/// * [bool] withHidden:
|
||||||
|
/// Include hidden people
|
||||||
Future<Response> searchPersonWithHttpInfo(String name, { bool? withHidden, }) async {
|
Future<Response> searchPersonWithHttpInfo(String name, { bool? withHidden, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/search/person';
|
final apiPath = r'/search/person';
|
||||||
@@ -661,8 +741,10 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] name (required):
|
/// * [String] name (required):
|
||||||
|
/// Person name to search for
|
||||||
///
|
///
|
||||||
/// * [bool] withHidden:
|
/// * [bool] withHidden:
|
||||||
|
/// Include hidden people
|
||||||
Future<List<PersonResponseDto>?> searchPerson(String name, { bool? withHidden, }) async {
|
Future<List<PersonResponseDto>?> searchPerson(String name, { bool? withHidden, }) async {
|
||||||
final response = await searchPersonWithHttpInfo(name, withHidden: withHidden, );
|
final response = await searchPersonWithHttpInfo(name, withHidden: withHidden, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -690,6 +772,7 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] name (required):
|
/// * [String] name (required):
|
||||||
|
/// Place name to search for
|
||||||
Future<Response> searchPlacesWithHttpInfo(String name,) async {
|
Future<Response> searchPlacesWithHttpInfo(String name,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/search/places';
|
final apiPath = r'/search/places';
|
||||||
@@ -724,6 +807,7 @@ class SearchApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] name (required):
|
/// * [String] name (required):
|
||||||
|
/// Place name to search for
|
||||||
Future<List<PlacesResponseDto>?> searchPlaces(String name,) async {
|
Future<List<PlacesResponseDto>?> searchPlaces(String name,) async {
|
||||||
final response = await searchPlacesWithHttpInfo(name,);
|
final response = await searchPlacesWithHttpInfo(name,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
8
mobile/openapi/lib/api/shared_links_api.dart
generated
8
mobile/openapi/lib/api/shared_links_api.dart
generated
@@ -160,8 +160,10 @@ class SharedLinksApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId:
|
/// * [String] albumId:
|
||||||
|
/// Filter by album ID
|
||||||
///
|
///
|
||||||
/// * [String] id:
|
/// * [String] id:
|
||||||
|
/// Filter by shared link ID
|
||||||
Future<Response> getAllSharedLinksWithHttpInfo({ String? albumId, String? id, }) async {
|
Future<Response> getAllSharedLinksWithHttpInfo({ String? albumId, String? id, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/shared-links';
|
final apiPath = r'/shared-links';
|
||||||
@@ -201,8 +203,10 @@ class SharedLinksApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] albumId:
|
/// * [String] albumId:
|
||||||
|
/// Filter by album ID
|
||||||
///
|
///
|
||||||
/// * [String] id:
|
/// * [String] id:
|
||||||
|
/// Filter by shared link ID
|
||||||
Future<List<SharedLinkResponseDto>?> getAllSharedLinks({ String? albumId, String? id, }) async {
|
Future<List<SharedLinkResponseDto>?> getAllSharedLinks({ String? albumId, String? id, }) async {
|
||||||
final response = await getAllSharedLinksWithHttpInfo( albumId: albumId, id: id, );
|
final response = await getAllSharedLinksWithHttpInfo( albumId: albumId, id: id, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -232,10 +236,12 @@ class SharedLinksApi {
|
|||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [String] password:
|
/// * [String] password:
|
||||||
|
/// Link password
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [String] token:
|
/// * [String] token:
|
||||||
|
/// Access token
|
||||||
Future<Response> getMySharedLinkWithHttpInfo({ String? key, String? password, String? slug, String? token, }) async {
|
Future<Response> getMySharedLinkWithHttpInfo({ String? key, String? password, String? slug, String? token, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/shared-links/me';
|
final apiPath = r'/shared-links/me';
|
||||||
@@ -283,10 +289,12 @@ class SharedLinksApi {
|
|||||||
/// * [String] key:
|
/// * [String] key:
|
||||||
///
|
///
|
||||||
/// * [String] password:
|
/// * [String] password:
|
||||||
|
/// Link password
|
||||||
///
|
///
|
||||||
/// * [String] slug:
|
/// * [String] slug:
|
||||||
///
|
///
|
||||||
/// * [String] token:
|
/// * [String] token:
|
||||||
|
/// Access token
|
||||||
Future<SharedLinkResponseDto?> getMySharedLink({ String? key, String? password, String? slug, String? token, }) async {
|
Future<SharedLinkResponseDto?> getMySharedLink({ String? key, String? password, String? slug, String? token, }) async {
|
||||||
final response = await getMySharedLinkWithHttpInfo( key: key, password: password, slug: slug, token: token, );
|
final response = await getMySharedLinkWithHttpInfo( key: key, password: password, slug: slug, token: token, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
2
mobile/openapi/lib/api/stacks_api.dart
generated
2
mobile/openapi/lib/api/stacks_api.dart
generated
@@ -289,6 +289,7 @@ class StacksApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] primaryAssetId:
|
/// * [String] primaryAssetId:
|
||||||
|
/// Filter by primary asset ID
|
||||||
Future<Response> searchStacksWithHttpInfo({ String? primaryAssetId, }) async {
|
Future<Response> searchStacksWithHttpInfo({ String? primaryAssetId, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/stacks';
|
final apiPath = r'/stacks';
|
||||||
@@ -325,6 +326,7 @@ class StacksApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] primaryAssetId:
|
/// * [String] primaryAssetId:
|
||||||
|
/// Filter by primary asset ID
|
||||||
Future<List<StackResponseDto>?> searchStacks({ String? primaryAssetId, }) async {
|
Future<List<StackResponseDto>?> searchStacks({ String? primaryAssetId, }) async {
|
||||||
final response = await searchStacksWithHttpInfo( primaryAssetId: primaryAssetId, );
|
final response = await searchStacksWithHttpInfo( primaryAssetId: primaryAssetId, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
10
mobile/openapi/lib/api/users_admin_api.dart
generated
10
mobile/openapi/lib/api/users_admin_api.dart
generated
@@ -318,10 +318,13 @@ class UsersAdminApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Filter by trash status
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Filter by visibility
|
||||||
Future<Response> getUserStatisticsAdminWithHttpInfo(String id, { bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
Future<Response> getUserStatisticsAdminWithHttpInfo(String id, { bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/admin/users/{id}/statistics'
|
final apiPath = r'/admin/users/{id}/statistics'
|
||||||
@@ -367,10 +370,13 @@ class UsersAdminApi {
|
|||||||
/// * [String] id (required):
|
/// * [String] id (required):
|
||||||
///
|
///
|
||||||
/// * [bool] isFavorite:
|
/// * [bool] isFavorite:
|
||||||
|
/// Filter by favorite status
|
||||||
///
|
///
|
||||||
/// * [bool] isTrashed:
|
/// * [bool] isTrashed:
|
||||||
|
/// Filter by trash status
|
||||||
///
|
///
|
||||||
/// * [AssetVisibility] visibility:
|
/// * [AssetVisibility] visibility:
|
||||||
|
/// Filter by visibility
|
||||||
Future<AssetStatsResponseDto?> getUserStatisticsAdmin(String id, { bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
Future<AssetStatsResponseDto?> getUserStatisticsAdmin(String id, { bool? isFavorite, bool? isTrashed, AssetVisibility? visibility, }) async {
|
||||||
final response = await getUserStatisticsAdminWithHttpInfo(id, isFavorite: isFavorite, isTrashed: isTrashed, visibility: visibility, );
|
final response = await getUserStatisticsAdminWithHttpInfo(id, isFavorite: isFavorite, isTrashed: isTrashed, visibility: visibility, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
@@ -452,8 +458,10 @@ class UsersAdminApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id:
|
/// * [String] id:
|
||||||
|
/// User ID filter
|
||||||
///
|
///
|
||||||
/// * [bool] withDeleted:
|
/// * [bool] withDeleted:
|
||||||
|
/// Include deleted users
|
||||||
Future<Response> searchUsersAdminWithHttpInfo({ String? id, bool? withDeleted, }) async {
|
Future<Response> searchUsersAdminWithHttpInfo({ String? id, bool? withDeleted, }) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/admin/users';
|
final apiPath = r'/admin/users';
|
||||||
@@ -493,8 +501,10 @@ class UsersAdminApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [String] id:
|
/// * [String] id:
|
||||||
|
/// User ID filter
|
||||||
///
|
///
|
||||||
/// * [bool] withDeleted:
|
/// * [bool] withDeleted:
|
||||||
|
/// Include deleted users
|
||||||
Future<List<UserAdminResponseDto>?> searchUsersAdmin({ String? id, bool? withDeleted, }) async {
|
Future<List<UserAdminResponseDto>?> searchUsersAdmin({ String? id, bool? withDeleted, }) async {
|
||||||
final response = await searchUsersAdminWithHttpInfo( id: id, withDeleted: withDeleted, );
|
final response = await searchUsersAdminWithHttpInfo( id: id, withDeleted: withDeleted, );
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
2
mobile/openapi/lib/api/users_api.dart
generated
2
mobile/openapi/lib/api/users_api.dart
generated
@@ -25,6 +25,7 @@ class UsersApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] file (required):
|
/// * [MultipartFile] file (required):
|
||||||
|
/// Profile image file
|
||||||
Future<Response> createProfileImageWithHttpInfo(MultipartFile file,) async {
|
Future<Response> createProfileImageWithHttpInfo(MultipartFile file,) async {
|
||||||
// ignore: prefer_const_declarations
|
// ignore: prefer_const_declarations
|
||||||
final apiPath = r'/users/profile-image';
|
final apiPath = r'/users/profile-image';
|
||||||
@@ -67,6 +68,7 @@ class UsersApi {
|
|||||||
/// Parameters:
|
/// Parameters:
|
||||||
///
|
///
|
||||||
/// * [MultipartFile] file (required):
|
/// * [MultipartFile] file (required):
|
||||||
|
/// Profile image file
|
||||||
Future<CreateProfileImageResponseDto?> createProfileImage(MultipartFile file,) async {
|
Future<CreateProfileImageResponseDto?> createProfileImage(MultipartFile file,) async {
|
||||||
final response = await createProfileImageWithHttpInfo(file,);
|
final response = await createProfileImageWithHttpInfo(file,);
|
||||||
if (response.statusCode >= HttpStatus.badRequest) {
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
|||||||
@@ -19,8 +19,10 @@ class ActivityCreateDto {
|
|||||||
required this.type,
|
required this.type,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album ID
|
||||||
String albumId;
|
String albumId;
|
||||||
|
|
||||||
|
/// Asset ID (if activity is for an asset)
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -29,6 +31,7 @@ class ActivityCreateDto {
|
|||||||
///
|
///
|
||||||
String? assetId;
|
String? assetId;
|
||||||
|
|
||||||
|
/// Comment text (required if type is comment)
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -37,6 +40,7 @@ class ActivityCreateDto {
|
|||||||
///
|
///
|
||||||
String? comment;
|
String? comment;
|
||||||
|
|
||||||
|
/// Activity type (like or comment)
|
||||||
ReactionType type;
|
ReactionType type;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -21,14 +21,19 @@ class ActivityResponseDto {
|
|||||||
required this.user,
|
required this.user,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID (if activity is for an asset)
|
||||||
String? assetId;
|
String? assetId;
|
||||||
|
|
||||||
|
/// Comment text (for comment activities)
|
||||||
String? comment;
|
String? comment;
|
||||||
|
|
||||||
|
/// Creation date
|
||||||
DateTime createdAt;
|
DateTime createdAt;
|
||||||
|
|
||||||
|
/// Activity ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// Activity type
|
||||||
ReactionType type;
|
ReactionType type;
|
||||||
|
|
||||||
UserResponseDto user;
|
UserResponseDto user;
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class ActivityStatisticsResponseDto {
|
|||||||
required this.likes,
|
required this.likes,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Number of comments
|
||||||
int comments;
|
int comments;
|
||||||
|
|
||||||
|
/// Number of likes
|
||||||
int likes;
|
int likes;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
1
mobile/openapi/lib/model/add_users_dto.dart
generated
1
mobile/openapi/lib/model/add_users_dto.dart
generated
@@ -16,6 +16,7 @@ class AddUsersDto {
|
|||||||
this.albumUsers = const [],
|
this.albumUsers = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album users to add
|
||||||
List<AlbumUserAddDto> albumUsers;
|
List<AlbumUserAddDto> albumUsers;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AdminOnboardingUpdateDto {
|
|||||||
required this.isOnboarded,
|
required this.isOnboarded,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Is admin onboarded
|
||||||
bool isOnboarded;
|
bool isOnboarded;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
15
mobile/openapi/lib/model/album_response_dto.dart
generated
15
mobile/openapi/lib/model/album_response_dto.dart
generated
@@ -34,22 +34,28 @@ class AlbumResponseDto {
|
|||||||
required this.updatedAt,
|
required this.updatedAt,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album name
|
||||||
String albumName;
|
String albumName;
|
||||||
|
|
||||||
|
/// Thumbnail asset ID
|
||||||
String? albumThumbnailAssetId;
|
String? albumThumbnailAssetId;
|
||||||
|
|
||||||
List<AlbumUserResponseDto> albumUsers;
|
List<AlbumUserResponseDto> albumUsers;
|
||||||
|
|
||||||
|
/// Number of assets
|
||||||
int assetCount;
|
int assetCount;
|
||||||
|
|
||||||
List<AssetResponseDto> assets;
|
List<AssetResponseDto> assets;
|
||||||
|
|
||||||
List<ContributorCountResponseDto> contributorCounts;
|
List<ContributorCountResponseDto> contributorCounts;
|
||||||
|
|
||||||
|
/// Creation date
|
||||||
DateTime createdAt;
|
DateTime createdAt;
|
||||||
|
|
||||||
|
/// Album description
|
||||||
String description;
|
String description;
|
||||||
|
|
||||||
|
/// End date (latest asset)
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -58,12 +64,16 @@ class AlbumResponseDto {
|
|||||||
///
|
///
|
||||||
DateTime? endDate;
|
DateTime? endDate;
|
||||||
|
|
||||||
|
/// Has shared link
|
||||||
bool hasSharedLink;
|
bool hasSharedLink;
|
||||||
|
|
||||||
|
/// Album ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// Activity feed enabled
|
||||||
bool isActivityEnabled;
|
bool isActivityEnabled;
|
||||||
|
|
||||||
|
/// Last modified asset timestamp
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -72,6 +82,7 @@ class AlbumResponseDto {
|
|||||||
///
|
///
|
||||||
DateTime? lastModifiedAssetTimestamp;
|
DateTime? lastModifiedAssetTimestamp;
|
||||||
|
|
||||||
|
/// Asset sort order
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -82,10 +93,13 @@ class AlbumResponseDto {
|
|||||||
|
|
||||||
UserResponseDto owner;
|
UserResponseDto owner;
|
||||||
|
|
||||||
|
/// Owner user ID
|
||||||
String ownerId;
|
String ownerId;
|
||||||
|
|
||||||
|
/// Is shared album
|
||||||
bool shared;
|
bool shared;
|
||||||
|
|
||||||
|
/// Start date (earliest asset)
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -94,6 +108,7 @@ class AlbumResponseDto {
|
|||||||
///
|
///
|
||||||
DateTime? startDate;
|
DateTime? startDate;
|
||||||
|
|
||||||
|
/// Last update date
|
||||||
DateTime updatedAt;
|
DateTime updatedAt;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -18,10 +18,13 @@ class AlbumStatisticsResponseDto {
|
|||||||
required this.shared,
|
required this.shared,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Number of non-shared albums
|
||||||
int notShared;
|
int notShared;
|
||||||
|
|
||||||
|
/// Number of owned albums
|
||||||
int owned;
|
int owned;
|
||||||
|
|
||||||
|
/// Number of shared albums
|
||||||
int shared;
|
int shared;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
2
mobile/openapi/lib/model/album_user_add_dto.dart
generated
2
mobile/openapi/lib/model/album_user_add_dto.dart
generated
@@ -17,8 +17,10 @@ class AlbumUserAddDto {
|
|||||||
required this.userId,
|
required this.userId,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album user role
|
||||||
AlbumUserRole role;
|
AlbumUserRole role;
|
||||||
|
|
||||||
|
/// User ID
|
||||||
String userId;
|
String userId;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class AlbumUserCreateDto {
|
|||||||
required this.userId,
|
required this.userId,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album user role
|
||||||
AlbumUserRole role;
|
AlbumUserRole role;
|
||||||
|
|
||||||
|
/// User ID
|
||||||
String userId;
|
String userId;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AlbumUserResponseDto {
|
|||||||
required this.user,
|
required this.user,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album user role
|
||||||
AlbumUserRole role;
|
AlbumUserRole role;
|
||||||
|
|
||||||
UserResponseDto user;
|
UserResponseDto user;
|
||||||
|
|||||||
2
mobile/openapi/lib/model/album_user_role.dart
generated
2
mobile/openapi/lib/model/album_user_role.dart
generated
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
part of openapi.api;
|
part of openapi.api;
|
||||||
|
|
||||||
|
/// Album user role
|
||||||
class AlbumUserRole {
|
class AlbumUserRole {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AlbumUserRole._(this.value);
|
const AlbumUserRole._(this.value);
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class AlbumsAddAssetsDto {
|
|||||||
this.assetIds = const [],
|
this.assetIds = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Album IDs
|
||||||
List<String> albumIds;
|
List<String> albumIds;
|
||||||
|
|
||||||
|
/// Asset IDs
|
||||||
List<String> assetIds;
|
List<String> assetIds;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AlbumsAddAssetsResponseDto {
|
|||||||
required this.success,
|
required this.success,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Error reason
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -25,6 +26,7 @@ class AlbumsAddAssetsResponseDto {
|
|||||||
///
|
///
|
||||||
BulkIdErrorReason? error;
|
BulkIdErrorReason? error;
|
||||||
|
|
||||||
|
/// Operation success
|
||||||
bool success;
|
bool success;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
1
mobile/openapi/lib/model/albums_response.dart
generated
1
mobile/openapi/lib/model/albums_response.dart
generated
@@ -16,6 +16,7 @@ class AlbumsResponse {
|
|||||||
this.defaultAssetOrder = AssetOrder.desc,
|
this.defaultAssetOrder = AssetOrder.desc,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Default asset order for albums
|
||||||
AssetOrder defaultAssetOrder;
|
AssetOrder defaultAssetOrder;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
1
mobile/openapi/lib/model/albums_update.dart
generated
1
mobile/openapi/lib/model/albums_update.dart
generated
@@ -16,6 +16,7 @@ class AlbumsUpdate {
|
|||||||
this.defaultAssetOrder,
|
this.defaultAssetOrder,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Default asset order for albums
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
|
|||||||
2
mobile/openapi/lib/model/api_key_create_dto.dart
generated
2
mobile/openapi/lib/model/api_key_create_dto.dart
generated
@@ -17,6 +17,7 @@ class APIKeyCreateDto {
|
|||||||
this.permissions = const [],
|
this.permissions = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// API key name
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -25,6 +26,7 @@ class APIKeyCreateDto {
|
|||||||
///
|
///
|
||||||
String? name;
|
String? name;
|
||||||
|
|
||||||
|
/// List of permissions
|
||||||
List<Permission> permissions;
|
List<Permission> permissions;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class APIKeyCreateResponseDto {
|
|||||||
|
|
||||||
APIKeyResponseDto apiKey;
|
APIKeyResponseDto apiKey;
|
||||||
|
|
||||||
|
/// API key secret (only shown once)
|
||||||
String secret;
|
String secret;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -20,14 +20,19 @@ class APIKeyResponseDto {
|
|||||||
required this.updatedAt,
|
required this.updatedAt,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Creation date
|
||||||
DateTime createdAt;
|
DateTime createdAt;
|
||||||
|
|
||||||
|
/// API key ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// API key name
|
||||||
String name;
|
String name;
|
||||||
|
|
||||||
|
/// List of permissions
|
||||||
List<Permission> permissions;
|
List<Permission> permissions;
|
||||||
|
|
||||||
|
/// Last update date
|
||||||
DateTime updatedAt;
|
DateTime updatedAt;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
2
mobile/openapi/lib/model/api_key_update_dto.dart
generated
2
mobile/openapi/lib/model/api_key_update_dto.dart
generated
@@ -17,6 +17,7 @@ class APIKeyUpdateDto {
|
|||||||
this.permissions = const [],
|
this.permissions = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// API key name
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -25,6 +26,7 @@ class APIKeyUpdateDto {
|
|||||||
///
|
///
|
||||||
String? name;
|
String? name;
|
||||||
|
|
||||||
|
/// List of permissions
|
||||||
List<Permission> permissions;
|
List<Permission> permissions;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AssetBulkDeleteDto {
|
|||||||
this.ids = const [],
|
this.ids = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Force delete even if in use
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -25,6 +26,7 @@ class AssetBulkDeleteDto {
|
|||||||
///
|
///
|
||||||
bool? force;
|
bool? force;
|
||||||
|
|
||||||
|
/// IDs to process
|
||||||
List<String> ids;
|
List<String> ids;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
12
mobile/openapi/lib/model/asset_bulk_update_dto.dart
generated
12
mobile/openapi/lib/model/asset_bulk_update_dto.dart
generated
@@ -26,6 +26,7 @@ class AssetBulkUpdateDto {
|
|||||||
this.visibility,
|
this.visibility,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Original date and time
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -34,6 +35,7 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
String? dateTimeOriginal;
|
String? dateTimeOriginal;
|
||||||
|
|
||||||
|
/// Relative time offset in seconds
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -42,6 +44,7 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
num? dateTimeRelative;
|
num? dateTimeRelative;
|
||||||
|
|
||||||
|
/// Asset description
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -50,10 +53,13 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
String? description;
|
String? description;
|
||||||
|
|
||||||
|
/// Duplicate asset ID
|
||||||
String? duplicateId;
|
String? duplicateId;
|
||||||
|
|
||||||
|
/// Asset IDs to update
|
||||||
List<String> ids;
|
List<String> ids;
|
||||||
|
|
||||||
|
/// Mark as favorite
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -62,6 +68,7 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
bool? isFavorite;
|
bool? isFavorite;
|
||||||
|
|
||||||
|
/// Latitude coordinate
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -70,6 +77,7 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
num? latitude;
|
num? latitude;
|
||||||
|
|
||||||
|
/// Longitude coordinate
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -78,6 +86,8 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
num? longitude;
|
num? longitude;
|
||||||
|
|
||||||
|
/// Rating
|
||||||
|
///
|
||||||
/// Minimum value: -1
|
/// Minimum value: -1
|
||||||
/// Maximum value: 5
|
/// Maximum value: 5
|
||||||
///
|
///
|
||||||
@@ -88,6 +98,7 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
num? rating;
|
num? rating;
|
||||||
|
|
||||||
|
/// Time zone (IANA timezone)
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -96,6 +107,7 @@ class AssetBulkUpdateDto {
|
|||||||
///
|
///
|
||||||
String? timeZone;
|
String? timeZone;
|
||||||
|
|
||||||
|
/// Asset visibility
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AssetBulkUploadCheckDto {
|
|||||||
this.assets = const [],
|
this.assets = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Assets to check
|
||||||
List<AssetBulkUploadCheckItem> assets;
|
List<AssetBulkUploadCheckItem> assets;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,9 +17,10 @@ class AssetBulkUploadCheckItem {
|
|||||||
required this.id,
|
required this.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// base64 or hex encoded sha1 hash
|
/// Base64 or hex encoded SHA1 hash
|
||||||
String checksum;
|
String checksum;
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AssetBulkUploadCheckResponseDto {
|
|||||||
this.results = const [],
|
this.results = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Upload check results
|
||||||
List<AssetBulkUploadCheckResult> results;
|
List<AssetBulkUploadCheckResult> results;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -20,8 +20,10 @@ class AssetBulkUploadCheckResult {
|
|||||||
this.reason,
|
this.reason,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Upload action
|
||||||
AssetBulkUploadCheckResultActionEnum action;
|
AssetBulkUploadCheckResultActionEnum action;
|
||||||
|
|
||||||
|
/// Existing asset ID if duplicate
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -30,8 +32,10 @@ class AssetBulkUploadCheckResult {
|
|||||||
///
|
///
|
||||||
String? assetId;
|
String? assetId;
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// Whether existing asset is trashed
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -40,6 +44,7 @@ class AssetBulkUploadCheckResult {
|
|||||||
///
|
///
|
||||||
bool? isTrashed;
|
bool? isTrashed;
|
||||||
|
|
||||||
|
/// Rejection reason if rejected
|
||||||
AssetBulkUploadCheckResultReasonEnum? reason;
|
AssetBulkUploadCheckResultReasonEnum? reason;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -150,7 +155,7 @@ class AssetBulkUploadCheckResult {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Upload action
|
||||||
class AssetBulkUploadCheckResultActionEnum {
|
class AssetBulkUploadCheckResultActionEnum {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AssetBulkUploadCheckResultActionEnum._(this.value);
|
const AssetBulkUploadCheckResultActionEnum._(this.value);
|
||||||
@@ -224,7 +229,7 @@ class AssetBulkUploadCheckResultActionEnumTypeTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// Rejection reason if rejected
|
||||||
class AssetBulkUploadCheckResultReasonEnum {
|
class AssetBulkUploadCheckResultReasonEnum {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AssetBulkUploadCheckResultReasonEnum._(this.value);
|
const AssetBulkUploadCheckResultReasonEnum._(this.value);
|
||||||
|
|||||||
7
mobile/openapi/lib/model/asset_copy_dto.dart
generated
7
mobile/openapi/lib/model/asset_copy_dto.dart
generated
@@ -22,18 +22,25 @@ class AssetCopyDto {
|
|||||||
required this.targetId,
|
required this.targetId,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Copy album associations
|
||||||
bool albums;
|
bool albums;
|
||||||
|
|
||||||
|
/// Copy favorite status
|
||||||
bool favorite;
|
bool favorite;
|
||||||
|
|
||||||
|
/// Copy shared links
|
||||||
bool sharedLinks;
|
bool sharedLinks;
|
||||||
|
|
||||||
|
/// Copy sidecar file
|
||||||
bool sidecar;
|
bool sidecar;
|
||||||
|
|
||||||
|
/// Source asset ID
|
||||||
String sourceId;
|
String sourceId;
|
||||||
|
|
||||||
|
/// Copy stack association
|
||||||
bool stack;
|
bool stack;
|
||||||
|
|
||||||
|
/// Target asset ID
|
||||||
String targetId;
|
String targetId;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class AssetDeltaSyncDto {
|
|||||||
this.userIds = const [],
|
this.userIds = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Sync assets updated after this date
|
||||||
DateTime updatedAfter;
|
DateTime updatedAfter;
|
||||||
|
|
||||||
|
/// User IDs to sync
|
||||||
List<String> userIds;
|
List<String> userIds;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -18,10 +18,13 @@ class AssetDeltaSyncResponseDto {
|
|||||||
this.upserted = const [],
|
this.upserted = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Deleted asset IDs
|
||||||
List<String> deleted;
|
List<String> deleted;
|
||||||
|
|
||||||
|
/// Whether full sync is needed
|
||||||
bool needsFullSync;
|
bool needsFullSync;
|
||||||
|
|
||||||
|
/// Upserted assets
|
||||||
List<AssetResponseDto> upserted;
|
List<AssetResponseDto> upserted;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
2
mobile/openapi/lib/model/asset_edit_action.dart
generated
2
mobile/openapi/lib/model/asset_edit_action.dart
generated
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
part of openapi.api;
|
part of openapi.api;
|
||||||
|
|
||||||
|
/// Type of edit action to perform
|
||||||
class AssetEditAction {
|
class AssetEditAction {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AssetEditAction._(this.value);
|
const AssetEditAction._(this.value);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AssetEditActionCrop {
|
|||||||
required this.parameters,
|
required this.parameters,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Type of edit action to perform
|
||||||
AssetEditAction action;
|
AssetEditAction action;
|
||||||
|
|
||||||
CropParameters parameters;
|
CropParameters parameters;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class AssetEditActionListDto {
|
|||||||
this.edits = const [],
|
this.edits = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
/// list of edits
|
/// List of edit actions to apply (crop, rotate, or mirror)
|
||||||
List<AssetEditActionListDtoEditsInner> edits;
|
List<AssetEditActionListDtoEditsInner> edits;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AssetEditActionListDtoEditsInner {
|
|||||||
required this.parameters,
|
required this.parameters,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Type of edit action to perform
|
||||||
AssetEditAction action;
|
AssetEditAction action;
|
||||||
|
|
||||||
MirrorParameters parameters;
|
MirrorParameters parameters;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AssetEditActionMirror {
|
|||||||
required this.parameters,
|
required this.parameters,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Type of edit action to perform
|
||||||
AssetEditAction action;
|
AssetEditAction action;
|
||||||
|
|
||||||
MirrorParameters parameters;
|
MirrorParameters parameters;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class AssetEditActionRotate {
|
|||||||
required this.parameters,
|
required this.parameters,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Type of edit action to perform
|
||||||
AssetEditAction action;
|
AssetEditAction action;
|
||||||
|
|
||||||
RotateParameters parameters;
|
RotateParameters parameters;
|
||||||
|
|||||||
3
mobile/openapi/lib/model/asset_edits_dto.dart
generated
3
mobile/openapi/lib/model/asset_edits_dto.dart
generated
@@ -17,9 +17,10 @@ class AssetEditsDto {
|
|||||||
this.edits = const [],
|
this.edits = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID to apply edits to
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
/// list of edits
|
/// List of edit actions to apply (crop, rotate, or mirror)
|
||||||
List<AssetEditActionListDtoEditsInner> edits;
|
List<AssetEditActionListDtoEditsInner> edits;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -23,20 +23,28 @@ class AssetFaceCreateDto {
|
|||||||
required this.y,
|
required this.y,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
|
/// Face bounding box height
|
||||||
int height;
|
int height;
|
||||||
|
|
||||||
|
/// Image height in pixels
|
||||||
int imageHeight;
|
int imageHeight;
|
||||||
|
|
||||||
|
/// Image width in pixels
|
||||||
int imageWidth;
|
int imageWidth;
|
||||||
|
|
||||||
|
/// Person ID
|
||||||
String personId;
|
String personId;
|
||||||
|
|
||||||
|
/// Face bounding box width
|
||||||
int width;
|
int width;
|
||||||
|
|
||||||
|
/// Face bounding box X coordinate
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
|
/// Face bounding box Y coordinate
|
||||||
int y;
|
int y;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AssetFaceDeleteDto {
|
|||||||
required this.force,
|
required this.force,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Force delete even if person has other faces
|
||||||
bool force;
|
bool force;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -24,22 +24,31 @@ class AssetFaceResponseDto {
|
|||||||
this.sourceType,
|
this.sourceType,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Bounding box X1 coordinate
|
||||||
int boundingBoxX1;
|
int boundingBoxX1;
|
||||||
|
|
||||||
|
/// Bounding box X2 coordinate
|
||||||
int boundingBoxX2;
|
int boundingBoxX2;
|
||||||
|
|
||||||
|
/// Bounding box Y1 coordinate
|
||||||
int boundingBoxY1;
|
int boundingBoxY1;
|
||||||
|
|
||||||
|
/// Bounding box Y2 coordinate
|
||||||
int boundingBoxY2;
|
int boundingBoxY2;
|
||||||
|
|
||||||
|
/// Face ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// Image height in pixels
|
||||||
int imageHeight;
|
int imageHeight;
|
||||||
|
|
||||||
|
/// Image width in pixels
|
||||||
int imageWidth;
|
int imageWidth;
|
||||||
|
|
||||||
|
/// Person associated with face
|
||||||
PersonResponseDto? person;
|
PersonResponseDto? person;
|
||||||
|
|
||||||
|
/// Face detection source type
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AssetFaceUpdateDto {
|
|||||||
this.data = const [],
|
this.data = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Face update items
|
||||||
List<AssetFaceUpdateItem> data;
|
List<AssetFaceUpdateItem> data;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class AssetFaceUpdateItem {
|
|||||||
required this.personId,
|
required this.personId,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
|
/// Person ID
|
||||||
String personId;
|
String personId;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -23,20 +23,28 @@ class AssetFaceWithoutPersonResponseDto {
|
|||||||
this.sourceType,
|
this.sourceType,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Bounding box X1 coordinate
|
||||||
int boundingBoxX1;
|
int boundingBoxX1;
|
||||||
|
|
||||||
|
/// Bounding box X2 coordinate
|
||||||
int boundingBoxX2;
|
int boundingBoxX2;
|
||||||
|
|
||||||
|
/// Bounding box Y1 coordinate
|
||||||
int boundingBoxY1;
|
int boundingBoxY1;
|
||||||
|
|
||||||
|
/// Bounding box Y2 coordinate
|
||||||
int boundingBoxY2;
|
int boundingBoxY2;
|
||||||
|
|
||||||
|
/// Face ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// Image height in pixels
|
||||||
int imageHeight;
|
int imageHeight;
|
||||||
|
|
||||||
|
/// Image width in pixels
|
||||||
int imageWidth;
|
int imageWidth;
|
||||||
|
|
||||||
|
/// Face detection source type
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ class AssetFullSyncDto {
|
|||||||
this.userId,
|
this.userId,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Last asset ID (pagination)
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
@@ -27,11 +28,15 @@ class AssetFullSyncDto {
|
|||||||
///
|
///
|
||||||
String? lastId;
|
String? lastId;
|
||||||
|
|
||||||
|
/// Maximum number of assets to return
|
||||||
|
///
|
||||||
/// Minimum value: 1
|
/// Minimum value: 1
|
||||||
int limit;
|
int limit;
|
||||||
|
|
||||||
|
/// Sync assets updated until this date
|
||||||
DateTime updatedUntil;
|
DateTime updatedUntil;
|
||||||
|
|
||||||
|
/// Filter by user ID
|
||||||
///
|
///
|
||||||
/// Please note: This property should have been non-nullable! Since the specification file
|
/// Please note: This property should have been non-nullable! Since the specification file
|
||||||
/// does not include a default value (using the "default:" property), however, the generated
|
/// does not include a default value (using the "default:" property), however, the generated
|
||||||
|
|||||||
1
mobile/openapi/lib/model/asset_ids_dto.dart
generated
1
mobile/openapi/lib/model/asset_ids_dto.dart
generated
@@ -16,6 +16,7 @@ class AssetIdsDto {
|
|||||||
this.assetIds = const [],
|
this.assetIds = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset IDs
|
||||||
List<String> assetIds;
|
List<String> assetIds;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -18,10 +18,13 @@ class AssetIdsResponseDto {
|
|||||||
required this.success,
|
required this.success,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
|
/// Error reason if failed
|
||||||
AssetIdsResponseDtoErrorEnum? error;
|
AssetIdsResponseDtoErrorEnum? error;
|
||||||
|
|
||||||
|
/// Whether operation succeeded
|
||||||
bool success;
|
bool success;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -116,7 +119,7 @@ class AssetIdsResponseDto {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Error reason if failed
|
||||||
class AssetIdsResponseDtoErrorEnum {
|
class AssetIdsResponseDtoErrorEnum {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AssetIdsResponseDtoErrorEnum._(this.value);
|
const AssetIdsResponseDtoErrorEnum._(this.value);
|
||||||
|
|||||||
2
mobile/openapi/lib/model/asset_job_name.dart
generated
2
mobile/openapi/lib/model/asset_job_name.dart
generated
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
part of openapi.api;
|
part of openapi.api;
|
||||||
|
|
||||||
|
/// Job name
|
||||||
class AssetJobName {
|
class AssetJobName {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AssetJobName._(this.value);
|
const AssetJobName._(this.value);
|
||||||
|
|||||||
2
mobile/openapi/lib/model/asset_jobs_dto.dart
generated
2
mobile/openapi/lib/model/asset_jobs_dto.dart
generated
@@ -17,8 +17,10 @@ class AssetJobsDto {
|
|||||||
required this.name,
|
required this.name,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset IDs
|
||||||
List<String> assetIds;
|
List<String> assetIds;
|
||||||
|
|
||||||
|
/// Job name
|
||||||
AssetJobName name;
|
AssetJobName name;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class AssetMediaResponseDto {
|
|||||||
required this.status,
|
required this.status,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset media ID
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
|
/// Upload status
|
||||||
AssetMediaStatus status;
|
AssetMediaStatus status;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
2
mobile/openapi/lib/model/asset_media_status.dart
generated
2
mobile/openapi/lib/model/asset_media_status.dart
generated
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
part of openapi.api;
|
part of openapi.api;
|
||||||
|
|
||||||
|
/// Upload status
|
||||||
class AssetMediaStatus {
|
class AssetMediaStatus {
|
||||||
/// Instantiate a new enum with the provided [value].
|
/// Instantiate a new enum with the provided [value].
|
||||||
const AssetMediaStatus._(this.value);
|
const AssetMediaStatus._(this.value);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AssetMetadataBulkDeleteDto {
|
|||||||
this.items = const [],
|
this.items = const [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Metadata items to delete
|
||||||
List<AssetMetadataBulkDeleteItemDto> items;
|
List<AssetMetadataBulkDeleteItemDto> items;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ class AssetMetadataBulkDeleteItemDto {
|
|||||||
required this.key,
|
required this.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
|
/// Metadata key
|
||||||
String key;
|
String key;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -19,12 +19,16 @@ class AssetMetadataBulkResponseDto {
|
|||||||
required this.value,
|
required this.value,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// Asset ID
|
||||||
String assetId;
|
String assetId;
|
||||||
|
|
||||||
|
/// Metadata key
|
||||||
String key;
|
String key;
|
||||||
|
|
||||||
|
/// Last update date
|
||||||
DateTime updatedAt;
|
DateTime updatedAt;
|
||||||
|
|
||||||
|
/// Metadata value (object)
|
||||||
Object value;
|
Object value;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user