diff --git a/android/app/src/main/java/com/remotedisplay/player/MainActivity.kt b/android/app/src/main/java/com/remotedisplay/player/MainActivity.kt index 88f5b88..e4bacdf 100644 --- a/android/app/src/main/java/com/remotedisplay/player/MainActivity.kt +++ b/android/app/src/main/java/com/remotedisplay/player/MainActivity.kt @@ -591,9 +591,12 @@ class MainActivity : AppCompatActivity() { val currentLayoutId = zoneManager?.currentLayoutId // Build a signature of current assignments to detect content changes + // widget_rev belongs in here for the same reason it is in the fullscreen playlist + // signature: editing a widget changes its CONTENT, never its id, so without it a + // zone assignment looked identical and the re-render was skipped as "unchanged". val assignmentSig = (0 until assignments.length()).map { i -> val a = assignments.getJSONObject(i) - "${a.optString("content_id")}:${a.optString("zone_id")}:${a.optString("widget_id")}" + "${a.optString("content_id")}:${a.optString("zone_id")}:${a.optString("widget_id")}:${a.optLong("widget_rev", 0L)}" }.sorted().joinToString("|") val changed = assignmentSig != zoneManager?.lastAssignmentSig diff --git a/android/app/src/main/java/com/remotedisplay/player/player/ZoneManager.kt b/android/app/src/main/java/com/remotedisplay/player/player/ZoneManager.kt index b2a8a96..a1c5e05 100644 --- a/android/app/src/main/java/com/remotedisplay/player/player/ZoneManager.kt +++ b/android/app/src/main/java/com/remotedisplay/player/player/ZoneManager.kt @@ -210,8 +210,12 @@ class ZoneManager( widgetType != null -> { val widgetId = a.optString("widget_id", "") val webView = createWebView() + // rev, exactly as the fullscreen path does: a widget's id does not change when it + // is edited, so without it a zone kept rendering the old content indefinitely. + val wRev = a.optLong("widget_rev", 0L) val wUrl = "$renderServerUrl/api/widgets/$widgetId/render" + - (if (renderDeviceId.isNotEmpty()) "?device=" + android.net.Uri.encode(renderDeviceId) else "") + (if (renderDeviceId.isNotEmpty()) "?device=" + android.net.Uri.encode(renderDeviceId) else "?d=") + + "&rev=" + wRev webView.loadUrl(wUrl) webView.layoutParams = params container.addView(webView); zoneViews[zone.id] = webView