From 4d0dc4286228123300c1e1d5b49e6b8d8e6c35ed Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 13 Jul 2023 18:28:34 -0300 Subject: [PATCH 1/5] Remove cva OnResume event --- .../Settings/Subscribe/Subscribe.container.js | 6 ++--- .../SubscriptionProvider.actions.js | 8 +----- .../SubscriptionProvider.container.js | 25 ++----------------- 3 files changed, 6 insertions(+), 33 deletions(-) diff --git a/src/components/Settings/Subscribe/Subscribe.container.js b/src/components/Settings/Subscribe/Subscribe.container.js index 4612eda2d..bceda3796 100644 --- a/src/components/Settings/Subscribe/Subscribe.container.js +++ b/src/components/Settings/Subscribe/Subscribe.container.js @@ -41,7 +41,7 @@ export class SubscribeContainer extends PureComponent { const { updateIsSubscribed, updatePlans } = this.props; const requestOrigin = 'Function: componentDidMount - Component: Subscribe Container'; - updateIsSubscribed(false, requestOrigin); + updateIsSubscribed(requestOrigin); updatePlans(); } @@ -56,7 +56,7 @@ export class SubscribeContainer extends PureComponent { const { updateIsSubscribed, updatePlans } = this.props; const requestOrigin = 'Fuction: handleRefreshSubscription() - Component: subscribeContainer'; - updateIsSubscribed(false, requestOrigin); + updateIsSubscribed(requestOrigin); updatePlans(); }; @@ -68,7 +68,7 @@ export class SubscribeContainer extends PureComponent { this.setState({ cancelSubscriptionStatus: 'ok' }); const requestOrigin = 'Function: handleCancelSubscription() - Component:Subscribe Container'; - updateIsSubscribed(false, requestOrigin); + updateIsSubscribed(requestOrigin); updatePlans(); } catch (err) { console.error(err.message); diff --git a/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js b/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js index 5b6fa63ec..18a8ffae6 100644 --- a/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js +++ b/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js @@ -59,10 +59,7 @@ export function updateIsOnTrialPeriod() { }; } -export function updateIsSubscribed( - isOnResume = false, - requestOrigin = 'unkwnown' -) { +export function updateIsSubscribed(requestOrigin = 'unkwnown') { return async (dispatch, getState) => { let isSubscribed = false; let ownedProduct = ''; @@ -81,9 +78,6 @@ export function updateIsSubscribed( ); } else { if (isAndroid() && state.subscription.status === PROCCESING) { - //If just close the subscribe google play modal - if (isOnResume) return; - const localReceipts = window.CdvPurchase.store.localReceipts; if (localReceipts.length) { //Restore purchases to pass to approved diff --git a/src/providers/SubscriptionProvider/SubscriptionProvider.container.js b/src/providers/SubscriptionProvider/SubscriptionProvider.container.js index 913af1a16..50da11f33 100644 --- a/src/providers/SubscriptionProvider/SubscriptionProvider.container.js +++ b/src/providers/SubscriptionProvider/SubscriptionProvider.container.js @@ -13,7 +13,6 @@ import { updateIsOnTrialPeriod, showPremiumRequired } from './SubscriptionProvider.actions'; -import { onCvaResume, cleanUpCvaOnResume } from '../../cordova-util'; import { ACTIVE, CANCELED, @@ -26,20 +25,6 @@ export class SubscriptionProvider extends Component { children: PropTypes.node.isRequired }; - onResume = async () => { - const { - updateIsSubscribed, - updateIsInFreeCountry, - updateIsOnTrialPeriod - } = this.props; - const isOnResume = true; - const requestOrigin = - 'Function: onCvaResume() - Component: SubscriptionProvider'; - await updateIsSubscribed(isOnResume, requestOrigin); - updateIsInFreeCountry(); - updateIsOnTrialPeriod(); - }; - async componentDidMount() { const { isLogged, @@ -50,11 +35,9 @@ export class SubscriptionProvider extends Component { updatePlans } = this.props; - if (isCordova()) onCvaResume(this.onResume); - const requestOrigin = 'Function: componentDidMount - Component: SubscriptionProvider'; - const isSubscribed = await updateIsSubscribed(false, requestOrigin); + const isSubscribed = await updateIsSubscribed(requestOrigin); const isInFreeCountry = updateIsInFreeCountry(); const isOnTrialPeriod = updateIsOnTrialPeriod(); await updatePlans(); @@ -74,7 +57,7 @@ export class SubscriptionProvider extends Component { if (prevProps.isLogged !== isLogged) { const requestOrigin = 'Function: componentDidUpdate - Component: SubscriptionProvider'; - const isSubscribed = await updateIsSubscribed(false, requestOrigin); + const isSubscribed = await updateIsSubscribed(requestOrigin); const isInFreeCountry = updateIsInFreeCountry(); const isOnTrialPeriod = updateIsOnTrialPeriod(); if (!isInFreeCountry && !isOnTrialPeriod && !isSubscribed && isLogged) { @@ -83,10 +66,6 @@ export class SubscriptionProvider extends Component { } }; - componentWillUnmount() { - if (isCordova()) cleanUpCvaOnResume(this.onResume); - } - configPurchaseValidator = () => { window.CdvPurchase.store.validator = async function(receipt, callback) { try { From a4e99afaae5d2c71e4d277444906807fc75cd7f7 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 13 Jul 2023 20:00:15 -0300 Subject: [PATCH 2/5] Add lastUpdated prop to Subscription redux state --- .../SubscriptionProvider/SubscriptionProvider.actions.js | 6 ++++++ .../SubscriptionProvider/SubscriptionProvider.reducer.js | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js b/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js index 18a8ffae6..f4c0e5c86 100644 --- a/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js +++ b/src/providers/SubscriptionProvider/SubscriptionProvider.actions.js @@ -66,6 +66,12 @@ export function updateIsSubscribed(requestOrigin = 'unkwnown') { let status = NOT_SUBSCRIBED; let expiryDate = null; const state = getState(); + dispatch( + updateSubscription({ + lastUpdated: new Date().getTime() + }) + ); + try { if (!isLogged(state)) { dispatch( diff --git a/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js b/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js index 530cf88fa..7a12dd312 100644 --- a/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js +++ b/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js @@ -37,7 +37,8 @@ const initialState = { price: '', tag: '' } - ] + ], + lastUpdated: null }; function subscriptionProviderReducer(state = initialState, action) { From 8cbc32b9776de7cefe7471a613c5f5b8f75874cb Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Thu, 13 Jul 2023 20:01:16 -0300 Subject: [PATCH 3/5] Check isUpdateSubscriptionNeeded on capture premiu --- .../PremiumFeature/PremiumFeature.js | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/src/components/PremiumFeature/PremiumFeature.js b/src/components/PremiumFeature/PremiumFeature.js index f8d793936..6caddfc38 100644 --- a/src/components/PremiumFeature/PremiumFeature.js +++ b/src/components/PremiumFeature/PremiumFeature.js @@ -1,15 +1,38 @@ import React from 'react'; import { connect } from 'react-redux'; -import { showPremiumRequired } from '../../providers/SubscriptionProvider/SubscriptionProvider.actions'; +import { + updateIsInFreeCountry, + updateIsSubscribed, + updateSubscription, + updateIsOnTrialPeriod, + showPremiumRequired +} from '../../providers/SubscriptionProvider/SubscriptionProvider.actions'; + +function isUpdateSubscriptionNeeded(lastUpdated) { + if (!lastUpdated) return true; + const MAX_HOURS_DIFFERENCE = 12; + const actualTime = new Date().getTime(); + const difference = actualTime - lastUpdated; + const hoursDifference = difference / (1000 * 60 * 60); + return hoursDifference > MAX_HOURS_DIFFERENCE; +} function PremiumFeature({ children, isOnTrialPeriod, isSubscribed, isInFreeCountry, - showPremiumRequired + showPremiumRequired, + lastUpdated }) { const captured = event => { + if (isUpdateSubscriptionNeeded(lastUpdated)) { + const requestOrigin = 'Function: captured - Component: PremiumFeature'; + updateIsSubscribed(requestOrigin); + updateIsInFreeCountry(); + updateIsOnTrialPeriod(); + } + if (isInFreeCountry || isSubscribed || isOnTrialPeriod) return; event.stopPropagation(); event.preventDefault(); @@ -26,10 +49,16 @@ function PremiumFeature({ const mapStateToProps = state => ({ isOnTrialPeriod: state.subscription.isOnTrialPeriod, isSubscribed: state.subscription.isSubscribed, - isInFreeCountry: state.subscription.isInFreeCountry + isInFreeCountry: state.subscription.isInFreeCountry, + lastUpdated: state.subscription.lastUpdated }); -const mapDispatchToProps = { showPremiumRequired }; +const mapDispatchToProps = { + showPremiumRequired, + updateIsSubscribed, + updateSubscription, + updateIsInFreeCountry +}; export default connect( mapStateToProps, From b48e8daf0007c7d0083c07432b71ebabb7e08926 Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Mon, 17 Jul 2023 13:49:39 -0300 Subject: [PATCH 4/5] Rename function to isUpdateSubscriberStatusNeeded --- src/components/PremiumFeature/PremiumFeature.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/PremiumFeature/PremiumFeature.js b/src/components/PremiumFeature/PremiumFeature.js index 6caddfc38..ed5c92bdb 100644 --- a/src/components/PremiumFeature/PremiumFeature.js +++ b/src/components/PremiumFeature/PremiumFeature.js @@ -8,7 +8,7 @@ import { showPremiumRequired } from '../../providers/SubscriptionProvider/SubscriptionProvider.actions'; -function isUpdateSubscriptionNeeded(lastUpdated) { +function isUpdateSubscriberStatusNeeded(lastUpdated) { if (!lastUpdated) return true; const MAX_HOURS_DIFFERENCE = 12; const actualTime = new Date().getTime(); @@ -26,7 +26,7 @@ function PremiumFeature({ lastUpdated }) { const captured = event => { - if (isUpdateSubscriptionNeeded(lastUpdated)) { + if (isUpdateSubscriberStatusNeeded(lastUpdated)) { const requestOrigin = 'Function: captured - Component: PremiumFeature'; updateIsSubscribed(requestOrigin); updateIsInFreeCountry(); From 5204820aca289f29376fb222f83ad5533e413a6e Mon Sep 17 00:00:00 2001 From: Rodri Sanchez Date: Wed, 19 Jul 2023 11:33:47 -0300 Subject: [PATCH 5/5] Changes requested --- .../SubscriptionProvider/SubscriptionProvider.container.js | 2 +- .../SubscriptionProvider/SubscriptionProvider.reducer.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/providers/SubscriptionProvider/SubscriptionProvider.container.js b/src/providers/SubscriptionProvider/SubscriptionProvider.container.js index 50da11f33..ef9c1ba0c 100644 --- a/src/providers/SubscriptionProvider/SubscriptionProvider.container.js +++ b/src/providers/SubscriptionProvider/SubscriptionProvider.container.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import API from '../../api'; -import { isAndroid, isCordova } from '../../cordova-util'; +import { isAndroid } from '../../cordova-util'; import { updateIsInFreeCountry, diff --git a/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js b/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js index 7a12dd312..e75d3d58f 100644 --- a/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js +++ b/src/providers/SubscriptionProvider/SubscriptionProvider.reducer.js @@ -38,7 +38,7 @@ const initialState = { tag: '' } ], - lastUpdated: null + lastUpdated: undefined }; function subscriptionProviderReducer(state = initialState, action) {