Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- Fix: Replace LifecycleOwner with ViewTreeLifecycleOwner in VirtusizeInPageStandart to prevent an infinite loading in fragments
- Fix: Add prefix 'virtusize_' to all drawables' names to prevent conflicts with client's resources
- Fix: Fix user auth data storing
= Fix: Add loading animation for VirtusizeInPageViews

### 2.12.0
- Feature: Update Flutter SDK implementation to be compatible with latest changes
Expand Down
4 changes: 4 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ agp = "8.6.0"
androidxComposeBom = "2024.06.00"
androidxTestCore = "1.6.1"
appcompat = "1.7.0"
coil = "2.6.0"
coilGif = "2.6.0"
coreKtx = "1.13.1"
fragment = "1.8.2"
json = "20230227"
Expand Down Expand Up @@ -47,6 +49,8 @@ truth = { group = "com.google.truth", name = "truth", version.ref = "truth" }
virtusize = { group = "com.virtusize.android", name = "virtusize", version.ref = "virtusize" }
virtusize-auth = { module = "com.virtusize.android:virtusize-auth", version.ref = "virtusizeAuth" }
androidx-browser = { group = "androidx.browser", name = "browser", version.ref = "browser" }
coil = { group = "io.coil-kt", name = "coil", version = "2.6.0" }
coil-gif = { group = "io.coil-kt", name = "coil-gif", version = "2.6.0" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
Expand Down
3 changes: 3 additions & 0 deletions virtusize/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ dependencies {
implementation(libs.kotlinx.coroutines.android)
implementation(libs.androidx.lifecycle.runtime)

implementation(libs.coil)
implementation(libs.coil.gif)

debugImplementation(libs.androidx.compose.ui.tooling)

testImplementation(libs.androidx.test.core)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ import android.view.View
import androidx.annotation.ColorInt
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat
import coil.ImageLoader
import coil.decode.GifDecoder
import coil.request.ImageRequest
import com.virtusize.android.R
import com.virtusize.android.data.local.VirtusizeLanguage
import com.virtusize.android.data.local.VirtusizeMessageHandler
Expand Down Expand Up @@ -69,7 +72,7 @@ class VirtusizeInPageMini
if (visibility == View.GONE) {
View.GONE
} else {
View.INVISIBLE
View.VISIBLE
}
val attrsArray =
context.obtainStyledAttributes(attrs, R.styleable.VirtusizeInPageMini, 0, 0)
Expand All @@ -94,6 +97,19 @@ class VirtusizeInPageMini
)
attrsArray.recycle()
setStyle()
// Coil GIF loading
val imageLoader =
ImageLoader.Builder(context)
.components {
add(GifDecoder.Factory())
}
.build()
val request =
ImageRequest.Builder(context)
.data(R.drawable.virtusize_loading)
.target(binding.gifImageView)
.build()
imageLoader.enqueue(request)
}

/**
Expand All @@ -105,6 +121,8 @@ class VirtusizeInPageMini
if (clientProduct!!.externalId == productWithPDC.externalId) {
clientProduct!!.productCheckData = productWithPDC.productCheckData
visibility = View.VISIBLE
binding.gifImageLayout.visibility = View.GONE
binding.inpageMiniLayout.visibility = View.VISIBLE
setupConfiguredLocalization()
setLoadingScreen(true)
setOnClickListener {
Expand Down Expand Up @@ -137,6 +155,8 @@ class VirtusizeInPageMini
if (clientProduct!!.externalId != externalProductId) {
return
}
binding.gifImageLayout.visibility = View.GONE
binding.inpageMiniLayout.visibility = View.VISIBLE
binding.inpageMiniLoadingText.visibility = View.GONE
binding.inpageMiniText.visibility = View.VISIBLE
binding.inpageMiniText.text =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ import androidx.core.view.ViewCompat
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeLifecycleOwner
import coil.ImageLoader
import coil.decode.GifDecoder
import coil.request.ImageRequest
import com.virtusize.android.R
import com.virtusize.android.Virtusize
import com.virtusize.android.data.local.VirtusizeErrorType
Expand Down Expand Up @@ -110,7 +113,7 @@ class VirtusizeInPageStandard
if (visibility == View.GONE) {
View.GONE
} else {
View.INVISIBLE
View.VISIBLE
}

val attrsArray =
Expand Down Expand Up @@ -157,6 +160,19 @@ class VirtusizeInPageStandard
}

setStyle()
// Coil GIF loading
val imageLoader =
ImageLoader.Builder(context)
.components {
add(GifDecoder.Factory())
}
.build()
val request =
ImageRequest.Builder(context)
.data(R.drawable.virtusize_loading)
.target(binding.gifImageView)
.build()
imageLoader.enqueue(request)
}

/**
Expand Down Expand Up @@ -211,6 +227,9 @@ class VirtusizeInPageStandard
if (clientProduct!!.externalId == productWithPDC.externalId) {
clientProduct!!.productCheckData = productWithPDC.productCheckData
visibility = View.VISIBLE
binding.gifImageLayout.visibility = View.GONE
binding.inpageCardView.visibility = View.VISIBLE
binding.inpageFooter.visibility = View.VISIBLE
setupConfiguredLocalization()
setLoadingScreen(true)
binding.inpageCardView.setOnClickListener {
Expand Down Expand Up @@ -291,6 +310,11 @@ class VirtusizeInPageStandard
if (clientProduct!!.externalId != externalProductId) {
return
}

binding.gifImageLayout.visibility = View.GONE
binding.inpageCardView.visibility = View.VISIBLE
binding.inpageFooter.visibility = View.VISIBLE

binding.inpageErrorScreenLayout.visibility = View.VISIBLE
binding.inpageLayout.visibility = View.GONE
binding.inpageCardView.cardElevation = 0f
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
135 changes: 78 additions & 57 deletions virtusize/src/main/res/layout/view_inpage_mini.xml
Original file line number Diff line number Diff line change
@@ -1,66 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/inpageMiniLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_gray_900"
android:orientation="vertical"
android:paddingStart="@dimen/virtusizeDp8"
android:paddingLeft="@dimen/virtusizeDp8"
android:paddingTop="@dimen/virtusize_inpage_mini_padding_vertical"
android:paddingEnd="@dimen/virtusizeDp8"
android:paddingRight="@dimen/virtusizeDp8"
android:paddingBottom="@dimen/virtusize_inpage_mini_padding_vertical">
android:orientation="vertical">

<ImageView
android:id="@+id/inpageMiniImageView"
android:layout_width="wrap_content"
android:layout_height="@dimen/virtusize_inpage_mini_image_height"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/virtusize_inpage_mini_image_marginEnd"
android:layout_marginRight="@dimen/virtusize_inpage_mini_image_marginEnd"
android:src="@drawable/ic_vs_icon_black"
android:visibility="gone" />
<LinearLayout
android:id="@+id/gifImageLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">

<ImageView
android:id="@+id/gifImageView"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:src="@drawable/virtusize_loading" />
</LinearLayout>

<TextView
android:id="@+id/inpageMiniText"
style="@style/VirtusizeInPageMiniTextStyle"
android:layout_toStartOf="@+id/inpageMiniButton"
android:layout_toLeftOf="@+id/inpageMiniButton"
android:layout_toEndOf="@+id/inpageMiniImageView"
android:layout_toRightOf="@+id/inpageMiniImageView"
android:textColor="@color/virtusizeWhite"
tools:text="@string/inpage_body_data_empty_text" />
<RelativeLayout
android:id="@+id/inpageMiniLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/color_gray_900"
android:orientation="vertical"
android:paddingStart="@dimen/virtusizeDp8"
android:paddingLeft="@dimen/virtusizeDp8"
android:paddingTop="@dimen/virtusize_inpage_mini_padding_vertical"
android:paddingEnd="@dimen/virtusizeDp8"
android:paddingRight="@dimen/virtusizeDp8"
android:paddingBottom="@dimen/virtusize_inpage_mini_padding_vertical"
android:visibility="gone">

<com.virtusize.android.ui.DotsLoadingTextView
android:id="@+id/inpageMiniLoadingText"
style="@style/VirtusizeInPageMiniTextStyle"
android:layout_toStartOf="@+id/inpageMiniButton"
android:layout_toLeftOf="@+id/inpageMiniButton"
android:layout_toEndOf="@+id/inpageMiniImageView"
android:layout_toRightOf="@+id/inpageMiniImageView"
android:textColor="@color/color_gray_900"
android:visibility="gone"
tools:text="@string/inpage_loading_text" />
<ImageView
android:id="@+id/inpageMiniImageView"
android:layout_width="wrap_content"
android:layout_height="@dimen/virtusize_inpage_mini_image_height"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/virtusize_inpage_mini_image_marginEnd"
android:layout_marginRight="@dimen/virtusize_inpage_mini_image_marginEnd"
android:src="@drawable/ic_vs_icon_black"
android:visibility="gone" />

<Button
android:id="@+id/inpageMiniButton"
style="@style/VirtusizeInPageButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/virtusize_inpage_mini_margin_between_message_button"
android:layout_marginLeft="@dimen/virtusize_inpage_mini_margin_between_message_button"
android:background="@drawable/virtusize_button_background_white"
android:drawableEnd="@drawable/ic_virtusize_arrow_right_black"
android:includeFontPadding="false"
android:minWidth="0dp"
android:minHeight="0dp"
android:textAllCaps="false"
android:textSize="@dimen/virtusize_inpage_default_textSize"
app:backgroundTint="@color/virtusizeWhite" />
</RelativeLayout>
<TextView
android:id="@+id/inpageMiniText"
style="@style/VirtusizeInPageMiniTextStyle"
android:layout_toStartOf="@+id/inpageMiniButton"
android:layout_toLeftOf="@+id/inpageMiniButton"
android:layout_toEndOf="@+id/inpageMiniImageView"
android:layout_toRightOf="@+id/inpageMiniImageView"
android:textColor="@color/virtusizeWhite"
tools:text="@string/inpage_body_data_empty_text" />

<com.virtusize.android.ui.DotsLoadingTextView
android:id="@+id/inpageMiniLoadingText"
style="@style/VirtusizeInPageMiniTextStyle"
android:layout_toStartOf="@+id/inpageMiniButton"
android:layout_toLeftOf="@+id/inpageMiniButton"
android:layout_toEndOf="@+id/inpageMiniImageView"
android:layout_toRightOf="@+id/inpageMiniImageView"
android:textColor="@color/color_gray_900"
android:visibility="gone"
tools:text="@string/inpage_loading_text" />

<Button
android:id="@+id/inpageMiniButton"
style="@style/VirtusizeInPageButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/virtusize_inpage_mini_margin_between_message_button"
android:layout_marginLeft="@dimen/virtusize_inpage_mini_margin_between_message_button"
android:background="@drawable/virtusize_button_background_white"
android:drawableEnd="@drawable/ic_virtusize_arrow_right_black"
android:includeFontPadding="false"
android:minWidth="0dp"
android:minHeight="0dp"
android:textAllCaps="false"
android:textSize="@dimen/virtusize_inpage_default_textSize"
app:backgroundTint="@color/virtusizeWhite" />
</RelativeLayout>
</LinearLayout>
21 changes: 19 additions & 2 deletions virtusize/src/main/res/layout/view_inpage_standard.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,30 @@
android:layout_height="wrap_content"
android:orientation="vertical">

<LinearLayout
android:id="@+id/gifImageLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">

<ImageView
android:id="@+id/gifImageView"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:src="@drawable/virtusize_loading" />

</LinearLayout>

<androidx.cardview.widget.CardView
android:id="@+id/inpageCardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/virtusize_inpage_standard_layout_margin"
android:background="@color/virtusizeWhite"
app:cardCornerRadius="0dp"
app:cardElevation="@dimen/virtusize_inpage_standard_layout_card_elevation">
app:cardElevation="@dimen/virtusize_inpage_standard_layout_card_elevation"
android:visibility="gone">

<LinearLayout
android:id="@+id/inpageErrorScreenLayout"
Expand Down Expand Up @@ -175,7 +191,8 @@
android:layout_marginLeft="@dimen/virtusize_inpage_standard_footer_horizontal_margin"
android:layout_marginTop="@dimen/virtusize_inpage_standard_footer_marginTop"
android:layout_marginEnd="@dimen/virtusize_inpage_standard_footer_horizontal_margin"
android:layout_marginRight="@dimen/virtusize_inpage_standard_footer_horizontal_margin">
android:layout_marginRight="@dimen/virtusize_inpage_standard_footer_horizontal_margin"
android:visibility="gone">

<ImageView
android:id="@+id/vsSignatureImageView"
Expand Down