diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/db/NaviPayAppDatabase.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/db/NaviPayAppDatabase.kt index cbdbd4b7cf..9c8166669a 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/db/NaviPayAppDatabase.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/db/NaviPayAppDatabase.kt @@ -111,7 +111,7 @@ import com.navi.pay.utils.NAVI_PAY_SYNC_TABLE_TRANSACTION_HISTORY_KEY MerchantInfoEntity::class, ], views = [SelfTransferView::class], - version = 21, + version = 22, exportSchema = false, ) @TypeConverters( @@ -615,3 +615,18 @@ val NAVI_PAY_APP_DATABASE_MIGRATION_20_21 = ) } } + +val NAVI_PAY_APP_DATABASE_MIGRATION_21_22 = + object : Migration(startVersion = 21, endVersion = 22) { + override fun migrate(db: SupportSQLiteDatabase) { + // Migration to add isRegularVersionSupported column in bank table + db.execSQL( + "ALTER TABLE $NAVI_PAY_DATABASE_BANK_TABLE_NAME ADD COLUMN isRegularVersionSupported TEXT NOT NULL DEFAULT 'A0'" + ) + + // Delete NAVI_PAY_SYNC_TABLE_BANK_LIST_KEY from sync table to trigger re-sync + db.execSQL( + "DELETE FROM $NAVI_PAY_DATABASE_SYNC_TABLE_NAME WHERE syncKey = '$NAVI_PAY_SYNC_TABLE_BANK_LIST_KEY'" + ) + } + } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/network/di/NaviPayModule.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/network/di/NaviPayModule.kt index f2a29d55b8..45825eda6b 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/network/di/NaviPayModule.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/network/di/NaviPayModule.kt @@ -50,6 +50,7 @@ import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_18_19 import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_19_20 import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_1_2 import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_20_21 +import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_21_22 import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_2_3 import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_3_4 import com.navi.pay.db.NAVI_PAY_APP_DATABASE_MIGRATION_4_5 @@ -190,6 +191,7 @@ object NaviPayNetworkModule { NAVI_PAY_APP_DATABASE_MIGRATION_18_19, NAVI_PAY_APP_DATABASE_MIGRATION_19_20, NAVI_PAY_APP_DATABASE_MIGRATION_20_21, + NAVI_PAY_APP_DATABASE_MIGRATION_21_22, ) .addTypeConverter(MessageContentConverter()) .build() diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/dao/BankDao.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/dao/BankDao.kt index 8e3ba646ce..a2dfc33957 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/dao/BankDao.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/dao/BankDao.kt @@ -36,12 +36,12 @@ interface BankDao { fun getAllCreditLineBanksForQueryString(queryString: String): PagingSource @Query( - "SELECT * FROM $NAVI_PAY_DATABASE_BANK_TABLE_NAME WHERE name COLLATE NOCASE LIKE :queryString AND isCreditCardSupported = '' ORDER BY name COLLATE NOCASE ASC" + "SELECT * FROM $NAVI_PAY_DATABASE_BANK_TABLE_NAME WHERE name COLLATE NOCASE LIKE :queryString AND isRegularVersionSupported != '' ORDER BY name COLLATE NOCASE ASC" ) - fun getAllNonCreditCardBanksForQueryString(queryString: String): PagingSource + fun getAllSavingsBanksForQueryString(queryString: String): PagingSource @Query( - "SELECT * FROM $NAVI_PAY_DATABASE_BANK_TABLE_NAME WHERE popular = 1 AND isCreditCardSupported = '' ORDER BY name COLLATE NOCASE ASC" + "SELECT * FROM $NAVI_PAY_DATABASE_BANK_TABLE_NAME WHERE popular = 1 AND isRegularVersionSupported != '' ORDER BY name COLLATE NOCASE ASC" ) suspend fun getAllPopularSavingsBanks(): List diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/network/BankListResponse.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/network/BankListResponse.kt index b08b1cb36d..cbfd01c8b7 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/network/BankListResponse.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/network/BankListResponse.kt @@ -30,4 +30,5 @@ data class BankPspData( @SerializedName("isUpiLiteAutoTopUpSupported") val isUpiLiteAutoTopUpSupported: Boolean?, @SerializedName("isUpiBillPaymentSupported") val isUpiBillPaymentSupported: Boolean?, @SerializedName("isEmiConversionSupported") val isEmiConversionSupported: Boolean?, + @SerializedName("isRegularVersionSupported") val isRegularVersionSupported: Boolean, ) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankEntity.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankEntity.kt index 9c83da3de7..735f28430e 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankEntity.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankEntity.kt @@ -32,4 +32,5 @@ data class BankEntity( @ColumnInfo(name = "isUpiLiteAutoTopUpSupported") val isUpiLiteAutoTopUpSupported: String, @ColumnInfo(name = "isUpiBillPaymentSupported") val isUpiBillPaymentSupported: String, @ColumnInfo(name = "isEmiConversionSupported") val isEmiConversionSupported: String, + @ColumnInfo(name = "isRegularVersionSupported") val isRegularVersionSupported: String, ) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankUiModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankUiModel.kt index 22f0ca9c2c..f68d2b5016 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankUiModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/model/view/BankUiModel.kt @@ -20,4 +20,5 @@ data class BankUiModel( val isCreditLineSupported: Boolean, val isUpiLiteAutoTopUpSupported: Boolean, val isEmiConversionSupported: Boolean, + val isRegularVersionSupported: Boolean, ) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/repository/BankRepository.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/repository/BankRepository.kt index 7ab5d7f317..7950cbedb7 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/repository/BankRepository.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/repository/BankRepository.kt @@ -43,10 +43,10 @@ constructor( ) } - fun getAllNonCreditCardBanksForQueryString(queryString: String): Flow> { + fun getAllSavingsBanksForQueryString(queryString: String): Flow> { val formattedQueryString = "%$queryString%" return Pager(PagingConfig(pageSize = 10)) { - bankDao.getAllNonCreditCardBanksForQueryString(queryString = formattedQueryString) + bankDao.getAllSavingsBanksForQueryString(queryString = formattedQueryString) } .flow .map { pagingData -> pagingData.map { bankEntity -> bankEntity.toBankUiModel() } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/util/BankMappingUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/util/BankMappingUtils.kt index 200013308f..e82932307c 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/util/BankMappingUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/util/BankMappingUtils.kt @@ -24,11 +24,12 @@ fun BankItemResponse.toBankEntity(): BankEntity { isCreditCardSupported = fetchEligibleTags { it.isCreditCardSupported }, isUpiLiteSupported = fetchEligibleTags { it.isUpiLiteSupported }, isAadhaarOtpSupported = fetchEligibleTags { it.isAadhaarOtpSupported }, - isUpiInternationalSupported = fetchEligibleTags { it.isUpiInternationalSupported ?: false }, + isUpiInternationalSupported = fetchEligibleTags { it.isUpiInternationalSupported }, isCreditLineSupported = fetchEligibleTags { it.isCreditLineSupported }, - isUpiLiteAutoTopUpSupported = fetchEligibleTags { it.isUpiLiteAutoTopUpSupported ?: false }, - isUpiBillPaymentSupported = fetchEligibleTags { it.isUpiBillPaymentSupported ?: false }, - isEmiConversionSupported = fetchEligibleTags { it.isEmiConversionSupported ?: false }, + isUpiLiteAutoTopUpSupported = fetchEligibleTags { it.isUpiLiteAutoTopUpSupported == true }, + isUpiBillPaymentSupported = fetchEligibleTags { it.isUpiBillPaymentSupported == true }, + isEmiConversionSupported = fetchEligibleTags { it.isEmiConversionSupported == true }, + isRegularVersionSupported = fetchEligibleTags { it.isRegularVersionSupported }, ) } @@ -46,6 +47,7 @@ fun BankEntity.toBankUiModel(): BankUiModel { isCreditLineSupported = isCreditLineSupported.isFeatureEnabled(), isUpiLiteAutoTopUpSupported = isUpiLiteAutoTopUpSupported.isFeatureEnabled(), isEmiConversionSupported = isEmiConversionSupported.isFeatureEnabled(), + isRegularVersionSupported = isRegularVersionSupported.isFeatureEnabled(), ) } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt index d6b272b3d7..e7638a13b3 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/account/add/viewmodel/AccountAdditionViewModel.kt @@ -171,7 +171,7 @@ constructor( .debounce(300) .distinctUntilChanged() .flatMapLatest { query -> - bankRepository.getAllNonCreditCardBanksForQueryString(queryString = query) + bankRepository.getAllSavingsBanksForQueryString(queryString = query) } .flowOn(coroutineDispatcherProvider.io) .cachedIn(viewModelScope)