package com.reactnativetink.fragment import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import com.facebook.react.bridge.ReactApplicationContext import com.reactnativetink.R import com.reactnativetink.utils.TAG import com.tink.moneymanagerui.OverviewFeature import com.tink.moneymanagerui.OverviewFeatures import com.tink.moneymanagerui.StatisticType import com.tink.moneymanagerui.TinkMoneyManager import com.tink.moneymanagerui.accounts.AccountEditConfiguration import com.tink.moneymanagerui.accounts.EditAccountField import com.tink.moneymanagerui.accounts.FilterAll import com.tink.moneymanagerui.accounts.GroupingByKind import com.tink.moneymanagerui.entrypoints.EntryPoint import timber.log.Timber /** * Use this factory method to create a new instance of * this fragment using the provided parameters. * * @param reactContext Context of the application * @param clientId Client ID which can be found in Tink console. * @param accessToken User access token which is created with all the scopes required. */ class FinanceOverviewFragment( private val reactContext: ReactApplicationContext, private val clientId: String, private val accessToken: String, ) : Fragment() { // Configuration class for the Overview list entrypoint. private val overviewEntrypoint = EntryPoint.Overview( overviewFeatures = OverviewFeatures( listOf( OverviewFeature.Statistics( listOf( StatisticType.EXPENSES, StatisticType.INCOME, StatisticType.LEFT_TO_SPEND, ), ), OverviewFeature.Accounts( FilterAll, GroupingByKind, AccountEditConfiguration( listOf( EditAccountField.NAME, EditAccountField.KIND, EditAccountField.IS_INCLUDED, EditAccountField.IS_SHARED, ), ), ), OverviewFeature.LatestTransactions, OverviewFeature.Budgets, OverviewFeature.RecommendedBudgets, ), ), toolbarVisible = true, featureSpecificThemes = emptyMap(), insightActionHandler = null, ) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_finance_overview, container, false) } override fun onViewCreated( view: View, savedInstanceState: Bundle?, ) { super.onViewCreated(view, savedInstanceState) openFinanceOverview() } private fun openFinanceOverview() { TinkMoneyManager.init( accessToken = accessToken, styleResId = R.style.MoneyManagerStyle, backPressedListener = { Timber.tag(TAG).d("User navigated back") }, editPendingTransaction = false, enableTransactionDetail = true, enableRecommendedBudget = true, enableBudgetCreationSuccessScreen = true, entryPoint = overviewEntrypoint, containerId = R.id.fragmentContainer, fragmentManager = parentFragmentManager, enableSubscriptions = false ) } }