TF-3985 Navigate Paywall url when click Increase your space button
This commit is contained in:
@@ -6,7 +6,10 @@ import 'package:core/utils/app_logger.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/extensions/service_path_extension.dart';
|
||||
import 'package:tmail_ui_user/features/login/data/network/endpoint.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/exceptions/linagora_ecosystem_exceptions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/api_url_linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/linagora_ecosystem/linagora_ecosystem_identifier.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/domain/model/paywall_url_pattern.dart';
|
||||
|
||||
class LinagoraEcosystemApi {
|
||||
final DioClient _dioClient;
|
||||
@@ -26,4 +29,33 @@ class LinagoraEcosystemApi {
|
||||
throw NotFoundLinagoraEcosystem();
|
||||
}
|
||||
}
|
||||
|
||||
Future<PaywallUrlPattern> getPaywallUrl(String baseUrl) async {
|
||||
final result = await _dioClient.get(
|
||||
Endpoint.linagoraEcosystem.usingBaseUrl(baseUrl).generateEndpointPath(),
|
||||
);
|
||||
log('LinagoraEcosystemApi::getPaywallUrl: $result');
|
||||
|
||||
LinagoraEcosystem? linagoraEcosystem;
|
||||
|
||||
if (result is Map<String, dynamic>) {
|
||||
linagoraEcosystem = LinagoraEcosystem.deserialize(result);
|
||||
} else if (result is String) {
|
||||
linagoraEcosystem = LinagoraEcosystem.deserialize(jsonDecode(result));
|
||||
}
|
||||
|
||||
if (linagoraEcosystem == null) {
|
||||
throw NotFoundLinagoraEcosystem();
|
||||
} else {
|
||||
final paywallProperty =
|
||||
linagoraEcosystem.properties?[LinagoraEcosystemIdentifier.paywallURL] as ApiUrlLinagoraEcosystem?;
|
||||
log('LinagoraEcosystemApi::getPaywallUrl: paywallProperty = $paywallProperty');
|
||||
|
||||
if (paywallProperty == null) {
|
||||
throw NotFoundPaywallUrl();
|
||||
} else {
|
||||
return PaywallUrlPattern(paywallProperty.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +1,4 @@
|
||||
|
||||
class NotFoundLinagoraEcosystem implements Exception {}
|
||||
class NotFoundLinagoraEcosystem implements Exception {}
|
||||
|
||||
class NotFoundPaywallUrl implements Exception {}
|
||||
+1
@@ -27,6 +27,7 @@ class LinagoraEcosystemConverter {
|
||||
LinagoraEcosystemIdentifier.twakeSync: AppLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.linShare: AppLinagoraEcosystem.deserialize,
|
||||
LinagoraEcosystemIdentifier.mobileApps: MobileAppsLinagoraEcosystemConverter.deserialize,
|
||||
LinagoraEcosystemIdentifier.paywallURL: ApiUrlLinagoraEcosystem.deserialize,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -11,6 +11,7 @@ class LinagoraEcosystemIdentifier with EquatableMixin {
|
||||
static final twakeChat = LinagoraEcosystemIdentifier('Twake Chat');
|
||||
static final twakeSync = LinagoraEcosystemIdentifier('Twake Sync');
|
||||
static final linShare = LinagoraEcosystemIdentifier('LinShare');
|
||||
static final paywallURL = LinagoraEcosystemIdentifier('paywallUrlTemplate');
|
||||
|
||||
final String value;
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@ import 'package:tmail_ui_user/features/offline_mode/manager/new_email_cache_work
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/opened_email_cache_worker_queue.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/manager/sending_email_cache_manager.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/presentation/paywall_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/quotas/presentation/quotas_bindings.dart';
|
||||
import 'package:tmail_ui_user/features/search/email/domain/usecases/refresh_changes_search_email_interactor.dart';
|
||||
import 'package:tmail_ui_user/features/search/email/presentation/search_email_bindings.dart';
|
||||
@@ -376,6 +377,7 @@ class MailboxDashBoardBindings extends BaseBindings {
|
||||
Get.lazyPut(() => GetIdentityCacheOnWebInteractor(
|
||||
Get.find<IdentityCreatorRepository>()
|
||||
));
|
||||
PaywallBindings().dependencies();
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
+8
@@ -127,6 +127,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/reopen_composer_cache_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/update_current_emails_flags_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/validate_saas_premium_available_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/web_auth_redirect_processor_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/download/download_task_state.dart';
|
||||
@@ -152,6 +153,8 @@ import 'package:tmail_ui_user/features/manage_account/presentation/model/account
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/model/manage_account_arguments.dart';
|
||||
import 'package:tmail_ui_user/features/network_connection/presentation/network_connection_controller.dart'
|
||||
if (dart.library.html) 'package:tmail_ui_user/features/network_connection/presentation/web_network_connection_controller.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/domain/model/paywall_url_pattern.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/domain/state/get_paywall_url_state.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/presentation/controller/web_socket_controller.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/presentation/notification/local_notification_manager.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/presentation/services/fcm_service.dart';
|
||||
@@ -302,6 +305,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
StreamSubscription<DeepLinkData?>? _deepLinkDataStreamSubscription;
|
||||
int minInputLengthAutocomplete = AppConfig.defaultMinInputLengthAutocomplete;
|
||||
EmailSortOrderType currentSortOrder = SearchEmailFilter.defaultSortOrder;
|
||||
PaywallUrlPattern? paywallUrlPattern;
|
||||
|
||||
final StreamController<Either<Failure, Success>> _progressStateController =
|
||||
StreamController<Either<Failure, Success>>.broadcast();
|
||||
@@ -497,6 +501,8 @@ class MailboxDashBoardController extends ReloadableController
|
||||
);
|
||||
} else if (success is GetStoredEmailSortOrderSuccess) {
|
||||
setUpDefaultEmailSortOrder(success.emailSortOrderType);
|
||||
} else if (success is GetPaywallUrlSuccess) {
|
||||
loadPaywallUrlSuccess(success.paywallUrlPattern);
|
||||
} else {
|
||||
super.handleSuccessViewState(success);
|
||||
}
|
||||
@@ -830,6 +836,8 @@ class MailboxDashBoardController extends ReloadableController
|
||||
if (PlatformInfo.isMobile) {
|
||||
getAllSendingEmails();
|
||||
_storeSessionAction(session);
|
||||
} else {
|
||||
loadPaywallUrl();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+37
@@ -1,5 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/domain/model/paywall_url_pattern.dart';
|
||||
import 'package:tmail_ui_user/features/paywall/domain/usecases/get_paywall_url_interactor.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
||||
bool get isPremiumAvailable {
|
||||
@@ -13,4 +19,35 @@ extension ValidateSaasPremiumAvailableExtension on MailboxDashBoardController {
|
||||
|
||||
return saasAccount?.isPremiumAvailable ?? false;
|
||||
}
|
||||
|
||||
void loadPaywallUrl() {
|
||||
final getPaywallUrlInteractor = getBinding<GetPaywallUrlInteractor>();
|
||||
final jmapUrl = dynamicUrlInterceptors.jmapUrl;
|
||||
|
||||
if (getPaywallUrlInteractor != null && jmapUrl != null) {
|
||||
consumeState(getPaywallUrlInteractor.execute(jmapUrl));
|
||||
} else {
|
||||
paywallUrlPattern = null;
|
||||
}
|
||||
}
|
||||
|
||||
void loadPaywallUrlSuccess(PaywallUrlPattern newPattern) {
|
||||
paywallUrlPattern = newPattern;
|
||||
}
|
||||
|
||||
void navigateToPaywall(BuildContext context) {
|
||||
if (paywallUrlPattern == null) {
|
||||
appToast.showToastErrorMessage(
|
||||
context,
|
||||
AppLocalizations.of(context).paywallUrlNotAvailable,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
final qualifiedPaywall = paywallUrlPattern!.getQualifiedUrl(
|
||||
ownerEmail: ownEmailAddress.value,
|
||||
);
|
||||
|
||||
AppUtils.launchLink(qualifiedPaywall);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user