fixes from testing

pull/795/head
ggurdin 2 years ago
parent 46ff2f3d4c
commit 03de12e3b9

@ -93,11 +93,10 @@ class SubscriptionController extends BaseController {
final String profileCreatedAt = final String profileCreatedAt =
_pangeaController.userController.userModel!.profile!.createdAt; _pangeaController.userController.userModel!.profile!.createdAt;
final DateTime creationTimestamp = DateTime.parse(profileCreatedAt); final DateTime creationTimestamp = DateTime.parse(profileCreatedAt);
final int daysRemaining = DateTime.now() final DateTime expirationDate = creationTimestamp.add(
.add(const Duration(days: 7)) const Duration(days: 7),
.difference(creationTimestamp) );
.inDays; subscription?.setTrial(expirationDate);
subscription?.setTrial(daysRemaining);
} }
Future<void> updateCustomerInfo() async { Future<void> updateCustomerInfo() async {

@ -75,9 +75,9 @@ class SubscriptionInfo {
currentSubscriptionId = null; currentSubscriptionId = null;
} }
void setTrial(int daysRemaining) { void setTrial(DateTime expiration) {
if (currentSubscription != null) return; if (currentSubscription != null) return;
expirationDate = DateTime.now().add(Duration(days: daysRemaining)); expirationDate = expiration;
currentSubscriptionId = AppConfig.trialSubscriptionId; currentSubscriptionId = AppConfig.trialSubscriptionId;
currentSubscription = SubscriptionDetails( currentSubscription = SubscriptionDetails(
price: 0, price: 0,

@ -1,19 +1,17 @@
// Dart imports: // Dart imports:
import 'dart:io'; import 'dart:io';
// Flutter imports:
import 'package:flutter/material.dart';
// Package imports: // Package imports:
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
// Project imports: // Project imports:
import 'package:fluffychat/pangea/config/environment.dart'; import 'package:fluffychat/pangea/config/environment.dart';
import 'package:fluffychat/pangea/controllers/subscription_controller.dart'; import 'package:fluffychat/pangea/controllers/subscription_controller.dart';
import 'package:fluffychat/pangea/models/base_subscription_info.dart'; import 'package:fluffychat/pangea/models/base_subscription_info.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart';
// Flutter imports:
import 'package:flutter/material.dart';
import 'package:purchases_flutter/purchases_flutter.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
class MobileSubscriptionInfo extends SubscriptionInfo { class MobileSubscriptionInfo extends SubscriptionInfo {
MobileSubscriptionInfo({required super.pangeaController}) : super(); MobileSubscriptionInfo({required super.pangeaController}) : super();
@ -161,17 +159,22 @@ class MobileSubscriptionInfo extends SubscriptionInfo {
); );
} }
final List<EntitlementInfo> activeEntitlements = info final List<EntitlementInfo> activeEntitlements =
.entitlements.all.entries info.entitlements.all.entries
.where((MapEntry<String, EntitlementInfo> entry) => .where(
(MapEntry<String, EntitlementInfo> entry) =>
entry.value.expirationDate == null || entry.value.expirationDate == null ||
DateTime.parse(entry.value.expirationDate!).isAfter(DateTime.now())) DateTime.parse(entry.value.expirationDate!)
.isAfter(DateTime.now()),
)
.map((MapEntry<String, EntitlementInfo> entry) => entry.value) .map((MapEntry<String, EntitlementInfo> entry) => entry.value)
.toList(); .toList();
allEntitlements = info.entitlements.all.entries allEntitlements = info.entitlements.all.entries
.map((MapEntry<String, EntitlementInfo> entry) => .map(
entry.value.productIdentifier) (MapEntry<String, EntitlementInfo> entry) =>
entry.value.productIdentifier,
)
.cast<String>() .cast<String>()
.toList(); .toList();
@ -181,7 +184,9 @@ class MobileSubscriptionInfo extends SubscriptionInfo {
); );
} else if (activeEntitlements.isEmpty) { } else if (activeEntitlements.isEmpty) {
debugPrint("User has no active entitlements"); debugPrint("User has no active entitlements");
if (!isNewUserTrial) {
resetSubscription(); resetSubscription();
}
return; return;
} }
final EntitlementInfo activeEntitlement = activeEntitlements[0]; final EntitlementInfo activeEntitlement = activeEntitlements[0];

@ -1,13 +1,11 @@
// Flutter imports: // Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:flutter_gen/gen_l10n/l10n.dart';
// Project imports: // Project imports:
import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/controllers/subscription_controller.dart'; import 'package:fluffychat/pangea/controllers/subscription_controller.dart';
import 'package:flutter/material.dart';
// Package imports:
import 'package:flutter_gen/gen_l10n/l10n.dart';
class SubscriptionOptions extends StatelessWidget { class SubscriptionOptions extends StatelessWidget {
final PangeaController pangeaController; final PangeaController pangeaController;
@ -19,10 +17,7 @@ class SubscriptionOptions extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Expanded( return Expanded(
child: ListView( child: Wrap(
children: [
const SizedBox(height: 20),
Wrap(
alignment: WrapAlignment.center, alignment: WrapAlignment.center,
direction: Axis.horizontal, direction: Axis.horizontal,
children: pangeaController children: pangeaController
@ -35,8 +30,6 @@ class SubscriptionOptions extends StatelessWidget {
) )
.toList(), .toList(),
), ),
],
),
); );
} }
} }
@ -46,10 +39,10 @@ class SubscriptionCard extends StatelessWidget {
final PangeaController pangeaController; final PangeaController pangeaController;
const SubscriptionCard({ const SubscriptionCard({
Key? key, super.key,
required this.subscription, required this.subscription,
required this.pangeaController, required this.pangeaController,
}) : super(key: key); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -86,7 +79,7 @@ class SubscriptionCard extends StatelessWidget {
.submitSubscriptionChange(subscription, context); .submitSubscriptionChange(subscription, context);
}, },
child: Text(L10n.of(context)!.subscribe), child: Text(L10n.of(context)!.subscribe),
) ),
], ],
), ),
), ),

@ -30,8 +30,7 @@ class SubscriptionPaywall extends StatelessWidget {
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(20), padding: const EdgeInsets.all(20),
child: SingleChildScrollView( child: ListView(
child: Column(
children: [ children: [
if (pangeaController.matrixState.client.rooms.length > 1) ...[ if (pangeaController.matrixState.client.rooms.length > 1) ...[
Text( Text(
@ -57,7 +56,6 @@ class SubscriptionPaywall extends StatelessWidget {
], ],
), ),
), ),
),
); );
} }
} }
@ -68,7 +66,8 @@ class FreeTrialCard extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Card( return Align(
child: Card(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
side: BorderSide( side: BorderSide(
color: AppConfig.primaryColorLight.withAlpha(64), color: AppConfig.primaryColorLight.withAlpha(64),
@ -105,6 +104,7 @@ class FreeTrialCard extends StatelessWidget {
), ),
), ),
), ),
),
); );
} }
} }

Loading…
Cancel
Save