Renamed UserAccount to User

This commit is contained in:
dankito 2024-09-05 23:00:17 +02:00
parent c35026bfcc
commit cb45c181ae
10 changed files with 39 additions and 34 deletions

View File

@ -38,8 +38,10 @@ interface BankingClient {
* Convenience wrapper around [getAccountDataAsync]. * Convenience wrapper around [getAccountDataAsync].
* Updates account's transactions beginning from [BankAccount.lastTransactionsRetrievalTime]. * Updates account's transactions beginning from [BankAccount.lastTransactionsRetrievalTime].
* This may requires TAN if [BankAccount.lastTransactionsRetrievalTime] is older than 90 days. * This may requires TAN if [BankAccount.lastTransactionsRetrievalTime] is older than 90 days.
*
* Optionally specify which [accounts] should be updated. If not specified all accounts will be updated.
*/ */
suspend fun updateAccountTransactionsAsync(user: UserAccount, accounts: List<BankAccount>? = null): Response<List<GetTransactionsResponse>> suspend fun updateAccountTransactionsAsync(user: User, accounts: List<BankAccount>? = null): Response<List<GetTransactionsResponse>>
suspend fun transferMoneyAsync(bankCode: String, loginName: String, password: String, recipientName: String, suspend fun transferMoneyAsync(bankCode: String, loginName: String, password: String, recipientName: String,

View File

@ -3,7 +3,7 @@ package net.codinux.banking.client
import net.codinux.banking.client.model.AccountCredentials import net.codinux.banking.client.model.AccountCredentials
import net.codinux.banking.client.model.Amount import net.codinux.banking.client.model.Amount
import net.codinux.banking.client.model.BankAccount import net.codinux.banking.client.model.BankAccount
import net.codinux.banking.client.model.UserAccount import net.codinux.banking.client.model.User
import net.codinux.banking.client.model.options.GetAccountDataOptions import net.codinux.banking.client.model.options.GetAccountDataOptions
import net.codinux.banking.client.model.request.GetAccountDataRequest import net.codinux.banking.client.model.request.GetAccountDataRequest
import net.codinux.banking.client.model.request.TransferMoneyRequest import net.codinux.banking.client.model.request.TransferMoneyRequest
@ -16,7 +16,7 @@ abstract class BankingClientForUserBase(
protected val client: BankingClient protected val client: BankingClient
) : BankingClientForUser { ) : BankingClientForUser {
private lateinit var user: UserAccount private lateinit var user: User
override suspend fun getAccountDataAsync(options: GetAccountDataOptions) = override suspend fun getAccountDataAsync(options: GetAccountDataOptions) =
client.getAccountDataAsync(GetAccountDataRequest(credentials, options)).also { client.getAccountDataAsync(GetAccountDataRequest(credentials, options)).also {

View File

@ -3,7 +3,7 @@ package net.codinux.banking.client
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import net.codinux.banking.client.model.Amount import net.codinux.banking.client.model.Amount
import net.codinux.banking.client.model.BankAccount import net.codinux.banking.client.model.BankAccount
import net.codinux.banking.client.model.UserAccount import net.codinux.banking.client.model.User
import net.codinux.banking.client.model.options.GetAccountDataOptions import net.codinux.banking.client.model.options.GetAccountDataOptions
import net.codinux.banking.client.model.request.GetAccountDataRequest import net.codinux.banking.client.model.request.GetAccountDataRequest
import net.codinux.banking.client.model.request.TransferMoneyRequest import net.codinux.banking.client.model.request.TransferMoneyRequest
@ -19,7 +19,7 @@ fun BankingClient.getAccountData(request: GetAccountDataRequest) = runBlocking {
getAccountDataAsync(request) getAccountDataAsync(request)
} }
fun BankingClient.updateAccountTransactions(user: UserAccount, accounts: List<BankAccount>? = null) = runBlocking { fun BankingClient.updateAccountTransactions(user: User, accounts: List<BankAccount>? = null) = runBlocking {
updateAccountTransactionsAsync(user, accounts) updateAccountTransactionsAsync(user, accounts)
} }

View File

@ -0,0 +1,20 @@
package net.codinux.banking.client.model
import net.codinux.banking.client.model.config.NoArgConstructor
/**
* Contains only the basic info of a bank, just enough that a client application can display it to the user
* and the user knows exactly which bank is meant / referred to.
*
* As e.g. when adding a new account, client application has no data about the bank locally, so it can use this
* information to display it to the user.
*/
@NoArgConstructor
open class BankViewInfo(
val bankCode: String,
var loginName: String,
val bankName: String,
val bankingGroup: BankingGroup? = null
) {
override fun toString() = "$bankCode $bankName $loginName"
}

View File

@ -7,7 +7,7 @@ import net.codinux.banking.client.model.tan.TanMethod
@Suppress("RUNTIME_ANNOTATION_NOT_SUPPORTED") @Suppress("RUNTIME_ANNOTATION_NOT_SUPPORTED")
@NoArgConstructor @NoArgConstructor
open class UserAccount( open class User(
val bankCode: String, val bankCode: String,
var loginName: String, var loginName: String,
/** /**

View File

@ -1,17 +0,0 @@
package net.codinux.banking.client.model
import net.codinux.banking.client.model.config.NoArgConstructor
/**
* Contains only the basic info of a [UserAccount], just enough that a client application can display it to the user
* and the user knows exactly which [UserAccount] is meant / referred.
*/
@NoArgConstructor
open class UserAccountViewInfo(
val bankCode: String,
var loginName: String,
val bankName: String,
val bankingGroup: BankingGroup? = null
) {
override fun toString() = "$bankCode $bankName $loginName"
}

View File

@ -1,14 +1,14 @@
package net.codinux.banking.client.model.response package net.codinux.banking.client.model.response
import net.codinux.banking.client.model.AccountTransaction import net.codinux.banking.client.model.AccountTransaction
import net.codinux.banking.client.model.UserAccount import net.codinux.banking.client.model.User
import net.codinux.banking.client.model.config.JsonIgnore import net.codinux.banking.client.model.config.JsonIgnore
import net.codinux.banking.client.model.config.NoArgConstructor import net.codinux.banking.client.model.config.NoArgConstructor
@Suppress("RUNTIME_ANNOTATION_NOT_SUPPORTED") @Suppress("RUNTIME_ANNOTATION_NOT_SUPPORTED")
@NoArgConstructor @NoArgConstructor
open class GetAccountDataResponse( open class GetAccountDataResponse(
val user: UserAccount val user: User
) { ) {
@get:JsonIgnore @get:JsonIgnore

View File

@ -1,8 +1,8 @@
package net.codinux.banking.client.model.tan package net.codinux.banking.client.model.tan
import net.codinux.banking.client.model.BankAccountViewInfo import net.codinux.banking.client.model.BankAccountViewInfo
import net.codinux.banking.client.model.UserAccount import net.codinux.banking.client.model.User
import net.codinux.banking.client.model.UserAccountViewInfo import net.codinux.banking.client.model.BankViewInfo
import net.codinux.banking.client.model.config.JsonIgnore import net.codinux.banking.client.model.config.JsonIgnore
import net.codinux.banking.client.model.config.NoArgConstructor import net.codinux.banking.client.model.config.NoArgConstructor
@ -24,7 +24,7 @@ open class TanChallenge(
* When adding an account, frontend has no UserAccount object in BankingClientCallback to know which TanMethods are * When adding an account, frontend has no UserAccount object in BankingClientCallback to know which TanMethods are
* available for User. * available for User.
* Also on other calls to bank server, bank server may returned an updated list of available TanMethods, so that * Also on other calls to bank server, bank server may returned an updated list of available TanMethods, so that
* [UserAccount] may contains an outdated list of available TanMethods. * [User] may contains an outdated list of available TanMethods.
* *
* Therefore i added list with up to date TanMethods here to ensure EnterTanDialog can display user's up to date TanMethods. * Therefore i added list with up to date TanMethods here to ensure EnterTanDialog can display user's up to date TanMethods.
*/ */
@ -41,7 +41,7 @@ open class TanChallenge(
open val tanImage: TanImage? = null, open val tanImage: TanImage? = null,
open val flickerCode: FlickerCode? = null, open val flickerCode: FlickerCode? = null,
open val user: UserAccountViewInfo, open val user: BankViewInfo,
open val account: BankAccountViewInfo? = null open val account: BankAccountViewInfo? = null
) { ) {

View File

@ -4,7 +4,7 @@ import net.codinux.banking.client.BankingClient
import net.codinux.banking.client.BankingClientCallback import net.codinux.banking.client.BankingClientCallback
import net.codinux.banking.client.model.BankAccount import net.codinux.banking.client.model.BankAccount
import net.codinux.banking.client.model.BankAccountFeatures import net.codinux.banking.client.model.BankAccountFeatures
import net.codinux.banking.client.model.UserAccount import net.codinux.banking.client.model.User
import net.codinux.banking.client.model.options.GetAccountDataOptions import net.codinux.banking.client.model.options.GetAccountDataOptions
import net.codinux.banking.client.model.request.GetAccountDataRequest import net.codinux.banking.client.model.request.GetAccountDataRequest
import net.codinux.banking.client.model.request.TransferMoneyRequestForUser import net.codinux.banking.client.model.request.TransferMoneyRequestForUser
@ -32,7 +32,7 @@ open class FinTs4kBankingClient(
return mapper.map(response) return mapper.map(response)
} }
override suspend fun updateAccountTransactionsAsync(user: UserAccount, accounts: List<BankAccount>?): Response<List<GetTransactionsResponse>> { override suspend fun updateAccountTransactionsAsync(user: User, accounts: List<BankAccount>?): Response<List<GetTransactionsResponse>> {
val accountsToRequest = (accounts ?: user.accounts).filter { it.supportsAnyFeature(BankAccountFeatures.RetrieveBalance, BankAccountFeatures.RetrieveBalance) } val accountsToRequest = (accounts ?: user.accounts).filter { it.supportsAnyFeature(BankAccountFeatures.RetrieveBalance, BankAccountFeatures.RetrieveBalance) }
if (accountsToRequest.isNotEmpty()) { if (accountsToRequest.isNotEmpty()) {

View File

@ -47,7 +47,7 @@ open class FinTs4kMapper {
abortIfTanIsRequired = options.abortIfTanIsRequired abortIfTanIsRequired = options.abortIfTanIsRequired
) )
open fun mapToUpdateAccountTransactionsParameter(user: UserAccount, account: BankAccount, finTsModel: BankData?): GetAccountDataParameter { open fun mapToUpdateAccountTransactionsParameter(user: User, account: BankAccount, finTsModel: BankData?): GetAccountDataParameter {
val accountIdentifier = BankAccountIdentifierImpl(account.identifier, account.subAccountNumber, account.iban) val accountIdentifier = BankAccountIdentifierImpl(account.identifier, account.subAccountNumber, account.iban)
val from = account.lastTransactionsRetrievalTime?.toLocalDateTime(TimeZone.EuropeBerlin)?.date // TODO: in case lastTransactionsUpdateTime is not set, this would retrieve all transactions (and require a TAN im most cases) val from = account.lastTransactionsRetrievalTime?.toLocalDateTime(TimeZone.EuropeBerlin)?.date // TODO: in case lastTransactionsUpdateTime is not set, this would retrieve all transactions (and require a TAN im most cases)
val retrieveTransactions = if (from != null) RetrieveTransactions.AccordingToRetrieveFromAndTo else RetrieveTransactions.OfLast90Days val retrieveTransactions = if (from != null) RetrieveTransactions.AccordingToRetrieveFromAndTo else RetrieveTransactions.OfLast90Days
@ -106,7 +106,7 @@ open class FinTs4kMapper {
} }
open fun mapToUserAccountViewInfo(bank: BankData): UserAccountViewInfo = UserAccountViewInfo( open fun mapToUserAccountViewInfo(bank: BankData): BankViewInfo = BankViewInfo(
bank.bankCode, bank.customerId, bank.bankName, getBankingGroup(bank.bankName, bank.bic) bank.bankCode, bank.customerId, bank.bankName, getBankingGroup(bank.bankName, bank.bic)
) )
@ -117,7 +117,7 @@ open class FinTs4kMapper {
) )
protected open fun mapUser(user: net.dankito.banking.client.model.CustomerAccount) = UserAccount( protected open fun mapUser(user: net.dankito.banking.client.model.CustomerAccount) = User(
user.bankCode, user.loginName, user.password, user.bankCode, user.loginName, user.password,
user.bankName, user.bic, user.customerName, user.userId, user.bankName, user.bic, user.customerName, user.userId,
user.accounts.map { mapAccount(it) }, user.accounts.map { mapAccount(it) },