1.优化反地理编码逻辑,百度失败就用Mapbox,Mapbox失败就用百度
2.修复开启直播成功的提示被宠物在附近覆盖 3.优化注册页面隐私和条款多语言显示
This commit is contained in:
@@ -59,6 +59,7 @@ data class SubscriptionsOrderBean(
|
|||||||
var isRefundable: Int,//是否显示退款按钮 1:是 0:否
|
var isRefundable: Int,//是否显示退款按钮 1:是 0:否
|
||||||
@MultipleEntity var menuType: Int,
|
@MultipleEntity var menuType: Int,
|
||||||
var renewNum: String,
|
var renewNum: String,
|
||||||
|
var paymentMethodInfo: String,
|
||||||
var createUserId: String,//这个订单是由哪个用户创建的
|
var createUserId: String,//这个订单是由哪个用户创建的
|
||||||
var isUpdateOrder: Int = 0//是否是升级订单 1:是 0:否
|
var isUpdateOrder: Int = 0//是否是升级订单 1:是 0:否
|
||||||
) : Parcelable, MultiItemEntity {
|
) : Parcelable, MultiItemEntity {
|
||||||
@@ -107,7 +108,7 @@ data class SubscriptionsOrderBean(
|
|||||||
0L,
|
0L,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
menuType, "", "",
|
menuType, "", "", "",
|
||||||
0
|
0
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -156,7 +157,7 @@ data class SubscriptionsOrderBean(
|
|||||||
0L,
|
0L,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
MultipleEntity.TEXT, "", "",
|
MultipleEntity.TEXT, "", "", "",
|
||||||
0
|
0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,7 @@ class SplashActivity : QMUIActivity() {
|
|||||||
// 清除所有通知,角标数字
|
// 清除所有通知,角标数字
|
||||||
notificationManager.cancelAll()
|
notificationManager.cancelAll()
|
||||||
|
|
||||||
|
//获取服务器请求密钥
|
||||||
val encodedAppSecret = Util.getMetadata(applicationContext, KeyNames.HTTP_REQUEST_KEY)
|
val encodedAppSecret = Util.getMetadata(applicationContext, KeyNames.HTTP_REQUEST_KEY)
|
||||||
val sb = StringBuilder(encodedAppSecret)
|
val sb = StringBuilder(encodedAppSecret)
|
||||||
sb.deleteCharAt(5)
|
sb.deleteCharAt(5)
|
||||||
@@ -267,7 +268,6 @@ class SplashActivity : QMUIActivity() {
|
|||||||
if (AppUtils.isChina()) {
|
if (AppUtils.isChina()) {
|
||||||
regToWx()
|
regToWx()
|
||||||
} else {
|
} else {
|
||||||
initMapbox()
|
|
||||||
try {
|
try {
|
||||||
//stripe支付
|
//stripe支付
|
||||||
val stripeKey = ThirdPartyUtil.instance.getStripeKey(applicationContext)
|
val stripeKey = ThirdPartyUtil.instance.getStripeKey(applicationContext)
|
||||||
@@ -277,17 +277,13 @@ class SplashActivity : QMUIActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppUtils.isDebug()) {
|
|
||||||
//方便调试测试只使用谷歌地图情况
|
|
||||||
initMapbox()
|
|
||||||
}
|
|
||||||
|
|
||||||
//腾讯bugly初始化
|
//腾讯bugly初始化
|
||||||
// val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME)
|
// val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME)
|
||||||
// CrashReport.initCrashReport(applicationContext, buglyKey, AppUtils.isDebug())
|
// CrashReport.initCrashReport(applicationContext, buglyKey, AppUtils.isDebug())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initMapbox() {
|
// private fun initMapbox() {
|
||||||
// try {
|
// try {
|
||||||
// val mapboxAccessToken =
|
// val mapboxAccessToken =
|
||||||
// Util.getMetadata(applicationContext, KeyNames.MAPBOX_ACCESS_TOKEN)
|
// Util.getMetadata(applicationContext, KeyNames.MAPBOX_ACCESS_TOKEN)
|
||||||
@@ -297,7 +293,7 @@ class SplashActivity : QMUIActivity() {
|
|||||||
// } catch (e: Exception) {
|
// } catch (e: Exception) {
|
||||||
// LogUtil.e("MapboxSearchSdk initialize多次初始化异常")
|
// LogUtil.e("MapboxSearchSdk initialize多次初始化异常")
|
||||||
// }
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注册到微信
|
* 注册到微信
|
||||||
|
|||||||
@@ -121,8 +121,8 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
|||||||
|
|
||||||
//直播时间 分钟
|
//直播时间 分钟
|
||||||
private var mLiveTime = 5
|
private var mLiveTime = 5
|
||||||
private lateinit var mSpeedUnit: String
|
private var mSpeedUnit: String = ""
|
||||||
private lateinit var mDistanceUnit: String
|
private var mDistanceUnit: String = ""
|
||||||
|
|
||||||
//是否打开了找设备的声音
|
//是否打开了找设备的声音
|
||||||
private var isOpenSound = false
|
private var isOpenSound = false
|
||||||
@@ -173,6 +173,7 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
|||||||
isLiveJump
|
isLiveJump
|
||||||
) { mapLoadOk() }
|
) { mapLoadOk() }
|
||||||
|
|
||||||
|
//修改百度地图定位时间间隔15秒
|
||||||
if (AppUtils.isChina()) BaiduLocationManager.setScanSpan(15)
|
if (AppUtils.isChina()) BaiduLocationManager.setScanSpan(15)
|
||||||
|
|
||||||
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
ViewUtil.instance.setMapSwitchLocationButtonImage(
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class RefundDetailsActivity :
|
|||||||
mSetMealBean?.let {
|
mSetMealBean?.let {
|
||||||
tvRefundDetailsPlanName.text = it.mealName
|
tvRefundDetailsPlanName.text = it.mealName
|
||||||
tvRefundDetailsOrderId.text = it.renewNum
|
tvRefundDetailsOrderId.text = it.renewNum
|
||||||
|
tvRefundDetailsPaidMethod.text = it.paymentMethodInfo
|
||||||
tvRefundDetailsRefundAmount.text =
|
tvRefundDetailsRefundAmount.text =
|
||||||
String.format(getString(R.string.txt_money_unit), "${it.totalAmountWithTax}")
|
String.format(getString(R.string.txt_money_unit), "${it.totalAmountWithTax}")
|
||||||
tvRefundDetailsOrderTime.text =
|
tvRefundDetailsOrderTime.text =
|
||||||
|
|||||||
@@ -58,54 +58,16 @@ class CreateAccountV2OneFragment : BaseFragment<FragmentCreateAccountV2OneBindin
|
|||||||
mContext!!,
|
mContext!!,
|
||||||
it.rlEtInputLayout,
|
it.rlEtInputLayout,
|
||||||
tvEmailErrorTipCreateAccountV2,
|
tvEmailErrorTipCreateAccountV2,
|
||||||
it.etInputContent, true
|
it.etInputContent,
|
||||||
|
true
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val privacyAndTerms = getString(R.string.txt_read_and_accept)
|
setOnClickListenerViews(
|
||||||
setSpannableClick(
|
btnCreateAccountV2Continue,
|
||||||
ilCreateAccountV2PolicyTermsCheck.tvLoginAgreePrivacyContent,
|
ilCreateAccountV2PolicyTermsCheck.tvLoginAgreePrivacyContent,
|
||||||
privacyAndTerms.substringBeforeLast("Te"),
|
ilCreateAccountV2PolicyTermsCheck.tvLoginAgreeTermsContent
|
||||||
privacyAndTerms.substringAfterLast("&")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
setOnClickListenerViews(btnCreateAccountV2Continue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setSpannableClick(textView: TextView, str1: String, str2: String) {
|
|
||||||
try {
|
|
||||||
textView.apply {
|
|
||||||
val span1 = SpannableString(str1)
|
|
||||||
span1.setSpan(object : ClickableSpan() {
|
|
||||||
override fun onClick(v: View) {
|
|
||||||
ViewUtil.instance.goHtmlAssetContent(
|
|
||||||
mActivity!!,
|
|
||||||
getString(R.string.txt_privacy_policy),
|
|
||||||
getString(R.string.txt_privacy_html)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}, 7, 21, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
|
|
||||||
|
|
||||||
val span2 = SpannableString(str2)
|
|
||||||
span2.setSpan(object : ClickableSpan() {
|
|
||||||
override fun onClick(v: View) {
|
|
||||||
ViewUtil.instance.goHtmlAssetContent(
|
|
||||||
mActivity!!,
|
|
||||||
getString(R.string.txt_service_contract),
|
|
||||||
getString(R.string.txt_terms_html)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}, 1, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
|
|
||||||
|
|
||||||
val spannableStringBuilder = SpannableStringBuilder()
|
|
||||||
spannableStringBuilder.append(span1)
|
|
||||||
spannableStringBuilder.append(span2)
|
|
||||||
text = spannableStringBuilder
|
|
||||||
movementMethod = LinkMovementMethod.getInstance()
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
LogUtil.e("解析同意隐私政策错误${e.message}")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,9 +136,19 @@ class CreateAccountV2OneFragment : BaseFragment<FragmentCreateAccountV2OneBindin
|
|||||||
override fun onClick(v: View?) {
|
override fun onClick(v: View?) {
|
||||||
mViewBinding.apply {
|
mViewBinding.apply {
|
||||||
when (v!!) {
|
when (v!!) {
|
||||||
btnCreateAccountV2Continue -> {
|
btnCreateAccountV2Continue -> continueClick()
|
||||||
continueClick()
|
|
||||||
}
|
ilCreateAccountV2PolicyTermsCheck.tvLoginAgreePrivacyContent -> ViewUtil.instance.goHtmlAssetContent(
|
||||||
|
mActivity!!,
|
||||||
|
getString(R.string.txt_privacy_policy),
|
||||||
|
getString(R.string.txt_privacy_html)
|
||||||
|
)
|
||||||
|
|
||||||
|
ilCreateAccountV2PolicyTermsCheck.tvLoginAgreeTermsContent -> ViewUtil.instance.goHtmlAssetContent(
|
||||||
|
mActivity!!,
|
||||||
|
getString(R.string.txt_service_contract),
|
||||||
|
getString(R.string.txt_terms_html)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -423,10 +423,10 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
|||||||
val data1 = SRBleCmdUtil.instance.byteToInt(data[1])
|
val data1 = SRBleCmdUtil.instance.byteToInt(data[1])
|
||||||
// val data2 = SRBleCmdUtil.instance.byteToInt(data[2])
|
// val data2 = SRBleCmdUtil.instance.byteToInt(data[2])
|
||||||
if (data0 == 0x2C && data1 == 1) {
|
if (data0 == 0x2C && data1 == 1) {
|
||||||
|
stopRefreshLocation()
|
||||||
getHomeV2Activity()?.getPet(false)?.let {
|
getHomeV2Activity()?.getPet(false)?.let {
|
||||||
mMapViewModel.getMapDeviceStatus(it.deviceId, false)
|
mMapViewModel.getMapDeviceStatus(it.deviceId, false)
|
||||||
}
|
}
|
||||||
stopRefreshLocation()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ class GeoCoderViewModel : ViewModel() {
|
|||||||
//是否显示详细地址信息
|
//是否显示详细地址信息
|
||||||
private var isShowDetailAddress = true
|
private var isShowDetailAddress = true
|
||||||
|
|
||||||
|
//百度反地理失败是否切换为mapbox反地理编码/mapbox反地理失败是否切换为百度反地理编码,默认切换
|
||||||
|
private var isChangeWayAgain = true
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 反地理编码
|
* 反地理编码
|
||||||
* 使用原生gps(WGS84)坐标
|
* 使用原生gps(WGS84)坐标
|
||||||
@@ -69,7 +72,7 @@ class GeoCoderViewModel : ViewModel() {
|
|||||||
}
|
}
|
||||||
mLon = longitude
|
mLon = longitude
|
||||||
mLat = latitude
|
mLat = latitude
|
||||||
|
isChangeWayAgain = true
|
||||||
if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) {
|
if (AppUtils.isChina(AppUtils.SWITCH_MAP_TYPE)) {
|
||||||
baiduMapReverseGeocoder(latitude, longitude)
|
baiduMapReverseGeocoder(latitude, longitude)
|
||||||
} else {
|
} else {
|
||||||
@@ -96,9 +99,11 @@ class GeoCoderViewModel : ViewModel() {
|
|||||||
), object : SearchCallback {
|
), object : SearchCallback {
|
||||||
override fun onError(e: Exception) {
|
override fun onError(e: Exception) {
|
||||||
LogUtil.e(" Mapbox反地理编码error,${e.message}")
|
LogUtil.e(" Mapbox反地理编码error,${e.message}")
|
||||||
// mLatLonAddressLiveData.value = ""
|
if (isChangeWayAgain) {
|
||||||
|
isChangeWayAgain = false
|
||||||
baiduMapReverseGeocoder(latitude, longitude)
|
baiduMapReverseGeocoder(latitude, longitude)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onResults(
|
override fun onResults(
|
||||||
results: List<SearchResult>, responseInfo: ResponseInfo
|
results: List<SearchResult>, responseInfo: ResponseInfo
|
||||||
@@ -152,10 +157,12 @@ class GeoCoderViewModel : ViewModel() {
|
|||||||
LogUtil.e("Mapbox反地理编码:$mAddress")
|
LogUtil.e("Mapbox反地理编码:$mAddress")
|
||||||
mLatLonAddressLiveData.value = mAddress
|
mLatLonAddressLiveData.value = mAddress
|
||||||
} else {
|
} else {
|
||||||
// mLatLonAddressLiveData.value = ""-
|
if (isChangeWayAgain) {
|
||||||
|
isChangeWayAgain = false
|
||||||
baiduMapReverseGeocoder(latitude, longitude)
|
baiduMapReverseGeocoder(latitude, longitude)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,6 +181,10 @@ class GeoCoderViewModel : ViewModel() {
|
|||||||
override fun onGetReverseGeoCodeResult(result: ReverseGeoCodeResult?) {
|
override fun onGetReverseGeoCodeResult(result: ReverseGeoCodeResult?) {
|
||||||
if (null == result || result.error != com.baidu.mapapi.search.core.SearchResult.ERRORNO.NO_ERROR) {
|
if (null == result || result.error != com.baidu.mapapi.search.core.SearchResult.ERRORNO.NO_ERROR) {
|
||||||
LogUtil.e("百度地图反向地理编码没有找到检索结果,${result?.error}")
|
LogUtil.e("百度地图反向地理编码没有找到检索结果,${result?.error}")
|
||||||
|
if (isChangeWayAgain) {
|
||||||
|
isChangeWayAgain = false
|
||||||
|
mapBoxReverseGeocoder(latitude, longitude)
|
||||||
|
}
|
||||||
//没有找到检索结果
|
//没有找到检索结果
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -35,11 +35,20 @@
|
|||||||
layout="@layout/layout_map_device_battery" />
|
layout="@layout/layout_map_device_battery" />
|
||||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/il_live_v3_map_device_msg"
|
||||||
|
layout="@layout/item_home_map_device_msg"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_marginTop="@dimen/dp_6"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout
|
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout
|
||||||
android:id="@+id/ll_live_v2_state_layout"
|
android:id="@+id/ll_live_v2_state_layout"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="@dimen/dp_34"
|
android:layout_height="@dimen/dp_34"
|
||||||
|
android:layout_below="@id/il_live_v3_map_device_msg"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/dp_8"
|
android:layout_marginTop="@dimen/dp_8"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
@@ -66,15 +75,6 @@
|
|||||||
|
|
||||||
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout>
|
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout>
|
||||||
|
|
||||||
<include
|
|
||||||
android:id="@+id/il_live_v3_map_device_msg"
|
|
||||||
layout="@layout/item_home_map_device_msg"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:layout_marginTop="@dimen/dp_6"
|
|
||||||
android:visibility="gone" />
|
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.NonSwipeRecyclerView
|
<com.abbidot.tracker.widget.NonSwipeRecyclerView
|
||||||
android:id="@+id/rv_map_live_v2_device_state"
|
android:id="@+id/rv_map_live_v2_device_state"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
@@ -1,29 +1,47 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatCheckBox
|
<androidx.appcompat.widget.AppCompatCheckBox
|
||||||
android:id="@+id/cb_login_agree_privacy_checkbox"
|
android:id="@+id/cb_login_agree_privacy_checkbox"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:drawablePadding="0dp"
|
android:minWidth="0dp"
|
||||||
|
android:minHeight="0dp"
|
||||||
|
android:text="@string/register_txt_agree1"
|
||||||
android:textColor="@color/select_color3"
|
android:textColor="@color/select_color3"
|
||||||
android:textSize="0sp" />
|
android:textSize="@dimen/textSize12" />
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.TypefaceTextView
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
android:id="@+id/tv_login_agree_privacy_content"
|
android:id="@+id/tv_login_agree_privacy_content"
|
||||||
style="@style/my_TextView_style"
|
style="@style/my_TextView_style"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_marginHorizontal="@dimen/dp_2"
|
||||||
android:layout_marginStart="@dimen/dp_32"
|
android:text="@string/txt_privacy_policy"
|
||||||
android:layout_marginEnd="@dimen/dp_2"
|
android:textColor="@color/txt_policy_color"
|
||||||
android:gravity="start"
|
android:textSize="@dimen/textSize12"
|
||||||
android:text="@string/txt_read_and_accept"
|
app:typeface="@string/roboto_regular_font" />
|
||||||
|
|
||||||
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
|
style="@style/my_TextView_style"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:text="@string/register_txt_agree2"
|
||||||
android:textColor="@color/select_color3"
|
android:textColor="@color/select_color3"
|
||||||
android:textSize="@dimen/textSize12"
|
android:textSize="@dimen/textSize12"
|
||||||
app:typeface="@string/roboto_regular_font" />
|
app:typeface="@string/roboto_regular_font" />
|
||||||
|
|
||||||
</RelativeLayout>
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
|
android:id="@+id/tv_login_agree_terms_content"
|
||||||
|
style="@style/my_TextView_style"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_marginHorizontal="@dimen/dp_2"
|
||||||
|
android:text="@string/register_txt_terms"
|
||||||
|
android:textColor="@color/txt_policy_color"
|
||||||
|
android:textSize="@dimen/textSize12"
|
||||||
|
app:typeface="@string/roboto_regular_font" />
|
||||||
|
|
||||||
|
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||||
@@ -1032,4 +1032,5 @@
|
|||||||
<string name="txt_refund_failed">Refund Failed</string>
|
<string name="txt_refund_failed">Refund Failed</string>
|
||||||
<string name="txt_refund_declined">Refund Declined</string>
|
<string name="txt_refund_declined">Refund Declined</string>
|
||||||
<string name="txt_refund_pending">Refund Pending</string>
|
<string name="txt_refund_pending">Refund Pending</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user