Skip to content

Commit bd274ae

Browse files
committed
Correct misaligned steps 10 and 11
1 parent 1281670 commit bd274ae

File tree

103 files changed

+297
-297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+297
-297
lines changed

in_app_purchases/codelab_rebuild.yaml

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17486,15 +17486,15 @@ steps:
1748617486
from: steps
1748717487
to: step_08
1748817488

17489-
- name: step_09
17489+
- name: step_10
1749017490
steps:
17491-
- name: Remove step_09
17492-
rmdir: step_09
17491+
- name: Remove step_10
17492+
rmdir: step_10
1749317493
- name: Patch app/lib/main.dart
1749417494
path: steps/app/lib/main.dart
1749517495
patch-u: |
17496-
--- b/in_app_purchases/step_09/app/lib/main.dart
17497-
+++ a/in_app_purchases/step_09/app/lib/main.dart
17496+
--- b/in_app_purchases/step_10/app/lib/main.dart
17497+
+++ a/in_app_purchases/step_10/app/lib/main.dart
1749817498
@@ -79,7 +79,11 @@ class _MyHomePageState extends State<MyHomePage> {
1749917499
create: (context) => IAPRepo(context.read<FirebaseNotifier>()),
1750017500
),
@@ -17511,8 +17511,8 @@ steps:
1751117511
- name: Patch app/lib/logic/dash_purchases.dart
1751217512
path: steps/app/lib/logic/dash_purchases.dart
1751317513
patch-u: |
17514-
--- b/in_app_purchases/step_09/app/lib/logic/dash_purchases.dart
17515-
+++ a/in_app_purchases/step_09/app/lib/logic/dash_purchases.dart
17514+
--- b/in_app_purchases/step_10/app/lib/logic/dash_purchases.dart
17515+
+++ a/in_app_purchases/step_10/app/lib/logic/dash_purchases.dart
1751617516
@@ -1,7 +1,9 @@
1751717517
import 'dart:async';
1751817518
+import 'dart:convert';
@@ -17605,8 +17605,8 @@ steps:
1760517605
- name: Patch app/lib/logic/firebase_notifier.dart
1760617606
path: steps/app/lib/logic/firebase_notifier.dart
1760717607
patch-u: |
17608-
--- b/in_app_purchases/step_09/app/lib/logic/firebase_notifier.dart
17609-
+++ a/in_app_purchases/step_09/app/lib/logic/firebase_notifier.dart
17608+
--- b/in_app_purchases/step_10/app/lib/logic/firebase_notifier.dart
17609+
+++ a/in_app_purchases/step_10/app/lib/logic/firebase_notifier.dart
1761017610
@@ -29,6 +29,8 @@ class FirebaseNotifier extends ChangeNotifier {
1761117611
return FirebaseFirestore.instance;
1761217612
}
@@ -17619,8 +17619,8 @@ steps:
1761917619
- name: Patch app/lib/pages/purchase_page.dart
1762017620
path: steps/app/lib/pages/purchase_page.dart
1762117621
patch-u: |
17622-
--- b/in_app_purchases/step_09/app/lib/pages/purchase_page.dart
17623-
+++ a/in_app_purchases/step_09/app/lib/pages/purchase_page.dart
17622+
--- b/in_app_purchases/step_10/app/lib/pages/purchase_page.dart
17623+
+++ a/in_app_purchases/step_10/app/lib/pages/purchase_page.dart
1762417624
@@ -2,15 +2,29 @@ import 'package:flutter/material.dart';
1762517625
import 'package:provider/provider.dart';
1762617626

@@ -17654,8 +17654,8 @@ steps:
1765417654
- name: Patch dart-backend/bin/server.dart
1765517655
path: steps/dart-backend/bin/server.dart
1765617656
patch-u: |
17657-
--- b/in_app_purchases/step_09/dart-backend/bin/server.dart
17658-
+++ a/in_app_purchases/step_09/dart-backend/bin/server.dart
17657+
--- b/in_app_purchases/step_10/dart-backend/bin/server.dart
17658+
+++ a/in_app_purchases/step_10/dart-backend/bin/server.dart
1765917659
@@ -2,12 +2,111 @@
1766017660
// for details. All rights reserved. Use of this source code is governed by a
1766117661
// BSD-style license that can be found in the LICENSE file.
@@ -18099,20 +18099,20 @@ steps:
1809918099
required String token,
1810018100
});
1810118101
}
18102-
- name: Copy to step_09
18102+
- name: Copy to step_10
1810318103
copydir:
1810418104
from: steps
18105-
to: step_09
18105+
to: step_10
1810618106

18107-
- name: step_10
18107+
- name: step_11
1810818108
steps:
18109-
- name: Remove step_10
18110-
rmdir: step_10
18109+
- name: Remove step_11
18110+
rmdir: step_11
1811118111
- name: Patch app/lib/main.dart
1811218112
path: steps/app/lib/main.dart
1811318113
patch-u: |
18114-
--- b/in_app_purchases/step_10/app/lib/main.dart
18115-
+++ a/in_app_purchases/step_10/app/lib/main.dart
18114+
--- b/in_app_purchases/step_11/app/lib/main.dart
18115+
+++ a/in_app_purchases/step_11/app/lib/main.dart
1811618116
@@ -83,6 +83,7 @@ class _MyHomePageState extends State<MyHomePage> {
1811718117
(context) => DashPurchases(
1811818118
context.read<DashCounter>(),
@@ -18124,8 +18124,8 @@ steps:
1812418124
- name: Patch app/lib/logic/dash_purchases.dart
1812518125
path: steps/app/lib/logic/dash_purchases.dart
1812618126
patch-u: |
18127-
--- b/in_app_purchases/step_10/app/lib/logic/dash_purchases.dart
18128-
+++ a/in_app_purchases/step_10/app/lib/logic/dash_purchases.dart
18127+
--- b/in_app_purchases/step_11/app/lib/logic/dash_purchases.dart
18128+
+++ a/in_app_purchases/step_11/app/lib/logic/dash_purchases.dart
1812918129
@@ -10,6 +10,7 @@ import '../constants.dart';
1813018130
import '../main.dart';
1813118131
import '../model/purchasable_product.dart';
@@ -18228,8 +18228,8 @@ steps:
1822818228
- name: Patch dart-backend/bin/server.dart
1822918229
path: steps/dart-backend/bin/server.dart
1823018230
patch-u: |
18231-
--- b/in_app_purchases/step_10/dart-backend/bin/server.dart
18232-
+++ a/in_app_purchases/step_10/dart-backend/bin/server.dart
18231+
--- b/in_app_purchases/step_11/dart-backend/bin/server.dart
18232+
+++ a/in_app_purchases/step_11/dart-backend/bin/server.dart
1823318233
@@ -5,7 +5,9 @@
1823418234
import 'dart:convert';
1823518235
import 'dart:io';
@@ -18315,8 +18315,8 @@ steps:
1831518315
- name: Patch dart-backend/lib/app_store_purchase_handler.dart
1831618316
path: steps/dart-backend/lib/app_store_purchase_handler.dart
1831718317
patch-u: |
18318-
--- b/in_app_purchases/step_10/dart-backend/lib/app_store_purchase_handler.dart
18319-
+++ a/in_app_purchases/step_10/dart-backend/lib/app_store_purchase_handler.dart
18318+
--- b/in_app_purchases/step_11/dart-backend/lib/app_store_purchase_handler.dart
18319+
+++ a/in_app_purchases/step_11/dart-backend/lib/app_store_purchase_handler.dart
1832018320
@@ -7,10 +7,19 @@ import 'iap_repository.dart';
1832118321
import 'products.dart';
1832218322
import 'purchase_handler.dart';
@@ -18395,8 +18395,8 @@ steps:
1839518395
- name: Patch dart-backend/lib/google_play_purchase_handler.dart
1839618396
path: steps/dart-backend/lib/google_play_purchase_handler.dart
1839718397
patch-u: |
18398-
--- b/in_app_purchases/step_10/dart-backend/lib/google_play_purchase_handler.dart
18399-
+++ a/in_app_purchases/step_10/dart-backend/lib/google_play_purchase_handler.dart
18398+
--- b/in_app_purchases/step_11/dart-backend/lib/google_play_purchase_handler.dart
18399+
+++ a/in_app_purchases/step_11/dart-backend/lib/google_play_purchase_handler.dart
1840018400
@@ -1,6 +1,8 @@
1840118401
import 'dart:async';
1840218402
+import 'dart:convert';
@@ -18512,10 +18512,10 @@ steps:
1851218512
}
1851318513

1851418514
NonSubscriptionStatus _nonSubscriptionStatusFrom(int? state) {
18515-
- name: Copy to step_10
18515+
- name: Copy to step_11
1851618516
copydir:
1851718517
from: steps
18518-
to: step_10
18518+
to: step_11
1851918519

1852018520
- name: complete
1852118521
steps:

in_app_purchases/step_10/app/lib/logic/dash_purchases.dart

Lines changed: 2 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import '../constants.dart';
1010
import '../main.dart';
1111
import '../model/purchasable_product.dart';
1212
import '../model/store_state.dart';
13-
import '../repo/iap_repo.dart';
1413
import 'dash_counter.dart';
1514
import 'firebase_notifier.dart';
1615

@@ -20,20 +19,19 @@ class DashPurchases extends ChangeNotifier {
2019
StoreState storeState = StoreState.loading;
2120
late StreamSubscription<List<PurchaseDetails>> _subscription;
2221
List<PurchasableProduct> products = [];
23-
IAPRepo iapRepo;
2422

2523
bool get beautifiedDash => _beautifiedDashUpgrade;
2624
bool _beautifiedDashUpgrade = false;
25+
2726
final iapConnection = IAPConnection.instance;
2827

29-
DashPurchases(this.counter, this.firebaseNotifier, this.iapRepo) {
28+
DashPurchases(this.counter, this.firebaseNotifier) {
3029
final purchaseUpdated = iapConnection.purchaseStream;
3130
_subscription = purchaseUpdated.listen(
3231
_onPurchaseUpdate,
3332
onDone: _updateStreamOnDone,
3433
onError: _updateStreamOnError,
3534
);
36-
iapRepo.addListener(purchasesUpdate);
3735
loadPurchases();
3836
}
3937

@@ -59,7 +57,6 @@ class DashPurchases extends ChangeNotifier {
5957
@override
6058
void dispose() {
6159
_subscription.cancel();
62-
iapRepo.removeListener(purchasesUpdate);
6360
super.dispose();
6461
}
6562

@@ -142,59 +139,4 @@ class DashPurchases extends ChangeNotifier {
142139
void _updateStreamOnError(dynamic error) {
143140
//Handle error here
144141
}
145-
146-
void purchasesUpdate() {
147-
var subscriptions = <PurchasableProduct>[];
148-
var upgrades = <PurchasableProduct>[];
149-
// Get a list of purchasable products for the subscription and upgrade.
150-
// This should be 1 per type.
151-
if (products.isNotEmpty) {
152-
subscriptions =
153-
products
154-
.where(
155-
(element) => element.productDetails.id == storeKeySubscription,
156-
)
157-
.toList();
158-
upgrades =
159-
products
160-
.where((element) => element.productDetails.id == storeKeyUpgrade)
161-
.toList();
162-
}
163-
164-
// Set the subscription in the counter logic and show/hide purchased on the
165-
// purchases page.
166-
if (iapRepo.hasActiveSubscription) {
167-
counter.applyPaidMultiplier();
168-
for (var element in subscriptions) {
169-
_updateStatus(element, ProductStatus.purchased);
170-
}
171-
} else {
172-
counter.removePaidMultiplier();
173-
for (var element in subscriptions) {
174-
_updateStatus(element, ProductStatus.purchasable);
175-
}
176-
}
177-
178-
// Set the Dash beautifier and show/hide purchased on
179-
// the purchases page.
180-
if (iapRepo.hasUpgrade != _beautifiedDashUpgrade) {
181-
_beautifiedDashUpgrade = iapRepo.hasUpgrade;
182-
for (var element in upgrades) {
183-
_updateStatus(
184-
element,
185-
_beautifiedDashUpgrade
186-
? ProductStatus.purchased
187-
: ProductStatus.purchasable,
188-
);
189-
}
190-
notifyListeners();
191-
}
192-
}
193-
194-
void _updateStatus(PurchasableProduct product, ProductStatus status) {
195-
if (product.status != ProductStatus.purchased) {
196-
product.status = ProductStatus.purchased;
197-
notifyListeners();
198-
}
199-
}
200142
}

in_app_purchases/step_10/app/lib/main.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ class _MyHomePageState extends State<MyHomePage> {
8383
(context) => DashPurchases(
8484
context.read<DashCounter>(),
8585
context.read<FirebaseNotifier>(),
86-
context.read<IAPRepo>(),
8786
),
8887
lazy: false,
8988
),

in_app_purchases/step_10/dart-backend/bin/server.dart

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,14 @@
55
import 'dart:convert';
66
import 'dart:io';
77

8-
import 'package:app_store_server_sdk/app_store_server_sdk.dart';
98
import 'package:firebase_backend_dart/app_store_purchase_handler.dart';
10-
import 'package:firebase_backend_dart/constants.dart';
119
import 'package:firebase_backend_dart/google_play_purchase_handler.dart';
1210
import 'package:firebase_backend_dart/helpers.dart';
1311
import 'package:firebase_backend_dart/iap_repository.dart';
1412
import 'package:firebase_backend_dart/products.dart';
1513
import 'package:firebase_backend_dart/purchase_handler.dart';
1614
import 'package:googleapis/androidpublisher/v3.dart' as ap;
1715
import 'package:googleapis/firestore/v1.dart' as fs;
18-
import 'package:googleapis/pubsub/v1.dart' as pubsub;
1916
import 'package:googleapis_auth/auth_io.dart' as auth;
2017
import 'package:shelf/shelf.dart';
2118
import 'package:shelf_router/shelf_router.dart';
@@ -29,16 +26,12 @@ Future<Map<String, PurchaseHandler>> _createPurchaseHandlers() async {
2926
final clientCredentialsGooglePlay = auth.ServiceAccountCredentials.fromJson(
3027
serviceAccountGooglePlay,
3128
);
32-
final clientGooglePlay = await auth
33-
.clientViaServiceAccount(clientCredentialsGooglePlay, [
34-
ap.AndroidPublisherApi.androidpublisherScope,
35-
pubsub.PubsubApi.cloudPlatformScope,
36-
]);
29+
final clientGooglePlay = await auth.clientViaServiceAccount(
30+
clientCredentialsGooglePlay,
31+
[ap.AndroidPublisherApi.androidpublisherScope],
32+
);
3733
final androidPublisher = ap.AndroidPublisherApi(clientGooglePlay);
3834

39-
// Pub/Sub API to receive on purchase events from Google Play
40-
final pubsubApi = pubsub.PubsubApi(clientGooglePlay);
41-
4235
// Configure Firestore API access
4336
final serviceAccountFirebase =
4437
File('assets/service-account-firebase.json').readAsStringSync();
@@ -54,41 +47,9 @@ Future<Map<String, PurchaseHandler>> _createPurchaseHandlers() async {
5447
final projectId = json['project_id'] as String;
5548
final iapRepository = IapRepository(firestoreApi, projectId);
5649

57-
final subscriptionKeyAppStore =
58-
File('assets/SubscriptionKey.p8').readAsStringSync();
59-
60-
// Configure Apple Store API access
61-
var appStoreEnvironment = AppStoreEnvironment.sandbox(
62-
bundleId: bundleId,
63-
issuerId: appStoreIssuerId,
64-
keyId: appStoreKeyId,
65-
privateKey: subscriptionKeyAppStore,
66-
);
67-
68-
// Stored token for Apple Store API access, if available
69-
final file = File('assets/appstore.token');
70-
String? appStoreToken;
71-
if (file.existsSync() && file.lengthSync() > 0) {
72-
appStoreToken = file.readAsStringSync();
73-
}
74-
75-
final appStoreServerAPI = AppStoreServerAPI(
76-
AppStoreServerHttpClient(
77-
appStoreEnvironment,
78-
jwt: appStoreToken,
79-
jwtTokenUpdatedCallback: (token) {
80-
file.writeAsStringSync(token);
81-
},
82-
),
83-
);
84-
8550
return {
86-
'google_play': GooglePlayPurchaseHandler(
87-
androidPublisher,
88-
iapRepository,
89-
pubsubApi,
90-
),
91-
'app_store': AppStorePurchaseHandler(iapRepository, appStoreServerAPI),
51+
'google_play': GooglePlayPurchaseHandler(androidPublisher, iapRepository),
52+
'app_store': AppStorePurchaseHandler(iapRepository),
9253
};
9354
}
9455

0 commit comments

Comments
 (0)