Merge pull request #465 from ente-io/alreadyClaimedAccount

This commit is contained in:
Vishnu Mohandas 2022-09-06 17:40:37 +05:30 committed by GitHub
commit 86b6c3c6fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 0 deletions

View file

@ -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 {}

View file

@ -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;

View file

@ -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();