Skip to content

Commit 436523c

Browse files
committed
make refresh icon invisible right after click
1 parent aa2fc98 commit 436523c

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

app/src/main/java/com/github/kdejaeger/valuefromjsonwidget/FetchDataWorker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private String fetchData(String urlString) {
7474
private String parseJson(String response, String jsonKey) {
7575
try {
7676
JSONObject jsonObject = new JSONObject(response);
77-
return jsonObject.optString(jsonKey, "No data");
77+
return jsonObject.optString(jsonKey, "?");
7878
} catch (Exception e) {
7979
Log.e(TAG, "Error parsing JSON", e);
8080
return "Error";

app/src/main/java/com/github/kdejaeger/valuefromjsonwidget/ValueFromJsonWidget.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
import android.content.ComponentName;
1414
import android.content.Context;
1515
import android.content.Intent;
16-
import android.content.SharedPreferences;
1716
import android.net.Uri;
17+
import android.view.View;
1818
import android.widget.RemoteViews;
1919

2020
import androidx.work.ExistingPeriodicWorkPolicy;
@@ -47,7 +47,7 @@ public void onDisabled(Context context) {
4747
@Override
4848
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
4949
for (int appWidgetId : appWidgetIds) {
50-
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
50+
var views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
5151

5252
// Load the last known value from SharedPreferences
5353
var prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
@@ -64,6 +64,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a
6464
refreshIntent.setAction(ACTION_REFRESH);
6565
var refreshPendingIntent = PendingIntent.getBroadcast(context, 0, refreshIntent, FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE);
6666
views.setOnClickPendingIntent(R.id.refresh_icon, refreshPendingIntent);
67+
views.setViewVisibility(R.id.refresh_icon, View.VISIBLE);
6768

6869
// Set up text click to open browser
6970
var clickUrlString = prefs.getString("clickUrl", "https://app.airgradient.com");
@@ -79,6 +80,13 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a
7980
public void onReceive(Context context, Intent intent) {
8081
super.onReceive(context, intent);
8182
if (ACTION_REFRESH.equals(intent.getAction())) {
83+
var views = new RemoteViews(context.getPackageName(), com.github.kdejaeger.valuefromjsonwidget.R.layout.widget_layout);
84+
views.setViewVisibility(R.id.refresh_icon, View.INVISIBLE);
85+
86+
var appWidgetManager = AppWidgetManager.getInstance(context);
87+
var widget = new ComponentName(context, ValueFromJsonWidget.class);
88+
appWidgetManager.updateAppWidget(widget, views);
89+
8290
// Manual refresh: trigger a one-time work request to fetch new data
8391
var workRequest = new OneTimeWorkRequest.Builder(FetchDataWorker.class).build();
8492
WorkManager.getInstance(context).enqueue(workRequest);
@@ -88,9 +96,10 @@ public void onReceive(Context context, Intent intent) {
8896
public static void updateWidget(Context context, String value) {
8997
var prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
9098

91-
RemoteViews views = new RemoteViews(context.getPackageName(), com.github.kdejaeger.valuefromjsonwidget.R.layout.widget_layout);
99+
var views = new RemoteViews(context.getPackageName(), com.github.kdejaeger.valuefromjsonwidget.R.layout.widget_layout);
92100
views.setTextViewText(R.id.widget_text_small, prefs.getString("json_key", "pm02"));
93101
views.setTextViewText(R.id.widget_text, value);
102+
views.setViewVisibility(R.id.refresh_icon, View.VISIBLE);
94103

95104
// Reapply the click listeners:
96105
var refreshIntent = new Intent(context, ValueFromJsonWidget.class);
@@ -104,7 +113,7 @@ public static void updateWidget(Context context, String value) {
104113
views.setOnClickPendingIntent(R.id.widget_text, browserPendingIntent);
105114

106115
var appWidgetManager = AppWidgetManager.getInstance(context);
107-
ComponentName widget = new ComponentName(context, ValueFromJsonWidget.class);
116+
var widget = new ComponentName(context, ValueFromJsonWidget.class);
108117
appWidgetManager.updateAppWidget(widget, views);
109118
}
110119

0 commit comments

Comments
 (0)