From 3bec73e074cdf8725182a8ad2eae8c864b5ccaa3 Mon Sep 17 00:00:00 2001 From: Peter Storch Date: Sun, 19 Apr 2026 09:31:56 +0200 Subject: [PATCH] fix #2317 dashboard API updates --- .../data/CustomContentProvider.java | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java b/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java index 151d8b356..f8c0ad279 100644 --- a/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java +++ b/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java @@ -153,7 +153,7 @@ public class CustomContentProvider extends ContentProvider { } finally { db.endTransaction(); } - getContext().getContentResolver().notifyChange(url, null, false); + notifyChanges(url); int totalChanges = getTotalChanges() - totalChangesBefore; Log.i(TAG, "Deleted " + totalChanges + " total rows from database"); @@ -212,7 +212,8 @@ public class CustomContentProvider extends ContentProvider { } finally { db.endTransaction(); } - getContext().getContentResolver().notifyChange(url, null, false); + notifyChanges(url); + return result; } @@ -235,7 +236,8 @@ public class CustomContentProvider extends ContentProvider { } finally { db.endTransaction(); } - getContext().getContentResolver().notifyChange(url, null, false); + notifyChanges(url); + return numInserted; } @@ -348,10 +350,36 @@ public class CustomContentProvider extends ContentProvider { } } - getContext().getContentResolver().notifyChange(url, null, false); + notifyChanges(url); + return count; } + private void notifyChanges(@NonNull Uri uri) { + getContext().getContentResolver().notifyChange(uri, null, false); + // Also notify dashboard URIs for compatibility + Uri dashboardUri = getDashboardUri(uri); + if (dashboardUri != null) { + getContext().getContentResolver().notifyChange(dashboardUri, null, false); + } + } + + private Uri getDashboardUri(Uri uri) { + String path = uri.getPath(); + if (path == null) return null; + String dashboardPath; + if (path.startsWith("/tracks")) { + dashboardPath = path.replaceFirst("/tracks", "/dashboard/tracks"); + } else if (path.startsWith("/markers")) { + dashboardPath = path.replaceFirst("/markers", "/dashboard/markers"); + } else if (path.startsWith("/trackpoints")) { + dashboardPath = path.replaceFirst("/trackpoints", "/dashboard/trackpoints"); + } else { + return null; + } + return Uri.parse(CONTENT_BASE_URI + dashboardPath); + } + @NonNull private UrlType getUrlType(Uri url) { UrlType[] urlTypes = UrlType.values();