mapFlutterSubscriptionInfoToSubscriptionInfo function

SubscriptionInfo? mapFlutterSubscriptionInfoToSubscriptionInfo(
  1. FlutterSubscriptionInfo? flutterSubscriptionInfo
)

Функция для маппинга FlutterSubscriptionInfo в SubscriptionInfo.

Implementation

SubscriptionInfo? mapFlutterSubscriptionInfoToSubscriptionInfo(
    FlutterSubscriptionInfo? flutterSubscriptionInfo) {
  if (flutterSubscriptionInfo == null) return null;

  return SubscriptionInfo._(
    periods: flutterSubscriptionInfo.periods.map((period) {
      if (period.trialPeriod != null) {
        final trial = period.trialPeriod!;
        return TrialPeriod._(
          duration: trial.duration,
          currency: trial.currency,
          price: trial.price,
        );
      } else if (period.promoPeriod != null) {
        final promo = period.promoPeriod!;
        return PromoPeriod._(
          duration: promo.duration,
          currency: promo.currency,
          price: promo.price,
        );
      } else if (period.mainPeriod != null) {
        final main = period.mainPeriod!;
        return MainPeriod._(
          duration: main.duration,
          currency: main.currency,
          price: main.price,
        );
      } else if (period.gracePeriod != null) {
        final grace = period.gracePeriod!;
        return GracePeriod._(
          duration: grace.duration,
        );
      } else if (period.holdPeriod != null) {
        final hold = period.holdPeriod!;
        return HoldPeriod._(
          duration: hold.duration,
        );
      } else {
        throw UnsupportedError('Unknown subscription period type');
      }
    }).toList(),
  );
}