Persist per-event Google calendar assignments

This commit is contained in:
zsolt
2026-08-13 14:01:04 +02:00
parent aea92b0eed
commit 1809da2e4d
4 changed files with 117 additions and 46 deletions
+18 -5
View File
@@ -780,7 +780,9 @@ class _HomeShellState extends State<HomeShell> {
setState(() => workspaceSyncing = true);
try {
final baseUri = Uri.parse(normalizeJarvisUrl(widget.jarvisSettings.apiUrl));
final baseUri = Uri.parse(
normalizeJarvisUrl(widget.jarvisSettings.apiUrl),
);
final response = await http
.get(
baseUri.resolve('/api/workspace/state'),
@@ -847,7 +849,9 @@ class _HomeShellState extends State<HomeShell> {
setState(() => workspaceSyncing = true);
try {
final baseUri = Uri.parse(normalizeJarvisUrl(widget.jarvisSettings.apiUrl));
final baseUri = Uri.parse(
normalizeJarvisUrl(widget.jarvisSettings.apiUrl),
);
final stateJson = jsonEncode({
'version': 1,
'updatedAt': DateTime.now().toIso8601String(),
@@ -879,9 +883,9 @@ class _HomeShellState extends State<HomeShell> {
void _showWorkspaceMessage(String message) {
if (!mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(message)),
);
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text(message)));
}
Future<JarvisSettings> _registerJarvisDevice(
@@ -1133,6 +1137,15 @@ class _HomeShellState extends State<HomeShell> {
}
void _assignSyncedEventToPerson(CalendarEvent event, Person person) {
if (widget.googleConnections.isNotEmpty) {
final currentConnection = widget.googleConnections.first;
final nextEventPersonIds = {...currentConnection.eventPersonIds};
nextEventPersonIds[importedEventKey(event)] = person.id;
widget.onGoogleConnectionsChanged([
currentConnection.copyWith(eventPersonIds: nextEventPersonIds),
]);
}
final nextSyncedEvents = widget.syncedEvents
.map(
(item) => sameImportedEvent(item, event)