From 136d78fff9169b9e856193c5be0e490411db4bc3 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 20 Apr 2020 15:52:06 -0500 Subject: [PATCH] Force widget to recreate task rows --- .../java/org/tasks/widget/TasksWidget.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/tasks/widget/TasksWidget.java b/app/src/main/java/org/tasks/widget/TasksWidget.java index e2153ea5e..9108a1ff5 100644 --- a/app/src/main/java/org/tasks/widget/TasksWidget.java +++ b/app/src/main/java/org/tasks/widget/TasksWidget.java @@ -6,7 +6,6 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; @@ -47,25 +46,18 @@ public class TasksWidget extends InjectingAppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { - try { - super.onUpdate(context, appWidgetManager, appWidgetIds); - - ComponentName thisWidget = new ComponentName(context, TasksWidget.class); - int[] ids = appWidgetManager.getAppWidgetIds(thisWidget); - for (int id : ids) { + for (int id : appWidgetIds) { + try { appWidgetManager.updateAppWidget(id, createScrollableWidget(context, id)); + } catch (Exception e) { + Timber.e(e); } - } catch (Exception e) { - Timber.e(e); } } private RemoteViews createScrollableWidget(Context context, int id) { WidgetPreferences widgetPreferences = new WidgetPreferences(context, preferences, id); String filterId = widgetPreferences.getFilterId(); - Intent rvIntent = new Intent(context, ScrollableWidgetUpdateService.class); - rvIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); - rvIntent.setData(Uri.parse(rvIntent.toUri(Intent.URI_INTENT_SCHEME))); ThemeColor color = new ThemeColor(context, widgetPreferences.getColor()); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.scrollable_widget); remoteViews.setInt(R.id.widget, "setLayoutDirection", locale.getDirectionality()); @@ -104,7 +96,14 @@ public class TasksWidget extends InjectingAppWidgetProvider { Filter filter = defaultFilterProvider.getFilterFromPreference(filterId); remoteViews.setTextViewText(R.id.widget_title, filter.listingTitle); - remoteViews.setRemoteAdapter(R.id.list_view, rvIntent); + + Uri cacheBuster = Uri.parse("tasks://widget/" + System.currentTimeMillis()); + remoteViews.setRemoteAdapter( + R.id.list_view, + new Intent(context, ScrollableWidgetUpdateService.class) + .putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id) + .setData(cacheBuster)); + setRipple( remoteViews, color, R.id.widget_button, R.id.widget_change_list, R.id.widget_reconfigure); remoteViews.setOnClickPendingIntent(R.id.widget_title, getOpenListIntent(context, filter, id));