diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 3a6d748..7b46144 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -7,7 +7,7 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 991bdad..5826d3f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,14 +17,21 @@ android:supportsRtl="true" android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"> + + + - - + android:exported="true"> + + - - + + + + + + + + + diff --git a/app/src/main/java/com/flybits/conciergesample/activity/CustomViewProvider.kt b/app/src/main/java/com/flybits/conciergesample/activity/CustomViewProvider.kt new file mode 100644 index 0000000..0389977 --- /dev/null +++ b/app/src/main/java/com/flybits/conciergesample/activity/CustomViewProvider.kt @@ -0,0 +1,119 @@ +package com.flybits.conciergesample.activity + +import android.content.Intent +import android.graphics.Color +import android.graphics.drawable.GradientDrawable +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.os.Parcel +import android.os.Parcelable +import android.util.TypedValue +import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.navigation.Navigation +import androidx.navigation.ui.AppBarConfiguration +import androidx.navigation.ui.setupActionBarWithNavController +import com.flybits.android.kernel.models.LocalizedValue +import com.flybits.android.push.models.newPush.Push +import com.flybits.android.push.services.EXTRA_PUSH_NOTIFICATION +import com.flybits.commons.library.api.results.callbacks.BasicResultCallback +import com.flybits.commons.library.exceptions.FlybitsException +import com.flybits.concierge.Concierge +import com.flybits.concierge.ConciergeConstants +import com.flybits.concierge.enums.ConciergeOptions +import com.flybits.concierge.enums.Container +import com.flybits.concierge.models.CardBackgroundColor +import com.flybits.concierge.theming.ConciergeAppearance +import com.flybits.concierge.theming.getThemeColor +import com.flybits.concierge.theming.isDarkThemeOn +import com.flybits.conciergesample.R +import com.flybits.flybitscoreconcierge.BaseTemplate +import com.flybits.flybitscoreconcierge.idps.AnonymousConciergeIDP +import com.flybits.flybitscoreconcierge.viewproviders.FlybitsNavigator +import com.flybits.flybitscoreconcierge.viewproviders.FlybitsViewHolder +import com.flybits.flybitscoreconcierge.viewproviders.FlybitsViewProvider +import kotlinx.android.parcel.Parcelize + +class CustomViewProvider : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.fullscreen_concierge) + + val transaction = supportFragmentManager.beginTransaction() + + Concierge.fragment( + this, + Container.None, + emptyList(), + arrayListOf(ConciergeOptions.CustomViewProviders(arrayListOf( + CardOfferViewProvider() + ))) + ).let { + transaction.replace(R.id.concierge_framelayout, it) + } + + transaction.commit() + + } + + override fun onCreateOptionsMenu(menu: Menu?): Boolean { + menuInflater.inflate(R.menu.menu_options, menu) + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + if (item.itemId == R.id.login_flybits) { + // Check if connected already. + if (!Concierge.isConnected(this)) { + // Call Connect and load the fragment. + Concierge.connect(this, AnonymousConciergeIDP()) + } else { + Concierge.disconnect(this, object : BasicResultCallback { + override fun onException(exception: FlybitsException) {} + + override fun onSuccess() {} + }) + } + return true + } + return super.onOptionsItemSelected(item) + } +} + +@Parcelize +class CardOffer(var title: String? = null, + var header: String? = null,) : BaseTemplate() {} + +class CardOfferViewProvider: FlybitsViewProvider { + override fun getClassType(): Class { + return CardOffer::class.java + } + + override fun getContentType(): String { + return "card-offer" + } + + override fun onCreateViewHolder(parent: ViewGroup): FlybitsViewHolder { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.card_offer_custom_template, parent, false) + + return CardOfferViewHolder(view) + } + + override fun onPushOpened(model: CardOffer, flybitsNavigator: FlybitsNavigator) { + } +} + +class CardOfferViewHolder(val view: View): FlybitsViewHolder(view) { + override fun bindData(data: CardOffer, flybitsNavigator: FlybitsNavigator) { + val title: TextView? = view.findViewById(R.id.card_offer_title) + val header: TextView? = view.findViewById(R.id.card_offer_header) + + title?.text = data.title + header?.text = data.header + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/card_offer_custom_template.xml b/app/src/main/res/layout/card_offer_custom_template.xml new file mode 100644 index 0000000..1ec905f --- /dev/null +++ b/app/src/main/res/layout/card_offer_custom_template.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 218d719..c50a258 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -2,7 +2,8 @@ + android:label="Custom View Provider" + app:startDestination="@id/custom_view_provider"> - + + + \ No newline at end of file