mirror of
https://github.com/immich-app/immich.git
synced 2025-06-16 21:38:28 +02:00
Merge branch 'main' of github.com:immich-app/immich
This commit is contained in:
commit
127901c389
6 changed files with 27 additions and 21 deletions
.github/workflows
docs/src/pages
mobile/lib/services
web/src
lib/components
routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]
5
.github/workflows/test.yml
vendored
5
.github/workflows/test.yml
vendored
|
@ -504,6 +504,11 @@ jobs:
|
||||||
with:
|
with:
|
||||||
channel: 'stable'
|
channel: 'stable'
|
||||||
flutter-version-file: ./mobile/pubspec.yaml
|
flutter-version-file: ./mobile/pubspec.yaml
|
||||||
|
|
||||||
|
- name: Generate translation file
|
||||||
|
run: make translation
|
||||||
|
working-directory: ./mobile
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
working-directory: ./mobile
|
working-directory: ./mobile
|
||||||
run: flutter test -j 1
|
run: flutter test -j 1
|
||||||
|
|
|
@ -218,7 +218,7 @@ const roadmap: Item[] = [
|
||||||
iconColor: 'indianred',
|
iconColor: 'indianred',
|
||||||
title: 'Stable release',
|
title: 'Stable release',
|
||||||
description: 'Immich goes stable',
|
description: 'Immich goes stable',
|
||||||
getDateLabel: () => 'Planned for early 2025',
|
getDateLabel: () => 'Planned for 2025',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
done: false,
|
done: false,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
// ignore_for_file: implementation_imports
|
// ignore_for_file: implementation_imports
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:easy_localization/src/asset_loader.dart';
|
|
||||||
import 'package:easy_localization/src/easy_localization_controller.dart';
|
import 'package:easy_localization/src/easy_localization_controller.dart';
|
||||||
import 'package:easy_localization/src/localization.dart';
|
import 'package:easy_localization/src/localization.dart';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:immich_mobile/constants/locales.dart';
|
import 'package:immich_mobile/constants/locales.dart';
|
||||||
|
import 'package:immich_mobile/generated/codegen_loader.g.dart';
|
||||||
|
|
||||||
/// Workaround to manually load translations in another Isolate
|
/// Workaround to manually load translations in another Isolate
|
||||||
Future<bool> loadTranslations() async {
|
Future<bool> loadTranslations() async {
|
||||||
|
@ -14,7 +14,7 @@ Future<bool> loadTranslations() async {
|
||||||
supportedLocales: locales.values.toList(),
|
supportedLocales: locales.values.toList(),
|
||||||
useFallbackTranslations: true,
|
useFallbackTranslations: true,
|
||||||
saveLocale: true,
|
saveLocale: true,
|
||||||
assetLoader: const RootBundleAssetLoader(),
|
assetLoader: const CodegenLoader(),
|
||||||
path: translationsPath,
|
path: translationsPath,
|
||||||
useOnlyLangCode: false,
|
useOnlyLangCode: false,
|
||||||
onLoadError: (e) => debugPrint(e.toString()),
|
onLoadError: (e) => debugPrint(e.toString()),
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="absolute end-0 top-0 flex place-items-center gap-1 text-xs font-medium text-white">
|
<div class="absolute end-0 top-0 z-1 flex place-items-center gap-1 text-xs font-medium text-white">
|
||||||
{#if showTime}
|
{#if showTime}
|
||||||
<span class="pt-2">
|
<span class="pt-2">
|
||||||
{#if remainingSeconds < 60}
|
{#if remainingSeconds < 60}
|
||||||
|
|
|
@ -564,12 +564,9 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select/deselect assets in range (start,end]
|
// Select/deselect assets in range (start,end)
|
||||||
let started = false;
|
let started = false;
|
||||||
for (const bucket of assetStore.buckets) {
|
for (const bucket of assetStore.buckets) {
|
||||||
if (bucket === startBucket) {
|
|
||||||
started = true;
|
|
||||||
}
|
|
||||||
if (bucket === endBucket) {
|
if (bucket === endBucket) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -583,27 +580,31 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (bucket === startBucket) {
|
||||||
|
started = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update date group selection
|
// Update date group selection in range [start,end]
|
||||||
started = false;
|
started = false;
|
||||||
for (const bucket of assetStore.buckets) {
|
for (const bucket of assetStore.buckets) {
|
||||||
if (bucket === startBucket) {
|
if (bucket === startBucket) {
|
||||||
started = true;
|
started = true;
|
||||||
}
|
}
|
||||||
|
if (started) {
|
||||||
|
// Split bucket into date groups and check each group
|
||||||
|
for (const dateGroup of bucket.dateGroups) {
|
||||||
|
const dateGroupTitle = dateGroup.groupTitle;
|
||||||
|
if (dateGroup.getAssets().every((a) => assetInteraction.hasSelectedAsset(a.id))) {
|
||||||
|
assetInteraction.addGroupToMultiselectGroup(dateGroupTitle);
|
||||||
|
} else {
|
||||||
|
assetInteraction.removeGroupFromMultiselectGroup(dateGroupTitle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (bucket === endBucket) {
|
if (bucket === endBucket) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Split bucket into date groups and check each group
|
|
||||||
for (const dateGroup of bucket.dateGroups) {
|
|
||||||
const dateGroupTitle = dateGroup.groupTitle;
|
|
||||||
if (dateGroup.getAssets().every((a) => assetInteraction.hasSelectedAsset(a.id))) {
|
|
||||||
assetInteraction.addGroupToMultiselectGroup(dateGroupTitle);
|
|
||||||
} else {
|
|
||||||
assetInteraction.removeGroupFromMultiselectGroup(dateGroupTitle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -452,7 +452,7 @@
|
||||||
{/if}
|
{/if}
|
||||||
</section>
|
</section>
|
||||||
{#if isEditingName}
|
{#if isEditingName}
|
||||||
<div class="absolute w-64 sm:w-96">
|
<div class="absolute w-64 sm:w-96 z-1">
|
||||||
{#if isSearchingPeople}
|
{#if isSearchingPeople}
|
||||||
<div
|
<div
|
||||||
class="flex border h-14 rounded-b-lg border-gray-400 dark:border-immich-dark-gray place-items-center bg-gray-200 p-2 dark:bg-gray-700"
|
class="flex border h-14 rounded-b-lg border-gray-400 dark:border-immich-dark-gray place-items-center bg-gray-200 p-2 dark:bg-gray-700"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue