mirror of
https://github.com/immich-app/immich.git
synced 2026-07-08 05:17:54 -07:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 439ace9dba | |||
| 5c2fb2245a | |||
| 924e6251fd | |||
| 3aebb82905 |
@@ -183,6 +183,7 @@ class AuthNotifier extends StateNotifier<AuthState> {
|
|||||||
|
|
||||||
Future<void> saveLocalEndpoint(String url) async {
|
Future<void> saveLocalEndpoint(String url) async {
|
||||||
await _ref.read(settingsProvider).write(.networkLocalEndpoint, url);
|
await _ref.read(settingsProvider).write(.networkLocalEndpoint, url);
|
||||||
|
await _apiService.updateHeaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
String? getSavedWifiName() {
|
String? getSavedWifiName() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:immich_mobile/domain/models/settings_key.dart';
|
|||||||
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
import 'package:immich_mobile/extensions/build_context_extensions.dart';
|
||||||
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
import 'package:immich_mobile/extensions/translate_extensions.dart';
|
||||||
import 'package:immich_mobile/models/auth/auxilary_endpoint.model.dart';
|
import 'package:immich_mobile/models/auth/auxilary_endpoint.model.dart';
|
||||||
|
import 'package:immich_mobile/providers/api.provider.dart';
|
||||||
import 'package:immich_mobile/providers/infrastructure/settings.provider.dart';
|
import 'package:immich_mobile/providers/infrastructure/settings.provider.dart';
|
||||||
import 'package:immich_mobile/widgets/settings/networking_settings/endpoint_input.dart';
|
import 'package:immich_mobile/widgets/settings/networking_settings/endpoint_input.dart';
|
||||||
|
|
||||||
@@ -26,13 +27,16 @@ class ExternalNetworkPreference extends HookConsumerWidget {
|
|||||||
.map((e) => e.url)
|
.map((e) => e.url)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
ref.read(settingsProvider).write(SettingsKey.networkExternalEndpointList, urls);
|
return ref.read(settingsProvider).write(SettingsKey.networkExternalEndpointList, urls);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateValidationStatus(String url, int index, AuxCheckStatus status) {
|
updateValidationStatus(String url, int index, AuxCheckStatus status) async {
|
||||||
entries.value[index] = entries.value[index].copyWith(url: url, status: status);
|
entries.value[index] = entries.value[index].copyWith(url: url, status: status);
|
||||||
|
|
||||||
saveEndpointList();
|
await saveEndpointList();
|
||||||
|
if (status == AuxCheckStatus.valid) {
|
||||||
|
await ref.read(apiServiceProvider).updateHeaders();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleReorder(int oldIndex, int newIndex) {
|
handleReorder(int oldIndex, int newIndex) {
|
||||||
|
|||||||
+8
-7
@@ -309,8 +309,8 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: "pkgs/cupertino_http"
|
path: "pkgs/cupertino_http"
|
||||||
ref: a0a933358517c6d01cff37fc2a2752ee2d744a3c
|
ref: "58b03c756b81d16b3975a8ae4b91d25360123bb5"
|
||||||
resolved-ref: a0a933358517c6d01cff37fc2a2752ee2d744a3c
|
resolved-ref: "58b03c756b81d16b3975a8ae4b91d25360123bb5"
|
||||||
url: "https://github.com/mertalev/http"
|
url: "https://github.com/mertalev/http"
|
||||||
source: git
|
source: git
|
||||||
version: "3.0.0-wip"
|
version: "3.0.0-wip"
|
||||||
@@ -1158,12 +1158,13 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.0"
|
version: "0.5.0"
|
||||||
objective_c:
|
objective_c:
|
||||||
dependency: transitive
|
dependency: "direct overridden"
|
||||||
description:
|
description:
|
||||||
name: objective_c
|
path: "pkgs/objective_c"
|
||||||
sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed"
|
ref: "2915556701f4734a784222f290a82adb1b101682"
|
||||||
url: "https://pub.dev"
|
resolved-ref: "2915556701f4734a784222f290a82adb1b101682"
|
||||||
source: hosted
|
url: "https://github.com/mertalev/native"
|
||||||
|
source: git
|
||||||
version: "9.4.1"
|
version: "9.4.1"
|
||||||
octo_image:
|
octo_image:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
|
|||||||
+6
-1
@@ -84,7 +84,7 @@ dependencies:
|
|||||||
cupertino_http:
|
cupertino_http:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/mertalev/http
|
url: https://github.com/mertalev/http
|
||||||
ref: 'a0a933358517c6d01cff37fc2a2752ee2d744a3c' # https://github.com/dart-lang/http/pull/1876
|
ref: '58b03c756b81d16b3975a8ae4b91d25360123bb5'
|
||||||
path: pkgs/cupertino_http/
|
path: pkgs/cupertino_http/
|
||||||
ok_http:
|
ok_http:
|
||||||
git:
|
git:
|
||||||
@@ -114,6 +114,11 @@ dev_dependencies:
|
|||||||
# Pin bonsoir to 5.x until cast releases a version compatible with bonsoir 6.x.
|
# Pin bonsoir to 5.x until cast releases a version compatible with bonsoir 6.x.
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
bonsoir: ^5.1.11
|
bonsoir: ^5.1.11
|
||||||
|
objective_c:
|
||||||
|
git:
|
||||||
|
url: https://github.com/mertalev/native
|
||||||
|
ref: '2915556701f4734a784222f290a82adb1b101682' # https://github.com/dart-lang/native/pull/3458
|
||||||
|
path: pkgs/objective_c/
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
|||||||
@@ -183,6 +183,98 @@
|
|||||||
},
|
},
|
||||||
"uiHints": ["Filter"]
|
"uiHints": ["Filter"]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "assetDateFilter",
|
||||||
|
"title": "Filter by date",
|
||||||
|
"description": "Filter assets by date taken",
|
||||||
|
"types": ["AssetV1"],
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"startDate": {
|
||||||
|
"type": "object",
|
||||||
|
"title": "Start date",
|
||||||
|
"description": "Earliest date of assets to include",
|
||||||
|
"properties": {
|
||||||
|
"day": {
|
||||||
|
"type": "number",
|
||||||
|
"title": "Day",
|
||||||
|
"description": "Day of the year to match",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"month": {
|
||||||
|
"type": "number",
|
||||||
|
"title": "Month",
|
||||||
|
"description": "Month of the year to match",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"year": {
|
||||||
|
"type": "number",
|
||||||
|
"title": "Year",
|
||||||
|
"description": "Year to match",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uiHint": {
|
||||||
|
"order": 1
|
||||||
|
},
|
||||||
|
"required": ["day", "month", "year"]
|
||||||
|
},
|
||||||
|
"endDate": {
|
||||||
|
"type": "object",
|
||||||
|
"title": "End date",
|
||||||
|
"description": "Latest date of assets to include",
|
||||||
|
"properties": {
|
||||||
|
"day": {
|
||||||
|
"type": "number",
|
||||||
|
"title": "Day",
|
||||||
|
"description": "Day of the year to match",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"month": {
|
||||||
|
"type": "number",
|
||||||
|
"title": "Month",
|
||||||
|
"description": "Month of the year to match",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"year": {
|
||||||
|
"type": "number",
|
||||||
|
"title": "Year",
|
||||||
|
"description": "Year to match",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uiHint": {
|
||||||
|
"order": 2
|
||||||
|
},
|
||||||
|
"required": ["day", "month", "year"]
|
||||||
|
},
|
||||||
|
"recurring": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"title": "Match recurring dates",
|
||||||
|
"description": "Allow any assets with matching months/days regardless of the year",
|
||||||
|
"uiHint": {
|
||||||
|
"order": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["recurring", "startDate", "endDate"]
|
||||||
|
},
|
||||||
|
"uiHints": ["Filter"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "assetTypeFilter",
|
"name": "assetTypeFilter",
|
||||||
"title": "Filter by asset type",
|
"title": "Filter by asset type",
|
||||||
|
|||||||
@@ -124,6 +124,27 @@ const methods = wrapper<Manifest>({
|
|||||||
return { workflow: { continue: earthDiameter * delta <= (config.coordinate?.radius ?? 0) } };
|
return { workflow: { continue: earthDiameter * delta <= (config.coordinate?.radius ?? 0) } };
|
||||||
},
|
},
|
||||||
|
|
||||||
|
assetDateFilter: ({ config, data }) => {
|
||||||
|
const assetDate = new Date(data.asset.localDateTime);
|
||||||
|
let startDate = new Date(config.startDate.year, config.startDate.month - 1, config.startDate.day);
|
||||||
|
let endDate = new Date(config.endDate.year, config.endDate.month - 1, config.endDate.day);
|
||||||
|
|
||||||
|
if (config.recurring) {
|
||||||
|
startDate.setFullYear(assetDate.getFullYear());
|
||||||
|
endDate.setFullYear(assetDate.getFullYear());
|
||||||
|
|
||||||
|
if (endDate < startDate) {
|
||||||
|
if (assetDate > endDate) {
|
||||||
|
endDate.setFullYear(endDate.getFullYear() + 1);
|
||||||
|
} else {
|
||||||
|
startDate.setFullYear(startDate.getFullYear() - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { workflow: { continue: assetDate >= startDate && assetDate <= endDate } };
|
||||||
|
},
|
||||||
|
|
||||||
assetLock: ({ config, data }) => {
|
assetLock: ({ config, data }) => {
|
||||||
if (!config.inverse && data.asset.visibility !== AssetVisibility.Locked) {
|
if (!config.inverse && data.asset.visibility !== AssetVisibility.Locked) {
|
||||||
return { changes: { asset: { visibility: AssetVisibility.Locked } } };
|
return { changes: { asset: { visibility: AssetVisibility.Locked } } };
|
||||||
@@ -179,6 +200,7 @@ const {
|
|||||||
assetFavorite,
|
assetFavorite,
|
||||||
assetFileFilter,
|
assetFileFilter,
|
||||||
assetLocationFilter,
|
assetLocationFilter,
|
||||||
|
assetDateFilter,
|
||||||
assetLock,
|
assetLock,
|
||||||
assetMissingTimeZoneFilter,
|
assetMissingTimeZoneFilter,
|
||||||
assetTypeFilter,
|
assetTypeFilter,
|
||||||
@@ -195,6 +217,7 @@ export {
|
|||||||
assetFavorite,
|
assetFavorite,
|
||||||
assetFileFilter,
|
assetFileFilter,
|
||||||
assetLocationFilter,
|
assetLocationFilter,
|
||||||
|
assetDateFilter,
|
||||||
assetLock,
|
assetLock,
|
||||||
assetMissingTimeZoneFilter,
|
assetMissingTimeZoneFilter,
|
||||||
assetTypeFilter,
|
assetTypeFilter,
|
||||||
|
|||||||
+1
-1
@@ -56,7 +56,7 @@ FROM builder AS plugins
|
|||||||
|
|
||||||
ARG TARGETPLATFORM
|
ARG TARGETPLATFORM
|
||||||
|
|
||||||
COPY --from=ghcr.io/jdx/mise:2026.6.14@sha256:b8f8c20fc3308f8b1d00ccca2bc968e4e208af1c5c1069e1ad9753baa099acff /usr/local/bin/mise /usr/local/bin/mise
|
COPY --from=ghcr.io/jdx/mise:2026.7.2@sha256:51d92371cc08e3c4f0e52f58bb3ec1975a6dc966b7430a4da37dcfc6ae772f30 /usr/local/bin/mise /usr/local/bin/mise
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY ./mise.toml ./mise.toml
|
COPY ./mise.toml ./mise.toml
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
FROM ghcr.io/immich-app/base-server-dev:202607061334@sha256:c83ef9c6d7f5e7f6a276fe96647484d46b7bf6cacc1e35b823dd1d7a1aeda3b8 AS dev
|
FROM ghcr.io/immich-app/base-server-dev:202607061334@sha256:c83ef9c6d7f5e7f6a276fe96647484d46b7bf6cacc1e35b823dd1d7a1aeda3b8 AS dev
|
||||||
|
|
||||||
|
|
||||||
COPY --from=ghcr.io/jdx/mise:2026.6.14@sha256:b8f8c20fc3308f8b1d00ccca2bc968e4e208af1c5c1069e1ad9753baa099acff /usr/local/bin/mise /usr/local/bin/mise
|
COPY --from=ghcr.io/jdx/mise:2026.7.2@sha256:51d92371cc08e3c4f0e52f58bb3ec1975a6dc966b7430a4da37dcfc6ae772f30 /usr/local/bin/mise /usr/local/bin/mise
|
||||||
|
|
||||||
RUN echo "devdir=/buildcache/node-gyp" >> /usr/local/etc/npmrc && \
|
RUN echo "devdir=/buildcache/node-gyp" >> /usr/local/etc/npmrc && \
|
||||||
echo "store-dir=/buildcache/pnpm-store" >> /usr/local/etc/npmrc && \
|
echo "store-dir=/buildcache/pnpm-store" >> /usr/local/etc/npmrc && \
|
||||||
|
|||||||
Reference in New Issue
Block a user