mirror of
https://github.com/jonasbark/swiftcontrol.git
synced 2026-02-18 00:17:40 +01:00
restore button
This commit is contained in:
@@ -1,8 +1,3 @@
|
|||||||
### 4.3.0 (unreleased)
|
|
||||||
**Features**:
|
|
||||||
- media key support for Windows and macOS
|
|
||||||
- App is now available in Italian (thanks to Connect_Thanks2613)
|
|
||||||
|
|
||||||
### 4.2.0 (20-12-2025)
|
### 4.2.0 (20-12-2025)
|
||||||
|
|
||||||
BikeControl now offers a free trial period of 5 days for all features, so you can test everything before deciding to purchase a license. Please contact the support if you experience any issues!
|
BikeControl now offers a free trial period of 5 days for all features, so you can test everything before deciding to purchase a license. Please contact the support if you experience any issues!
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ import 'package:bike_control/bluetooth/devices/zwift/protocol/zp.pb.dart' as zp;
|
|||||||
import 'package:bike_control/bluetooth/messages/notification.dart';
|
import 'package:bike_control/bluetooth/messages/notification.dart';
|
||||||
import 'package:bike_control/main.dart';
|
import 'package:bike_control/main.dart';
|
||||||
import 'package:bike_control/utils/core.dart';
|
import 'package:bike_control/utils/core.dart';
|
||||||
import 'package:bike_control/widgets/ui/loading_widget.dart';
|
|
||||||
import 'package:bike_control/widgets/ui/small_progress_indicator.dart';
|
|
||||||
import 'package:bike_control/widgets/ui/toast.dart';
|
import 'package:bike_control/widgets/ui/toast.dart';
|
||||||
import 'package:dartx/dartx.dart';
|
import 'package:dartx/dartx.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
@@ -226,50 +224,19 @@ class RevenueCatService {
|
|||||||
Future<void> purchaseFullVersion(BuildContext context) async {
|
Future<void> purchaseFullVersion(BuildContext context) async {
|
||||||
// Direct the user to the paywall for a better experience
|
// Direct the user to the paywall for a better experience
|
||||||
if (Platform.isMacOS) {
|
if (Platform.isMacOS) {
|
||||||
showDropdown(
|
try {
|
||||||
context: context,
|
final offerings = await Purchases.getOfferings();
|
||||||
builder: (c) => DropdownMenu(
|
final purchaseParams = PurchaseParams.package(offerings.current!.availablePackages.first);
|
||||||
children: [
|
PurchaseResult result = await Purchases.purchase(purchaseParams);
|
||||||
MenuButton(
|
core.connection.signalNotification(
|
||||||
child: LoadingWidget(
|
LogNotification('Purchase result: $result'),
|
||||||
futureCallback: () async {
|
);
|
||||||
await restorePurchases();
|
} on PlatformException catch (e) {
|
||||||
closeOverlay(c);
|
var errorCode = PurchasesErrorHelper.getErrorCode(e);
|
||||||
},
|
if (errorCode != PurchasesErrorCode.purchaseCancelledError) {
|
||||||
renderChild: (isLoading, tap) => TextButton(
|
buildToast(context, title: e.message);
|
||||||
onPressed: tap,
|
}
|
||||||
child: isLoading ? SmallProgressIndicator() : const Text('Restore Purchase').small,
|
}
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
MenuButton(
|
|
||||||
child: LoadingWidget(
|
|
||||||
futureCallback: () async {
|
|
||||||
try {
|
|
||||||
final offerings = await Purchases.getOfferings();
|
|
||||||
final purchaseParams = PurchaseParams.package(offerings.current!.availablePackages.first);
|
|
||||||
PurchaseResult result = await Purchases.purchase(purchaseParams);
|
|
||||||
core.connection.signalNotification(
|
|
||||||
LogNotification('Purchase result: $result'),
|
|
||||||
);
|
|
||||||
closeOverlay(c);
|
|
||||||
} on PlatformException catch (e) {
|
|
||||||
var errorCode = PurchasesErrorHelper.getErrorCode(e);
|
|
||||||
if (errorCode != PurchasesErrorCode.purchaseCancelledError) {
|
|
||||||
buildToast(context, title: e.message);
|
|
||||||
}
|
|
||||||
closeOverlay(c);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
renderChild: (isLoading, tap) => TextButton(
|
|
||||||
onPressed: tap,
|
|
||||||
child: isLoading ? SmallProgressIndicator() : const Text('Purchase'),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
await presentPaywall();
|
await presentPaywall();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:bike_control/gen/l10n.dart';
|
|||||||
import 'package:bike_control/utils/core.dart';
|
import 'package:bike_control/utils/core.dart';
|
||||||
import 'package:bike_control/utils/i18n_extension.dart';
|
import 'package:bike_control/utils/i18n_extension.dart';
|
||||||
import 'package:bike_control/utils/iap/iap_manager.dart';
|
import 'package:bike_control/utils/iap/iap_manager.dart';
|
||||||
|
import 'package:bike_control/widgets/ui/loading_widget.dart';
|
||||||
import 'package:bike_control/widgets/ui/small_progress_indicator.dart';
|
import 'package:bike_control/widgets/ui/small_progress_indicator.dart';
|
||||||
import 'package:bike_control/widgets/ui/toast.dart';
|
import 'package:bike_control/widgets/ui/toast.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
@@ -416,6 +417,19 @@ class _IAPStatusWidgetState extends State<IAPStatusWidget> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
if (Platform.isMacOS)
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 42.0, top: 8.0, bottom: 8),
|
||||||
|
child: LoadingWidget(
|
||||||
|
futureCallback: () async {
|
||||||
|
await IAPManager.instance.restorePurchases();
|
||||||
|
},
|
||||||
|
renderChild: (isLoading, tap) => LinkButton(
|
||||||
|
onPressed: tap,
|
||||||
|
child: isLoading ? SmallProgressIndicator() : const Text('Restore Purchase').small,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 42.0, top: 8.0),
|
padding: const EdgeInsets.only(left: 42.0, top: 8.0),
|
||||||
child: Text(AppLocalizations.of(context).fullVersionDescription).xSmall,
|
child: Text(AppLocalizations.of(context).fullVersionDescription).xSmall,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
name: bike_control
|
name: bike_control
|
||||||
description: "BikeControl - Control your virtual riding"
|
description: "BikeControl - Control your virtual riding"
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
version: 4.3.0+71
|
version: 4.2.4+71
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.0
|
||||||
|
|||||||
Reference in New Issue
Block a user