Merge pull request #465 from ente-io/alreadyClaimedAccount
This commit is contained in:
commit
86b6c3c6fd
|
@ -6,6 +6,8 @@ class InvalidFileUploadState extends AssertionError {
|
|||
InvalidFileUploadState(String message) : super(message);
|
||||
}
|
||||
|
||||
class SubscriptionAlreadyClaimedError extends Error {}
|
||||
|
||||
class WiFiUnavailableError extends Error {}
|
||||
|
||||
class SyncStopRequestedError extends Error {}
|
||||
|
|
|
@ -6,6 +6,7 @@ import 'package:dio/dio.dart';
|
|||
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:photos/core/configuration.dart';
|
||||
import 'package:photos/core/errors.dart';
|
||||
import 'package:photos/core/network.dart';
|
||||
import 'package:photos/models/billing_plan.dart';
|
||||
import 'package:photos/models/subscription.dart';
|
||||
|
@ -111,6 +112,12 @@ class BillingService {
|
|||
),
|
||||
);
|
||||
return Subscription.fromMap(response.data["subscription"]);
|
||||
} on DioError catch (e) {
|
||||
if (e.response != null && e.response.statusCode == 409) {
|
||||
throw SubscriptionAlreadyClaimedError();
|
||||
} else {
|
||||
rethrow;
|
||||
}
|
||||
} catch (e, s) {
|
||||
_logger.severe(e, s);
|
||||
rethrow;
|
||||
|
|
|
@ -4,6 +4,7 @@ import 'dart:io';
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:photos/core/errors.dart';
|
||||
import 'package:photos/core/event_bus.dart';
|
||||
import 'package:photos/events/subscription_purchased_event.dart';
|
||||
import 'package:photos/models/billing_plan.dart';
|
||||
|
@ -93,6 +94,18 @@ class _SubscriptionPageState extends State<SubscriptionPage> {
|
|||
if (widget.isOnboarding) {
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
}
|
||||
} on SubscriptionAlreadyClaimedError catch (e) {
|
||||
_logger.warning("subscription is already claimed ", e);
|
||||
await _dialog.hide();
|
||||
final String title = "${Platform.isAndroid ? "Play" : "App"}"
|
||||
"Store subscription";
|
||||
final String id =
|
||||
Platform.isAndroid ? "Google Play ID" : "Apple ID";
|
||||
final String message = '''Your $id is already linked to another
|
||||
ente account.\nIf you would like to use your $id with this
|
||||
account, please contact our support''';
|
||||
showErrorDialog(context, title, message);
|
||||
return;
|
||||
} catch (e) {
|
||||
_logger.warning("Could not complete payment ", e);
|
||||
await _dialog.hide();
|
||||
|
|
Loading…
Reference in a new issue