Skip to content

Commit 98d91b3

Browse files
committed
Swipe down to refresh wallet
1 parent 4cd74b1 commit 98d91b3

File tree

2 files changed

+305
-240
lines changed

2 files changed

+305
-240
lines changed

app/src/main/java/io/scalaproject/vault/WalletFragment.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@
2222
package io.scalaproject.vault;
2323

2424
import android.content.Context;
25+
import android.os.AsyncTask;
2526
import android.os.Bundle;
2627
import android.os.Handler;
2728
import android.os.Looper;
2829
import androidx.annotation.Nullable;
2930
import androidx.fragment.app.Fragment;
3031
import androidx.recyclerview.widget.RecyclerView;
32+
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
33+
3134
import android.view.LayoutInflater;
3235
import android.view.Menu;
3336
import android.view.MenuInflater;
@@ -49,6 +52,7 @@
4952
import io.scalaproject.vault.layout.TransactionInfoAdapter;
5053
import io.scalaproject.vault.model.TransactionInfo;
5154
import io.scalaproject.vault.model.Wallet;
55+
import io.scalaproject.vault.model.WalletManager;
5256
import io.scalaproject.vault.service.exchange.api.ExchangeApi;
5357
import io.scalaproject.vault.service.exchange.api.ExchangeCallback;
5458
import io.scalaproject.vault.service.exchange.api.ExchangeRate;
@@ -78,6 +82,8 @@ public class WalletFragment extends Fragment
7882
private LinearLayout llNoTransaction;
7983
private RecyclerView rvTransactions;
8084

85+
private SwipeRefreshLayout pullToRefresh;
86+
8187
private Spinner sCurrency;
8288

8389
private List<String> dismissedTransactions = new ArrayList<>();
@@ -144,6 +150,14 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
144150
bSend = view.findViewById(R.id.bSend);
145151
bReceive = view.findViewById(R.id.bReceive);
146152

153+
pullToRefresh = view.findViewById(R.id.pullToRefresh);
154+
pullToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
155+
@Override
156+
public void onRefresh() {
157+
refresh();
158+
}
159+
});
160+
147161
txInfoAdapter = new TransactionInfoAdapter(getActivity(), this, this);
148162
rvTransactions.setAdapter(txInfoAdapter);
149163

@@ -215,6 +229,47 @@ public void onNothingSelected(AdapterView<?> parentView) {
215229
return view;
216230
}
217231

232+
private AsyncRefreshWallet asyncRefreshWallet = null;
233+
234+
private void refresh() {
235+
if (asyncRefreshWallet != null) return; // ignore refresh request as one is ongoing
236+
237+
asyncRefreshWallet = new AsyncRefreshWallet();
238+
asyncRefreshWallet.execute();
239+
}
240+
241+
private class AsyncRefreshWallet extends AsyncTask<Void, WalletManager.WalletInfo, Boolean> {
242+
@Override
243+
protected void onPreExecute() {
244+
super.onPreExecute();
245+
}
246+
247+
@Override
248+
protected Boolean doInBackground(Void... params) {
249+
Timber.d("refreshing");
250+
activityCallback.forceUpdate();
251+
252+
return true;
253+
}
254+
255+
@Override
256+
protected void onPostExecute(Boolean result) {
257+
Timber.d("done scanning");
258+
complete();
259+
}
260+
261+
@Override
262+
protected void onCancelled(Boolean result) {
263+
Timber.d("cancelled scanning");
264+
complete();
265+
}
266+
267+
private void complete() {
268+
asyncRefreshWallet = null;
269+
pullToRefresh.setRefreshing(false);
270+
}
271+
}
272+
218273
void showBalance(String balance) {
219274
tvBalance.setText(balance);
220275
if (!activityCallback.isStealthMode()) {

0 commit comments

Comments
 (0)