Skip to content

Commit 4c27336

Browse files
committed
Fix remotes won't be parsed correctly, closes #111
1 parent 9fe2446 commit 4c27336

File tree

7 files changed

+134
-89
lines changed

7 files changed

+134
-89
lines changed

app/lib/api/storage/remote/model.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:dart_mappable/dart_mappable.dart';
44

55
part 'model.mapper.dart';
66

7-
@MappableClass()
7+
@MappableClass(discriminatorKey: 'type')
88
sealed class RemoteStorage with RemoteStorageMappable {
99
final String url;
1010
final String username;
@@ -18,22 +18,22 @@ sealed class RemoteStorage with RemoteStorageMappable {
1818
String get displayName => '$username@${uri.host}';
1919
}
2020

21-
@MappableClass()
21+
@MappableClass(discriminatorValue: 'caldav')
2222
final class CalDavStorage extends RemoteStorage with CalDavStorageMappable {
2323
const CalDavStorage({required super.url, required super.username});
2424
}
2525

26-
@MappableClass()
26+
@MappableClass(discriminatorValue: 'ical')
2727
final class ICalStorage extends RemoteStorage with ICalStorageMappable {
2828
const ICalStorage({required super.url, required super.username});
2929
}
3030

31-
@MappableClass()
31+
@MappableClass(discriminatorValue: 'webdav')
3232
final class WebDavStorage extends RemoteStorage with WebDavStorageMappable {
3333
const WebDavStorage({required super.url, required super.username});
3434
}
3535

36-
@MappableClass()
36+
@MappableClass(discriminatorValue: 'sia')
3737
final class SiaStorage extends RemoteStorage with SiaStorageMappable {
3838
const SiaStorage({required super.url, required super.username});
3939
}

app/lib/api/storage/remote/model.mapper.dart

Lines changed: 45 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/lib/cubits/settings.dart

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,20 @@ class FlowSettings with FlowSettingsMappable, LeapSettings {
143143
prefs.getString(syncModeKey) ?? 'noMobile',
144144
),
145145
remotes:
146-
prefs
147-
.getStringList(remotesKey)
148-
?.map((e) => RemoteStorageMapper.fromJson(e))
149-
.toList() ??
146+
prefs.getStringList(remotesKey)?.map((e) {
147+
if (e.startsWith('"')) {
148+
e = jsonDecode(e);
149+
}
150+
final map = jsonDecode(e) as Map<String, dynamic>;
151+
if (!map.containsKey('type')) {
152+
if (map['url'].toString().contains('caldav')) {
153+
map['type'] = 'caldav';
154+
} else {
155+
map['type'] = 'ical';
156+
}
157+
}
158+
return RemoteStorageMapper.fromMap(map);
159+
}).toList() ??
150160
[],
151161
startOfWeek: prefs.getInt(startOfWeekKey) ?? 0,
152162
density: ThemeDensity.values.byName(
@@ -173,10 +183,8 @@ class FlowSettings with FlowSettingsMappable, LeapSettings {
173183
prefs.setString(localeKey, locale);
174184
Future<void> saveSyncMode(SharedPreferences prefs) =>
175185
prefs.setString(syncModeKey, syncMode.name);
176-
Future<void> saveRemotes(SharedPreferences prefs) => prefs.setStringList(
177-
remotesKey,
178-
remotes.map((e) => json.encode(e.toJson())).toList(),
179-
);
186+
Future<void> saveRemotes(SharedPreferences prefs) =>
187+
prefs.setStringList(remotesKey, remotes.map((e) => e.toJson()).toList());
180188
Future<void> saveStartOfWeek(SharedPreferences prefs) =>
181189
prefs.setInt(startOfWeekKey, startOfWeek);
182190
Future<void> saveDensity(SharedPreferences prefs) =>

app/pubspec.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,10 +1161,10 @@ packages:
11611161
dependency: "direct main"
11621162
description:
11631163
name: sqflite_common_ffi_web
1164-
sha256: "33495e9172c958d907c48fd43fbea0b9c0a2ec2e36a548ebd07672fde61b6497"
1164+
sha256: "793c1ff5b0c95ac618e7731e209db99e96abff59ad3432a3c91bd2b1454a00d5"
11651165
url: "https://pub.dev"
11661166
source: hosted
1167-
version: "1.0.1+1"
1167+
version: "1.0.1+2"
11681168
sqflite_darwin:
11691169
dependency: transitive
11701170
description:

docs/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@
1515
"@astrojs/starlight": "^0.36.0",
1616
"@phosphor-icons/react": "^2.1.10",
1717
"@types/react": "^19.2.2",
18-
"@types/react-dom": "^19.2.1",
19-
"astro": "^5.14.4",
18+
"@types/react-dom": "^19.2.2",
19+
"astro": "^5.14.5",
2020
"react": "^19.2.0",
2121
"react-dom": "^19.2.0",
2222
"remark-gemoji": "^8.0.0",
2323
"remark-heading-id": "^1.0.1",
2424
"typescript": "^5.9.3"
2525
},
26-
"packageManager": "[email protected].2",
26+
"packageManager": "[email protected].3",
2727
"devDependencies": {
28-
"@vite-pwa/astro": "^1.1.0",
28+
"@vite-pwa/astro": "^1.1.1",
2929
"sass": "^1.93.2",
3030
"sharp": "^0.34.4",
31-
"vite-plugin-pwa": "^1.0.3",
31+
"vite-plugin-pwa": "^1.1.0",
3232
"workbox-window": "^7.3.0"
3333
}
3434
}

0 commit comments

Comments
 (0)