diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0103cfaf4..a4fc6cf66 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -69,8 +69,7 @@
-
-
+
-
+
-
+ tools:node="remove">
+
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/AreaSelectActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/AreaSelectActivity.kt
new file mode 100644
index 000000000..c196205fa
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/AreaSelectActivity.kt
@@ -0,0 +1,64 @@
+package com.yizhuan.erban.ui.setting
+
+import android.content.Context
+import android.content.Intent
+import androidx.activity.viewModels
+import com.netease.nim.uikit.StatusBarUtil
+import com.yizhuan.erban.R
+import com.yizhuan.erban.avroom.anotherroompk.RoomPKCreateActivity
+import com.yizhuan.erban.base.BaseViewBindingActivity
+import com.yizhuan.erban.databinding.ActivityAreaSelectBinding
+import com.yizhuan.erban.ui.setting.adapter.PartitionAdapter
+import com.yizhuan.erban.ui.setting.viewmodel.SetViewModel
+import com.yizhuan.xchat_android_library.utils.ResUtil
+
+/**
+ * 切换语言
+ * Created by wushaocheng on 2023/05/18.
+ */
+class AreaSelectActivity : BaseViewBindingActivity() {
+
+ private val setViewModel: SetViewModel by viewModels()
+ private val mPartitionAdapter by lazy { PartitionAdapter() }
+
+ companion object {
+ fun start(context: Context) {
+ val starter = Intent(context, AreaSelectActivity::class.java)
+ context.startActivity(starter)
+ }
+ }
+
+ override fun init() {
+ initWhiteTitleBar("分区")
+
+ binding.recyclerView.adapter = mPartitionAdapter
+
+ setViewModel.partitionLiveData.observe(this) {
+ mPartitionAdapter.setSelectId(it.userPartitionId)
+ mPartitionAdapter.setNewData(it.partitionInfos)
+ }
+
+ setViewModel.changePartitionLiveData.observe(this) {
+ toast("切换成功")
+ }
+
+ mPartitionAdapter.setOnItemClickListener { _, _, position ->
+ mPartitionAdapter.getItem(position)?.id?.let { setViewModel.changePartition(it) }
+ mPartitionAdapter.setSelectPosition(position)
+ mPartitionAdapter.notifyDataSetChanged()
+ }
+
+ setViewModel.getPartitionList()
+ }
+
+ override fun needSteepStateBar(): Boolean {
+ return true
+ }
+
+ override fun setStatusBar() {
+ super.setStatusBar()
+ StatusBarUtil.transparencyBar(this)
+ StatusBarUtil.StatusBarLightMode(this)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt
index 153adeec7..a747a76f7 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt
@@ -72,6 +72,7 @@ class SettingActivity : BaseViewBindingActivity(), View.
binding.tvShieldManager.setOnClickListener(this)
binding.rlyPermission.setOnClickListener(this)
binding.rlyCheck.setOnClickListener(this)
+ binding.rlyArea.setOnClickListener(this)
}
@SuppressLint("CheckResult")
@@ -135,6 +136,7 @@ class SettingActivity : BaseViewBindingActivity(), View.
R.id.tv_shield_manager -> ShieldManageActivity.start(context)
R.id.rly_permission -> PermissionGuideActivity.start(context)
R.id.rly_check -> AppUpgradeHelper.checkAppUpgrade(this, dialogManager)
+ R.id.rly_area -> AreaSelectActivity.start(this)
}
}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/adapter/PartitionAdapter.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/adapter/PartitionAdapter.kt
new file mode 100644
index 000000000..80998e5af
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/adapter/PartitionAdapter.kt
@@ -0,0 +1,34 @@
+package com.yizhuan.erban.ui.setting.adapter
+
+import androidx.constraintlayout.widget.ConstraintLayout
+import com.chad.library.adapter.base.BaseQuickAdapter
+import com.chad.library.adapter.base.BaseViewHolder
+import com.yizhuan.erban.R
+import com.yizhuan.xchat_android_core.set.bean.PartitionBean
+
+class PartitionAdapter :
+ BaseQuickAdapter(R.layout.item_partition) {
+ private var selectPosition = -1
+ private var selectId = 0
+
+ fun setSelectPosition(selectPosition: Int) {
+ this.selectPosition = selectPosition
+ }
+
+ fun setSelectId(selectId: Int) {
+ this.selectId = selectId
+ }
+
+ override fun convert(helper: BaseViewHolder, item: PartitionBean) {
+ helper.setText(R.id.tvArea, item.desc)
+ val isSelect = selectPosition == helper.layoutPosition
+ if (selectId == item.id && selectPosition == -1) {
+ helper.getView(R.id.cs_bg).isSelected = true
+ } else if (selectPosition != -1) {
+ helper.getView(R.id.cs_bg).isSelected = isSelect
+ } else {
+ helper.getView(R.id.cs_bg).isSelected = false
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt
index 5ef7377a5..e3efa5c5c 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt
@@ -4,6 +4,8 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.yizhuan.erban.base.BaseViewModel
import com.yizhuan.xchat_android_core.bean.response.ListResult
+import com.yizhuan.xchat_android_core.set.bean.PartitionBean
+import com.yizhuan.xchat_android_core.set.bean.PartitionInfoBean
import com.yizhuan.xchat_android_core.set.bean.ShieldInfo
import com.yizhuan.xchat_android_core.set.model.SetModel
import com.yizhuan.xchat_android_core.utils.toast
@@ -16,6 +18,12 @@ class SetViewModel : BaseViewModel() {
private val _unMaskLiveData = MutableLiveData()
val unMaskLiveData: LiveData = _unMaskLiveData
+ private val _partitionLiveData = MutableLiveData()
+ val partitionLiveData: LiveData = _partitionLiveData
+
+ private val _changePartitionLiveData = MutableLiveData()
+ val changePartitionLiveData: LiveData = _changePartitionLiveData
+
fun getShieldRoom(pageNum: Int, pageSize: Int) {
safeLaunch(
onError = {
@@ -38,4 +46,28 @@ class SetViewModel : BaseViewModel() {
)
}
+ /**
+ * 获取用户当前分区和分区列表
+ */
+ fun getPartitionList() {
+ safeLaunch(
+ true,
+ block = {
+ _partitionLiveData.value = SetModel.getPartitionList()
+ }
+ )
+ }
+
+ /**
+ * 切换分区
+ */
+ fun changePartition(partitionId : Int) {
+ safeLaunch(
+ true,
+ block = {
+ _changePartitionLiveData.value = SetModel.changePartition(partitionId)
+ }
+ )
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java b/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java
index 6ae70126b..d1cc3f467 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java
@@ -61,6 +61,7 @@ import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.util.HashMap;
+import java.util.Locale;
/**
* html js 与webview 交互接口
@@ -473,6 +474,7 @@ public class JSInterface {
jsonObject.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context)));
jsonObject.put("deviceId", DeviceUtil.getDeviceId(context));
jsonObject.put("channel", AppMetaDataUtil.getChannelID());
+ jsonObject.put("accept-language", Locale.getDefault().getLanguage());
Log.e(TAG, "getDeviceInfo: " + jsonObject);
return jsonObject.toJSONString();
}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java b/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java
index c1b74a345..750aa478e 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java
@@ -15,6 +15,8 @@ import com.yizhuan.xchat_android_core.Constants;
import com.yizhuan.xchat_android_library.utils.AppUtils;
import com.yizhuan.xchat_android_library.utils.VersionUtil;
+import java.util.Locale;
+
/**
* html js 与webview 交互接口
* Created by ${user} on 2017/11/6.
@@ -110,6 +112,7 @@ public class SimpleJSInterface {
jsonObject.put("appVersion", VersionUtil.getLocalName(context));
jsonObject.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context)));
jsonObject.put("channel", getChannel());
+ jsonObject.put("accept-language", Locale.getDefault().getLanguage());
Log.e(TAG, "getDeviceInfo: " + jsonObject);
return jsonObject.toJSONString();
}
diff --git a/app/src/main/res/drawable/bg_ededed.xml b/app/src/main/res/drawable/bg_ededed.xml
new file mode 100644
index 000000000..96cb009ea
--- /dev/null
+++ b/app/src/main/res/drawable/bg_ededed.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_ffffff.xml b/app/src/main/res/drawable/bg_ffffff.xml
new file mode 100644
index 000000000..83c737d41
--- /dev/null
+++ b/app/src/main/res/drawable/bg_ffffff.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_partition_bg.xml b/app/src/main/res/drawable/selector_partition_bg.xml
new file mode 100644
index 000000000..a11f1d7b1
--- /dev/null
+++ b/app/src/main/res/drawable/selector_partition_bg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_area_select.xml b/app/src/main/res/layout/activity_area_select.xml
new file mode 100644
index 000000000..87bd474ff
--- /dev/null
+++ b/app/src/main/res/layout/activity_area_select.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
index 60106591e..11461f0e0 100644
--- a/app/src/main/res/layout/activity_setting.xml
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -414,6 +414,40 @@
tools:ignore="SpUsage" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index a77557998..d9b1ec314 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -2,22 +2,20 @@
&app_name;
- 暫無消息
- 網絡不給力
- 網絡異常,加載失敗
- 點擊刷新
- 加載中…
- 點擊或者下拉嘗試刷新
- 確定
+ لا أخبار
+ الشبكة ليست قوية
+ فشل تحميل استثناء الشبكة
+ انقر للتحديث
+ تحميل …
+ انقر أو اسحب لأسفل لمحاولة التحديث
+ تأكد
يلغي
استثناء الشبكة ، يرجى المحاولة مرة أخرى
-
هدية
إرتد ملابس
-
تسجيل الدخول عبر الفيسبوك
تسجيل الدخول
Googleتسجيل الدخول عبر
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index fc8cb5dc0..e98ce5866 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -3,21 +3,19 @@
&app_name;
- 暫無消息
- 網絡不給力
- 網絡異常,加載失敗
- 點擊刷新
- 加載中…
- 點擊或者下拉嘗試刷新
- 確定
+ no news
+ network is not strong
+ network exception, failed to load
+ click to refresh
+ loading…
+ click or pull down to try to refresh
+ Sure
Cancel
Network exception, please try again
-
Gift
Dress up
-
Facebook login
Login
Google login
@@ -67,7 +65,7 @@
The image is not selected
No camera
Hint
- Compressing photos...
+ Compressing photos…
"%1$s picture compression failed: %2$s picturePath:%3$s"
"image with cropping failure"
"there are pictures that failed to compress"
@@ -171,7 +169,7 @@
Search user id
Search room name or id
Please enter the room name or id
- Online...
+ Online…
Customer service
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 58582cd3f..5ce80bf88 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -3,13 +3,13 @@
&app_name;
- 暫無消息
- 網絡不給力
- 網絡異常,加載失敗
- 點擊刷新
- 加載中…
- 點擊或者下拉嘗試刷新
- 確定
+ tidak ada pesan
+ jaringan tidak kuat
+ pengecualian jaringan, gagal dimuat
+ klik untuk menyegarkan
+ memuat…
+ klik atau tarik ke bawah untuk menyegarkan
+ konfirmasi
Batal
Pengecualian jaringan, harap coba lagi
Hadiah
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index cacdabf13..c5eeae923 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -3,20 +3,19 @@
&app_name;
- 暫無消息
- 網絡不給力
- 網絡異常,加載失敗
- 點擊刷新
- 加載中…
- 點擊或者下拉嘗試刷新
- 確定
+ haber yok
+ Ağ güçlü değil
+ Ağ istisnası, yüklenemedi
+ yenilemek için tıklayın
+ Yükleniyor…
+ Yenilemeyi denemek için tıklayın veya aşağı çekin
+ Elbette
İptal etmek
Ağ istisnası, lütfen tekrar deneyin
Hediye
giyinmek
-
facebook girişi
Giriş yapmak
Google girişi
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionBean.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionBean.kt
new file mode 100644
index 000000000..70f2b1256
--- /dev/null
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionBean.kt
@@ -0,0 +1,7 @@
+package com.yizhuan.xchat_android_core.set.bean
+
+data class PartitionBean(
+ val id: Int,
+ val desc: String ?= null,
+ val languages: List ?= null
+)
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionInfoBean.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionInfoBean.kt
new file mode 100644
index 000000000..b93f53322
--- /dev/null
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionInfoBean.kt
@@ -0,0 +1,6 @@
+package com.yizhuan.xchat_android_core.set.bean
+
+data class PartitionInfoBean(
+ val userPartitionId: Int,
+ val partitionInfos: List ?= null
+)
diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt
index c4ccb25e6..8f29628dd 100644
--- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt
+++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt
@@ -3,6 +3,8 @@ package com.yizhuan.xchat_android_core.set.model
import com.yizhuan.xchat_android_core.base.BaseModel
import com.yizhuan.xchat_android_core.bean.response.ServiceResult
import com.yizhuan.xchat_android_core.home.bean.*
+import com.yizhuan.xchat_android_core.set.bean.PartitionBean
+import com.yizhuan.xchat_android_core.set.bean.PartitionInfoBean
import com.yizhuan.xchat_android_core.set.bean.ShieldInfo
import com.yizhuan.xchat_android_core.utils.net.launchRequest
import com.yizhuan.xchat_android_library.net.rxnet.RxNet
@@ -25,6 +27,16 @@ object SetModel : BaseModel() {
api.setUnMask(roomUid, type)
}
+ suspend fun getPartitionList(): PartitionInfoBean? =
+ launchRequest {
+ api.getPartitionList()
+ }
+
+ suspend fun changePartition(partitionId : Int): String? =
+ launchRequest {
+ api.changePartition(partitionId)
+ }
+
private interface Api {
/**
@@ -47,6 +59,20 @@ object SetModel : BaseModel() {
@Query("type") type: Int
): ServiceResult
+ /**
+ * 获取用户分区和分区列表
+ * @return
+ */
+ @GET("/partition/get")
+ suspend fun getPartitionList(): ServiceResult
+
+ /**
+ * 切换分区
+ * @return
+ */
+ @POST("/partition/change")
+ suspend fun changePartition(@Query("partitionId") partitionId: Int): ServiceResult
+
}
}
\ No newline at end of file