Ver Fonte

feat: 任务中心

tongmengxiao há 8 meses atrás
pai
commit
b241d0f442

+ 26 - 1
app/src/main/java/com/swago/app/SplashActivity.kt

@@ -33,7 +33,32 @@ class SplashActivity : AppCompatActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_splash)
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE){
+            PermissionX.init(this@SplashActivity)
+                .permissions(
+                    Manifest.permission.READ_MEDIA_IMAGES,
+                    Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
+                )
+                .request { allGranted, grantedList, deniedList ->
+                    if (allGranted) {
+                        splashVm.getApiDomain()
+                        splashVm.jumpToLoginLiveData.observe(this){
+                            if (!it){
+                                ARouter.getInstance().build(ARouteConstant.Login.login).navigation()
+                                finish()
+                            }
+                        }
+                    } else {
+                        Toast.makeText(
+                            this@SplashActivity,
+                            getString(R.string.these_permissions_denied)+" $deniedList",
+                            Toast.LENGTH_LONG
+                        ).show()
+                        ARouter.getInstance().build(ARouteConstant.Login.login).navigation()
+                        finish()
+                    }
+                }
+        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
             PermissionX.init(this@SplashActivity)
                 .permissions(
                     Manifest.permission.READ_MEDIA_IMAGES,

+ 14 - 0
baseswago/src/main/java/com/swago/baseswago/util/FileUtil.kt

@@ -1,7 +1,9 @@
 package com.swago.baseswago.util
 
 import android.app.Application
+import android.net.Uri
 import android.os.Build
+import android.provider.MediaStore
 import java.io.*
 import java.lang.Exception
 import java.util.*
@@ -128,4 +130,16 @@ object FileUtil {
         }
     }
 
+     fun getRealPathFromURI(uri: Uri): String? {
+        var path: String? = null
+        val projection = arrayOf(MediaStore.Images.Media.DATA)
+        val cursor = AppContext.getContext().contentResolver.query(uri, projection, null, null, null)
+        cursor?.use {
+            if (it.moveToFirst()) {
+                val columnIndex = it.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
+                path = it.getString(columnIndex)
+            }
+        }
+        return path
+    }
 }

+ 63 - 3
login/src/main/java/com/swago/login/LoginActivity.kt

@@ -57,7 +57,25 @@ class LoginActivity : BaseXActivity<ActivityLoginBinding>() {
 
         binding.clFaceBook.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
-                if (SwagoShareUtils.isInstall(this@LoginActivity,FACEBOOK)){
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE){
+                    PermissionX.init(this@LoginActivity)
+                        .permissions(
+                            Manifest.permission.READ_MEDIA_IMAGES,
+                            Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
+                        )
+                        .request { allGranted, grantedList, deniedList ->
+                            if (allGranted) {
+                                FBLogin.login(this@LoginActivity)
+                            } else {
+                                FBLogin.login(this@LoginActivity)
+                                Toast.makeText(
+                                    this@LoginActivity,
+                                    AppContext.getContext().resources.getString(R.string.these_permissions_denied)+ "$deniedList",
+                                    Toast.LENGTH_LONG
+                                ).show()
+                            }
+                        }
+                }else if (SwagoShareUtils.isInstall(this@LoginActivity,FACEBOOK)){
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
                         PermissionX.init(this@LoginActivity)
                             .permissions(
@@ -101,7 +119,25 @@ class LoginActivity : BaseXActivity<ActivityLoginBinding>() {
 
         binding.clGoogle.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
-                if (SwagoShareUtils.isInstall(this@LoginActivity,GOOGLE)) {
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE){
+                    PermissionX.init(this@LoginActivity)
+                        .permissions(
+                            Manifest.permission.READ_MEDIA_IMAGES,
+                            Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
+                        )
+                        .request { allGranted, grantedList, deniedList ->
+                            if (allGranted) {
+                                GoogleLogin.login(this@LoginActivity)
+                            } else {
+                                GoogleLogin.login(this@LoginActivity)
+                                Toast.makeText(
+                                    this@LoginActivity,
+                                    getString(R.string.these_permissions_denied)+"$deniedList",
+                                    Toast.LENGTH_LONG
+                                ).show()
+                            }
+                        }
+                }else if (SwagoShareUtils.isInstall(this@LoginActivity,GOOGLE)) {
                      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
                         PermissionX.init(this@LoginActivity)
                             .permissions(
@@ -183,7 +219,31 @@ class LoginActivity : BaseXActivity<ActivityLoginBinding>() {
 
         binding.ivAccountLogin.setOnClickListener(object:NoDoubleClickListener(){
             override fun onClick() {
-                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE){
+                    PermissionX.init(this@LoginActivity)
+                        .permissions(
+                            Manifest.permission.READ_MEDIA_IMAGES,
+                            Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
+                        )
+                        .request { allGranted, grantedList, deniedList ->
+                            if (allGranted) {
+                                SwagoLoading.showLoadingDialog(this@LoginActivity)
+                                val account = binding.etAccount.text.toString()
+                                val secret = binding.etSecret.text.toString()
+                                loginVm.loginByAccount(account, secret)
+                            } else {
+                                SwagoLoading.showLoadingDialog(this@LoginActivity)
+                                val account = binding.etAccount.text.toString()
+                                val secret = binding.etSecret.text.toString()
+                                loginVm.loginByAccount(account, secret)
+                                Toast.makeText(
+                                    this@LoginActivity,
+                                    getString(R.string.these_permissions_denied)+" $deniedList",
+                                    Toast.LENGTH_LONG
+                                ).show()
+                            }
+                        }
+                }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
                     PermissionX.init(this@LoginActivity)
                         .permissions(
                             Manifest.permission.READ_MEDIA_IMAGES

+ 1 - 1
room/src/main/java/com/swago/room/anchor/AnchorRoomFragment.kt

@@ -55,7 +55,7 @@ class AnchorRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
         }
 
         footerView?.openMoreDialog = {
-            openMoreDialog()
+            openMoreDialog(1)
         }
 
         footerView?.openGameFun = {

+ 15 - 3
room/src/main/java/com/swago/room/base/BaseComFragment.kt

@@ -76,6 +76,7 @@ import com.swago.room.hongbao.RedEnvelopeDialog
 import com.swago.room.inter.IFooter
 import com.swago.room.inter.IHeader
 import com.swago.room.lianmai.LianMaiVm
+import com.swago.room.lianmai.UserLianMaiDialog
 import com.swago.room.manager.JoinAnimalManager
 import com.swago.room.piaotiao.WaftManager
 import com.swago.room.pk.IPKListener
@@ -680,6 +681,9 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
         ShareDialog.newInstance().show(childFragmentManager,"ShareDialog")
     }
 
+    private fun openLianMaiListDialog() {
+        UserLianMaiDialog.newInstance().show(childFragmentManager,"UserLianMaiDialog")
+    }
     private fun initMaiPosition() {
         allPositionXYList.clear()
         val centerX = DpPxUtil.getScreenWidth() / 2
@@ -788,13 +792,21 @@ abstract class BaseComFragment<T : FragmentBaseComBinding> : BaseXFragment<T>(),
         }.show(childFragmentManager, "SendMsgDialog")
     }
 
-    fun openMoreDialog(){
-        FooterMoreDialog.newInstance(unReadNum).apply {
+    fun openMoreDialog(type: Int){
+        FooterMoreDialog.newInstance(unReadNum, type).apply {
             openMessageFun = {
                 openMessageListDialog()
             }
             openShareFun = {
-                openShareDialog()
+                if (type == 1){
+                    openShareDialog()
+                } else if (type == 2){
+                    if (PKStateManager.roomState==1){
+                        openLianMaiListDialog()
+                    }else{
+                        Toast.makeText(AppContext.getContext(), "当前主播正在PK,请稍后", Toast.LENGTH_SHORT).show()
+                    }
+                }
             }
         }.show(childFragmentManager , "FooterMoreDialog")
     }

+ 9 - 1
room/src/main/java/com/swago/room/dialog/FooterMoreDialog.kt

@@ -12,6 +12,7 @@ import com.swago.baseswago.model.ViewModelProviderUtil
 import com.swago.baseswago.util.AppContext
 import com.swago.baseswago.util.NoDoubleClickListener
 import com.swago.baseswago.util.SwagoLoading
+import com.swago.room.R
 import com.swago.room.bean.UserRoomModel
 import com.swago.room.databinding.DialogAudioNoticeBinding
 import com.swago.room.databinding.DialogFooterMoreBinding
@@ -28,9 +29,10 @@ class FooterMoreDialog : BaseXDFragment<DialogFooterMoreBinding>() {
     }
 
     companion object{
-        fun newInstance(unReadNum:Long): FooterMoreDialog {
+        fun newInstance(unReadNum:Long,type:Int): FooterMoreDialog {
             val args = Bundle()
             args.putLong("unReadNum", unReadNum)
+            args.putInt("type",type)
             val fragment = FooterMoreDialog()
             fragment.arguments = args
             return fragment
@@ -43,12 +45,18 @@ class FooterMoreDialog : BaseXDFragment<DialogFooterMoreBinding>() {
     override fun initLiveData() {
         arguments?.let {
             val unReadNum = it.getLong("unReadNum",0)
+            val type = it.getInt("type")
             if (unReadNum > 0){
                 binding.tvNum.visibility = View.VISIBLE
                 binding.tvNum.text = "$unReadNum"
             } else {
                 binding.tvNum.visibility = View.GONE
             }
+            if (type == 1){
+                binding.ivShare.setImageResource(R.mipmap.live_share)
+            } else if (type == 2){
+                binding.ivShare.setImageResource(R.mipmap.live_lianmai_user)
+            }
         }
         binding.ivMessage.setOnClickListener {
             openMessageFun?.invoke()

+ 8 - 7
room/src/main/java/com/swago/room/user/UserRoomFragment.kt

@@ -3,9 +3,11 @@ package com.swago.room.user
 import android.view.View
 import android.widget.Toast
 import androidx.constraintlayout.widget.ConstraintLayout
+import com.alibaba.android.arouter.launcher.ARouter
 import com.swago.baseswago.PersonDataDFragment
 import com.swago.baseswago.baseroom.IRoomInfo
 import com.swago.baseswago.baseroom.SwagoRoomManager
+import com.swago.baseswago.constant.ARouteConstant
 import com.swago.baseswago.dialog.BenefitBagDialog
 import com.swago.baseswago.dialog.EnterPasswordDialog
 import com.swago.baseswago.dialog.ReportDialog
@@ -133,8 +135,12 @@ class UserRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
             openShareDialog()
         }
 
-        footerView.openLianMaiFun = {
-            openLianMaiListDialog()
+        footerView.openMoreDialog = {
+            openMoreDialog(2)
+        }
+
+        footerView.openMandateFun = {
+            ARouter.getInstance().build(ARouteConstant.User.taskCenter).navigation()
         }
 
         unreadMessageVm.unreadMessageData.observe(this){
@@ -229,11 +235,6 @@ class UserRoomFragment : BaseComFragment<FragmentBaseComBinding>() {
 
     }
 
-
-    private fun openLianMaiListDialog() {
-        UserLianMaiDialog.newInstance().show(childFragmentManager,"UserLianMaiDialog")
-    }
-
     fun dismissDialog() {
         childFragmentManager.findFragmentByTag("GiftDialog")?.let {
             if (it is GiftDialog) it.dismissAllowingStateLoss()

+ 15 - 9
room/src/main/java/com/swago/room/widget/UserFooterView.kt

@@ -32,7 +32,8 @@ class UserFooterView : ConstraintLayout, IFooter,IRoomActiveListener {
     var openGiftPanelFun:(()->Unit)? = null
     var openGameFun:(()->Unit)? = null
     var openShareFun:(()->Unit)? = null
-    var openLianMaiFun:(()->Unit)? = null
+    var openMoreDialog:(()->Unit)? = null
+    var openMandateFun:(()->Unit)? = null
 
     constructor(context: Context) : this(context, null)
     constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
@@ -78,15 +79,18 @@ class UserFooterView : ConstraintLayout, IFooter,IRoomActiveListener {
             }
         })
 
-        binding.ivLianMai.setOnClickListener(object : NoDoubleClickListener() {
+        binding.ivMore.setOnClickListener(object : NoDoubleClickListener(){
             override fun onClick() {
-                if (PKStateManager.roomState==1){
-                    openLianMaiFun?.invoke()
-                }else{
-                    Toast.makeText(AppContext.getContext(), "当前主播正在PK,请稍后", Toast.LENGTH_SHORT).show()
-                }
+                openMoreDialog?.invoke()
+            }
+
+        })
 
+        binding.ivMandate.setOnClickListener(object : NoDoubleClickListener(){
+            override fun onClick() {
+                openMandateFun?.invoke()
             }
+
         })
     }
 
@@ -109,11 +113,13 @@ class UserFooterView : ConstraintLayout, IFooter,IRoomActiveListener {
     override fun joinedRoom(iRoomInfo: IRoomInfo) {
         visibility = View.VISIBLE
         if (iRoomInfo.getRoomType() == RoomType.AUDIO.type || iRoomInfo.getRoomType() == RoomType.HOUSE.type){
-            binding.ivLianMai.visibility = View.GONE
             binding.ivShare.visibility = View.VISIBLE
+            binding.ivMore.visibility = View.GONE
+            binding.clMessage.visibility = View.VISIBLE
         }else if(iRoomInfo.getRoomType() == RoomType.VIDEO.type){
-            binding.ivLianMai.visibility = View.VISIBLE
             binding.ivShare.visibility = View.VISIBLE
+            binding.ivMore.visibility = View.VISIBLE
+            binding.clMessage.visibility = View.GONE
         }
     }
 

+ 24 - 12
room/src/main/res/layout/layout_user_footer_view.xml

@@ -41,22 +41,11 @@
         android:layout_width="40dp"
         android:layout_height="40dp"/>
 
-    <ImageView
-        android:id="@+id/ivLianMai"
-        android:layout_marginStart="10dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/ivChat"
-        android:background="@drawable/shape_80000000_20"
-        android:src="@mipmap/live_lianmai_user"
-        android:padding="7dp"
-        android:layout_width="40dp"
-        android:layout_height="40dp"/>
-
     <ImageView
         android:id="@+id/ivShare"
         android:layout_marginStart="10dp"
         app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toEndOf="@+id/ivLianMai"
+        app:layout_constraintStart_toEndOf="@+id/ivChat"
         android:background="@drawable/shape_80000000_20"
         android:src="@mipmap/live_share"
         android:padding="7dp"
@@ -64,6 +53,7 @@
         android:layout_height="40dp"/>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cl_Message"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         app:layout_constraintTop_toTopOf="parent"
@@ -93,6 +83,28 @@
             android:background="@drawable/shape_d54941_circle"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
 
+    <ImageView
+        android:id="@+id/ivMandate"
+        android:layout_marginStart="10dp"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/cl_Message"
+        android:background="@drawable/shape_80000000_20"
+        android:src="@mipmap/icon_agent"
+        android:padding="7dp"
+        android:layout_width="40dp"
+        android:layout_height="40dp"/>
 
+    <ImageView
+        android:id="@+id/ivMore"
+        android:layout_marginStart="10dp"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/ivMandate"
+        android:visibility="gone"
+        tools:visibility="visible"
+        android:background="@drawable/shape_80000000_20"
+        android:src="@mipmap/live_more"
+        android:padding="3dp"
+        android:layout_width="40dp"
+        android:layout_height="40dp"/>
 
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 53 - 36
user/src/main/java/com/swago/user/EditInfoActivity.kt

@@ -1,5 +1,6 @@
 package com.swago.user
 
+import android.Manifest
 import android.content.Intent
 import android.os.Bundle
 import android.text.Editable
@@ -17,6 +18,7 @@ import com.bumptech.glide.Glide
 import com.huantansheng.easyphotos.EasyPhotos
 import com.huantansheng.easyphotos.callback.SelectCallback
 import com.huantansheng.easyphotos.models.album.entity.Photo
+import com.permissionx.guolindev.PermissionX
 import com.swago.baseswago.UserVm
 import com.swago.baseswago.activity.BaseXActivity
 import com.swago.baseswago.constant.ARouteConstant
@@ -204,45 +206,54 @@ class EditInfoActivity : BaseXActivity<ActivityUserEditBinding>() {
 
         binding.ivAvatar.setOnClickListener(object : NoDoubleClickListener() {
             override fun onClick() {
-                EasyPhotos.createAlbum(
-                    this@EditInfoActivity,
-                    false,
-                    false,
-                    GlideEngine.getInstance()
-                )
-                    .setFileProviderAuthority(AppContext.getContext().packageName + "/fileprovider")
-                    .setCount(1)//参数说明:最大可选数,默认1
-                    .start(object : SelectCallback() {
-                        override fun onResult(
-                            picList: ArrayList<Photo>?,
-                            isOriginal: Boolean
-                        ) {
-                            if (picList != null && picList.size > 0) {
-                                Glide.with(this@EditInfoActivity).load(picList[0].uri.toString())
-                                    .error(R.mipmap.default_avatar).into(binding.ivAvatar)
-                                Luban.with(this@EditInfoActivity)
-                                    .load(picList[0].path)
-                                    .ignoreBy(100)
-                                    .setCompressListener(object : OnCompressListener {
-                                        override fun onStart() {
-                                        }
-
-                                        override fun onSuccess(file: File?) {
-                                            SwagoLoading.showLoadingDialog(this@EditInfoActivity)
-                                            userVm.uploadFile(file.toString())
-                                        }
-
-                                        override fun onError(e: Throwable?) {}
-
-                                    }).launch()
+                if (!PermissionX.isGranted(AppContext.getContext(), Manifest.permission.READ_MEDIA_IMAGES) && PermissionX.isGranted(AppContext.getContext(), Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED)){
+                    val intent = Intent(Intent.ACTION_GET_CONTENT)
+                    intent.type = "image/*"
+                    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)
+                    startActivityForResult(intent, 112)
+
+                } else {
+                    EasyPhotos.createAlbum(
+                        this@EditInfoActivity,
+                        false,
+                        false,
+                        GlideEngine.getInstance()
+                    )
+                        .setFileProviderAuthority(AppContext.getContext().packageName + "/fileprovider")
+                        .setCount(1)//参数说明:最大可选数,默认1
+                        .start(object : SelectCallback() {
+                            override fun onResult(
+                                picList: ArrayList<Photo>?,
+                                isOriginal: Boolean
+                            ) {
+                                if (picList != null && picList.size > 0) {
+                                    Glide.with(this@EditInfoActivity).load(picList[0].uri.toString())
+                                        .error(R.mipmap.default_avatar).into(binding.ivAvatar)
+                                    Luban.with(this@EditInfoActivity)
+                                        .load(picList[0].path)
+                                        .ignoreBy(100)
+                                        .setCompressListener(object : OnCompressListener {
+                                            override fun onStart() {
+                                            }
+
+                                            override fun onSuccess(file: File?) {
+                                                SwagoLoading.showLoadingDialog(this@EditInfoActivity)
+                                                userVm.uploadFile(file.toString())
+                                            }
+
+                                            override fun onError(e: Throwable?) {}
+
+                                        }).launch()
+                                }
                             }
-                        }
 
-                        override fun onCancel() {
+                            override fun onCancel() {
+
+                            }
+                        })
+                }
+                }
 
-                        }
-                    })
-            }
         })
 
     }
@@ -267,6 +278,12 @@ class EditInfoActivity : BaseXActivity<ActivityUserEditBinding>() {
                 this@EditInfoActivity.country = country.name
                 binding.tvEditCountry.text = country.name
             }
+        } else if (requestCode == 112 && resultCode == RESULT_OK){
+            data?.data?.let {
+                FileUtil.getRealPathFromURI(it)?.let { path ->
+                    userVm.uploadFile(path)
+                }
+            }
         }
     }
 }