getUserSubscription method
Future<void>
getUserSubscription(
)
override
Implementation
@override
Future<void> getUserSubscription() async {
AppConfig.logger.d('getUserSubscription');
try {
List<UserSubscription> subscriptions = await UserSubscriptionFirestore().getByUserId(user.id);
if(subscriptions.isNotEmpty) {
_userSubscription = subscriptions.firstWhereOrNull((subscription) => subscription.status == SubscriptionStatus.active);
if(userSubscription?.subscriptionId == user.subscriptionId) {
_subscriptionLevel = userSubscription?.level ?? SubscriptionLevel.freemium;
AppConfig.logger.d('User subscriptionId is the same as user.subscriptionId for ${subscriptionLevel.name}');
} else if(userSubscription?.subscriptionId.isNotEmpty ?? false) {
user.subscriptionId = userSubscription?.subscriptionId ?? '';
AppConfig.logger.d('User subscription is different from user.subscriptionId');
}
} else if(user.subscriptionId.isNotEmpty) {
if (CoreUtilities.isWithinFirstMonth(user.createdDate)) {
_subscriptionLevel = SubscriptionLevel.freeMonth;
AppConfig.logger.i('User subscriptionId ${user.subscriptionId} is still within free month for SubscriptionLevel ${subscriptionLevel.name}');
} else {
AppConfig.logger.w('User subscriptionId ${user.subscriptionId} is out of free month');
user.subscriptionId = "";
}
} else if(user.userRole.value > UserRole.subscriber.value){
AppConfig.logger.d('No user subscription found');
_subscriptionLevel = SubscriptionLevel.ambassador;
}
} catch (e) {
AppConfig.logger.e(e.toString());
}
}