stripe-android
stripe-android copied to clipboard
Call refresh endpoint for cashapp
Summary
In order to give a better user experience, we call the refresh endpoint rather than poll.
This is especially useful when the user cancels out of the payment method.
Motivation
https://jira.corp.stripe.com/browse/MOBILESDK-2063
Testing
- [x] Added tests
- [ ] Modified tests
- [x] Manually verified
Diffuse output:
OLD: paymentsheet-example-release-master.apk (signature: V1, V2)
NEW: paymentsheet-example-release-pr.apk (signature: V1, V2)
│ compressed │ uncompressed
├───────────┬───────────┬──────────┼───────────┬───────────┬──────────
APK │ old │ new │ diff │ old │ new │ diff
──────────┼───────────┼───────────┼──────────┼───────────┼───────────┼──────────
dex │ 4 MiB │ 4 MiB │ +348 B │ 8.8 MiB │ 8.8 MiB │ +760 B
arsc │ 2.3 MiB │ 2.3 MiB │ 0 B │ 2.3 MiB │ 2.3 MiB │ 0 B
manifest │ 5.1 KiB │ 5.1 KiB │ 0 B │ 25.6 KiB │ 25.6 KiB │ 0 B
res │ 918.3 KiB │ 918.3 KiB │ 0 B │ 1.5 MiB │ 1.5 MiB │ 0 B
native │ 2.6 MiB │ 2.6 MiB │ 0 B │ 6 MiB │ 6 MiB │ 0 B
asset │ 2.9 MiB │ 2.9 MiB │ -1.4 KiB │ 2.9 MiB │ 2.9 MiB │ -1.4 KiB
other │ 195 KiB │ 195 KiB │ -9 B │ 428.4 KiB │ 428.4 KiB │ 0 B
──────────┼───────────┼───────────┼──────────┼───────────┼───────────┼──────────
total │ 12.9 MiB │ 12.9 MiB │ -1.1 KiB │ 21.9 MiB │ 21.9 MiB │ -666 B
DEX │ old │ new │ diff
─────────┼───────┼───────┼────────────────
files │ 1 │ 1 │ 0
strings │ 43755 │ 43759 │ +4 (+5 -1)
types │ 15067 │ 15068 │ +1 (+1 -0)
classes │ 12727 │ 12728 │ +1 (+1 -0)
methods │ 62285 │ 62288 │ +3 (+110 -107)
fields │ 41128 │ 41132 │ +4 (+73 -69)
ARSC │ old │ new │ diff
─────────┼──────┼──────┼──────
configs │ 242 │ 242 │ 0
entries │ 6045 │ 6045 │ 0
APK
compressed │ uncompressed │
──────────┬──────────┼───────────┬──────────┤
size │ diff │ size │ diff │ path
──────────┼──────────┼───────────┼──────────┼───────────────────────────────────────────
6 KiB │ -1.4 KiB │ 5.8 KiB │ -1.4 KiB │ ∆ assets/dexopt/baseline.prof
4 MiB │ +348 B │ 8.8 MiB │ +760 B │ ∆ classes.dex
52.9 KiB │ -5 B │ 117.2 KiB │ 0 B │ ∆ META-INF/CERT.SF
1.2 KiB │ -3 B │ 1.2 KiB │ 0 B │ ∆ META-INF/CERT.RSA
271 B │ -1 B │ 120 B │ 0 B │ ∆ META-INF/version-control-info.textproto
881 B │ -1 B │ 749 B │ -1 B │ ∆ assets/dexopt/baseline.profm
──────────┼──────────┼───────────┼──────────┼───────────────────────────────────────────
4.1 MiB │ -1.1 KiB │ 8.9 MiB │ -666 B │ (total)
DEX
STRINGS:
old │ new │ diff
───────┼───────┼────────────
43755 │ 43759 │ +4 (+5 -1)
+ Lt6/Y;
+ SetupIntentRefresh
+ setup_intent_refresh
+ setup_intents/%s/refresh
+ ~~R8{backend:dex,compilation-mode:release,has-checksums:false,min-api:21,pg-map-id:a18a63f,r8-mode:full,version:8.3.37}
- ~~R8{backend:dex,compilation-mode:release,has-checksums:false,min-api:21,pg-map-id:995f51f,r8-mode:full,version:8.3.37}
TYPES:
old │ new │ diff
───────┼───────┼────────────
15067 │ 15068 │ +1 (+1 -0)
+ Lt6/Y;
METHODS:
old │ new │ diff
───────┼───────┼────────────────
62285 │ 62288 │ +3 (+110 -107)
+ C6.d <init>(Y, c, f, P, e, j)
+ C6.x <init>(n, X, t, f, a, c0, j, M, j, o0, boolean)
+ F6.y <init>(boolean, X, f, a, g, Map, a, a, t, f, j, o0, boolean)
+ G6.j <init>(Context, Y, boolean, a, a)
+ I4.z <init>(X, m, x, t, f)
+ W5.C <init>(o, m, s, X, i0, u, c, o0, g, j)
+ W5.Z <init>(o, m, T, X, u, a0, o0)
+ X4.F0 <init>(Application, List, B, a, Resources, q, e, Y, Integer, x, j, a, E, H, G, f, e0, f)
+ Y5.b <init>(Y)
+ d6.k <init>(a, a, Y, a, j, Locale, f)
+ j2.d W(Y, String, m, e) → Object
+ m.L1 a() → X
+ o7.h <init>(Y, a, e, f, j, Set)
+ o7.o <init>(Y, a, j)
+ p8.H0 <init>(Application, String, X)
+ p8.r0 <init>(h, X, o0)
+ t6.A <init>(X, e)
+ t6.B <init>(X, e)
+ t6.C <init>(X, e)
+ t6.D <init>(X, e)
+ t6.E <init>(X, e)
+ t6.F <init>(X, e)
+ t6.G <init>(X, e)
+ t6.H <init>(X, e)
+ t6.I <init>(X, e)
+ t6.J <init>(X, e)
+ t6.K <init>(X, e)
+ t6.L <init>(X, e)
+ t6.M <init>(X, e)
+ t6.N <init>(X, e)
+ t6.O <init>(X, e)
+ t6.P <init>(X, e)
+ t6.Q <init>(X, e)
+ t6.S <init>(X, e)
+ t6.T <init>(X, e)
+ t6.U <init>(X, e)
+ t6.V <init>(X, e)
+ t6.W <init>(X, e)
+ t6.W i(Object) → Object
+ t6.X <clinit>()
+ t6.X <init>(Context, a, e, j, Set, c, f, Set, int)
+ t6.X <init>(Context, a, j, Set, f, c, e)
+ t6.X A(m, String, e) → Object
+ t6.X B(n, c, e) → Object
+ t6.X C(Map, y1, m2) → Map
+ t6.X D(n, m, e) → Object
+ t6.X E(String, m, e) → Object
+ t6.X F(String, m, e) → Object
+ t6.X G(m, Map, e) → Object
+ t6.X H(m, String, Set, e) → Object
+ t6.X I(p0, m, e) → Object
+ t6.X J(p0, m, e) → Object
+ t6.X K(String, m, List, e) → Object
+ t6.X L(String, m, List, e) → Object
+ t6.X M(String, m, List, e) → Object
+ t6.X N(m, String, String, e) → Object
+ t6.X O(q2, m, e) → Object
+ t6.X P(String, K1, m, e) → Object
+ t6.X a(X, Object) → String
+ t6.X b(String, String, String, m, List, e) → Object
+ t6.X c(String, String, String, m, List, e) → Object
+ t6.X d(String, Set, String, m, e) → Object
+ t6.X e(Set) → String
+ t6.X f(m, String, String, e) → Object
+ t6.X g(m, String, String, e) → Object
+ t6.X h(String, m, e) → Object
+ t6.X i(n, m, List, e) → Object
+ t6.X j(n, m, List, e) → Object
+ t6.X k(o, m, List, e) → Object
+ t6.X l(String, String, String, String, Locale, K, m, e) → Object
+ t6.X m(String, List) → LinkedHashMap
+ t6.X n(L, m, e) → Object
+ t6.X o(String, w, m, boolean, e) → Object
+ t6.X p(String, O, m, e) → Object
+ t6.X q(y1, m, e) → Object
+ t6.X r(String, O, m, e) → Object
+ t6.X s(m, String, Set, e) → Object
+ t6.X t(n, b, c, e) → Object
+ t6.X u(PaymentAnalyticsEvent)
+ t6.X v()
+ t6.X w(a, m, e) → Object
+ t6.X x(m, e) → Object
+ t6.X y(v0, Set, m, e) → Object
+ t6.X z(Y)
+ t6.g <init>(X, e)
+ t6.k <init>(X, e)
+ t6.m <init>(X, e)
+ t6.n <init>(X, e)
+ t6.o <init>(X, Set, int)
+ t6.p <init>(X, e)
+ t6.q <init>(X, int)
+ t6.r <init>(X, e)
+ t6.s <init>(X, e)
+ t6.t <init>(X, e)
+ t6.u <init>(X, e)
+ t6.v <init>(X, e)
+ t6.w <init>(X, e)
+ t6.x <init>(X, e)
+ t6.y <init>(X, e)
+ t6.z <init>(X, e)
+ t7.e <init>(X, g, f, x)
+ u6.i <init>(Context, b0, Y, e, j)
+ u6.i f(String, m, e) → Object
+ u6.m <init>(Context, a, Y, e, j)
+ u6.m f(String, m, e) → Object
+ u6.q <init>(Context, a, Y, e, j)
+ u6.q f(String, m, e) → Object
+ x6.c <init>(X)
+ x6.g <init>(X)
+ z4.i0 <init>(Context, T, X, boolean, j, int)
- C6.d <init>(X, c, f, P, e, j)
- C6.x <init>(n, W, t, f, a, c0, j, M, j, o0, boolean)
- F6.y <init>(boolean, W, f, a, g, Map, a, a, t, f, j, o0, boolean)
- G6.j <init>(Context, X, boolean, a, a)
- I4.z <init>(W, m, x, t, f)
- W5.C <init>(o, m, s, W, i0, u, c, o0,
...✂