Skip to content

Commit 98d3655

Browse files
committed
feat: serve map tile styles from tiles.immich.cloud
1 parent 39ea73d commit 98d3655

File tree

21 files changed

+73
-265
lines changed

21 files changed

+73
-265
lines changed

Diff for: mobile/.vscode/settings.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"dart.flutterSdkPath": ".fvm/versions/3.24.0",
2+
"dart.flutterSdkPath": ".fvm/versions/3.24.3",
33
"search.exclude": {
44
"**/.fvm": true
55
},

Diff for: mobile/lib/models/server_info/server_config.model.dart

+9-1
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@ class ServerConfig {
44
final int trashDays;
55
final String oauthButtonText;
66
final String externalDomain;
7+
final String mapDarkStyleUrl;
8+
final String mapLightStyleUrl;
79

810
const ServerConfig({
911
required this.trashDays,
1012
required this.oauthButtonText,
1113
required this.externalDomain,
14+
required this.mapDarkStyleUrl,
15+
required this.mapLightStyleUrl,
1216
});
1317

1418
ServerConfig copyWith({
@@ -20,6 +24,8 @@ class ServerConfig {
2024
trashDays: trashDays ?? this.trashDays,
2125
oauthButtonText: oauthButtonText ?? this.oauthButtonText,
2226
externalDomain: externalDomain ?? this.externalDomain,
27+
mapDarkStyleUrl: mapDarkStyleUrl,
28+
mapLightStyleUrl: mapLightStyleUrl,
2329
);
2430
}
2531

@@ -30,7 +36,9 @@ class ServerConfig {
3036
ServerConfig.fromDto(ServerConfigDto dto)
3137
: trashDays = dto.trashDays,
3238
oauthButtonText = dto.oauthButtonText,
33-
externalDomain = dto.externalDomain;
39+
externalDomain = dto.externalDomain,
40+
mapDarkStyleUrl = dto.mapDarkStyleUrl,
41+
mapLightStyleUrl = dto.mapLightStyleUrl;
3442

3543
@override
3644
bool operator ==(covariant ServerConfig other) {

Diff for: mobile/lib/providers/map/map_state.provider.dart

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import 'package:flutter/material.dart';
44
import 'package:immich_mobile/extensions/response_extensions.dart';
55
import 'package:immich_mobile/models/map/map_state.model.dart';
66
import 'package:immich_mobile/providers/app_settings.provider.dart';
7+
import 'package:immich_mobile/providers/server_info.provider.dart';
78
import 'package:immich_mobile/services/app_settings.service.dart';
8-
import 'package:immich_mobile/providers/api.provider.dart';
99
import 'package:logging/logging.dart';
10-
import 'package:openapi/api.dart';
1110
import 'package:path_provider/path_provider.dart';
1211
import 'package:riverpod_annotation/riverpod_annotation.dart';
12+
import 'package:http/http.dart' as http;
1313

1414
part 'map_state.provider.g.dart';
1515

@@ -43,11 +43,11 @@ class MapStateNotifier extends _$MapStateNotifier {
4343
// Set to loading
4444
state = state.copyWith(lightStyleFetched: const AsyncLoading());
4545

46-
// Fetch and save light theme
47-
final lightResponse = await ref
48-
.read(apiServiceProvider)
49-
.mapApi
50-
.getMapStyleWithHttpInfo(MapTheme.light);
46+
final lightStyleUrl =
47+
ref.read(serverInfoProvider).serverConfig.mapLightStyleUrl;
48+
49+
// Fetch from url and save light theme
50+
final lightResponse = await http.get(Uri.parse(lightStyleUrl));
5151

5252
if (lightResponse.statusCode >= HttpStatus.badRequest) {
5353
state = state.copyWith(
@@ -71,11 +71,11 @@ class MapStateNotifier extends _$MapStateNotifier {
7171
// Set to loading
7272
state = state.copyWith(darkStyleFetched: const AsyncLoading());
7373

74+
final darkStyleUrl =
75+
ref.read(serverInfoProvider).serverConfig.mapDarkStyleUrl;
76+
7477
// Fetch and save dark theme
75-
final darkResponse = await ref
76-
.read(apiServiceProvider)
77-
.mapApi
78-
.getMapStyleWithHttpInfo(MapTheme.dark);
78+
final darkResponse = await http.get(Uri.parse(darkStyleUrl));
7979

8080
if (darkResponse.statusCode >= HttpStatus.badRequest) {
8181
state = state.copyWith(

Diff for: mobile/lib/providers/server_info.provider.dart

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ class ServerInfoNotifier extends StateNotifier<ServerInfo> {
3434
trashDays: 30,
3535
oauthButtonText: '',
3636
externalDomain: '',
37+
mapLightStyleUrl: 'https://tiles.immich.cloud/v1/style/light.json',
38+
mapDarkStyleUrl: 'https://tiles.immich.cloud/v1/style/dark.json',
3739
),
3840
serverDiskInfo: const ServerDiskInfo(
3941
diskAvailable: "0",

Diff for: mobile/lib/utils/openapi_patching.dart

+5
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ dynamic upgradeDto(dynamic value, String targetType) {
1212
addDefault(value, 'tags', TagsResponse().toJson());
1313
}
1414
break;
15+
case 'ServerConfigDto':
16+
if (value is Map) {
17+
addDefault(value, 'mapLightStyleUrl', 'https://tiles.immich.cloud/v1/style/light.json');
18+
addDefault(value, 'mapDarkStyleUrl', 'https://tiles.immich.cloud/v1/style/dark.json');
19+
}
1520
case 'UserResponseDto':
1621
if (value is Map) {
1722
addDefault(value, 'profileChangedAt', DateTime.now().toIso8601String());

Diff for: mobile/openapi/README.md

-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: mobile/openapi/lib/api.dart

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: mobile/openapi/lib/api/map_api.dart

-56
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: mobile/openapi/lib/api_client.dart

-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: mobile/openapi/lib/api_helper.dart

-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: mobile/openapi/lib/model/map_theme.dart

-85
This file was deleted.

Diff for: mobile/openapi/lib/model/server_config_dto.dart

+17-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)