Kaynağa Gözat

+ add apong
+ bug still exist (not sending token when installed)

Dola TENG 2 yıl önce
ebeveyn
işleme
fc20127b17

+ 1 - 1
.idea/misc.xml

@@ -9,7 +9,6 @@
         <entry key="..\:/3-Work/Android/SBC_Main_Android/app/src/main/res/layout/fragment_report.xml" value="0.18802083333333333" />
         <entry key="..\:/3-Work/Android/SBC_Main_Android/app/src/main/res/layout/layout_fragment_main_yuki.xml" value="0.36666666666666664" />
         <entry key="..\:/3-Work/Android/SBC_Main_Android/app/src/main/res/layout/layout_main_module.xml" value="0.36666666666666664" />
-        <entry key="..\:/3-Work/Android/SBC_Main_Android/app/src/main/res/layout/layout_sub_module.xml" value="0.36666666666666664" />
         <entry key="..\:/3-Work/Android/Yuki-Mobile/app/src/main/res/layout/bet_detail_item.xml" value="0.33" />
         <entry key="..\:/3-Work/Android/Yuki-Mobile/app/src/main/res/layout/betting_detail.xml" value="0.36666666666666664" />
         <entry key="..\:/3-Work/Android/Yuki-Mobile/app/src/main/res/layout/fragment_play.xml" value="0.2807971014492754" />
@@ -68,6 +67,7 @@
         <entry key="..\:/PartTimeProject/Yuki/Yuki-Mobile/app/src/main/res/layout/view_square.xml" value="0.18802083333333333" />
         <entry key="..\:/PartTimeProject/Yuki/Yuki-Mobile/app/src/main/res/mipmap-anydpi-v26/ic_logo.xml" value="0.196" />
         <entry key="..\:/android/SBC_Main_Android/app/src/main/res/drawable/app_background.xml" value="0.185" />
+        <entry key="..\:/android/SBC_Main_Android/app/src/main/res/layout/app_bar.xml" value="0.25416666666666665" />
         <entry key="..\:/android/SBC_Main_Android/app/src/main/res/layout/bet_detail_item.xml" value="0.25416666666666665" />
         <entry key="..\:/android/SBC_Main_Android/app/src/main/res/layout/betting_detail.xml" value="0.25416666666666665" />
         <entry key="..\:/android/SBC_Main_Android/app/src/main/res/layout/fragment_report.xml" value="0.25416666666666665" />

+ 35 - 0
app/src/main/java/com/khmer9/sbcmain/app/ShareViewModel.kt

@@ -11,6 +11,7 @@ import com.khmer9.sbcmain.remote.ReportWithdrawRequest
 import com.khmer9.sbcmain.remote.service.ApiService
 import com.khmer9.sbcmain.remote.service.ConnectivityStates
 import com.khmer9.sbcmain.remote.service.EventListener
+import com.khmer9.sbcmain.screen.login.UserViewState
 import com.khmer9.sbcmain.screen.main.ResultMainState
 import com.khmer9.sbcmain.screen.main.ResultSubState
 import com.khmer9.sbcmain.screen.main.TokenViewState
@@ -58,6 +59,40 @@ class ShareViewModel(
 
     private fun prev() = _stateToken.value!!
 
+    //-----------------------------------------------------Get User------------------------------------------------------------------
+    private val _userState = MutableLiveData<UserViewState>(UserViewState())
+    val userState: LiveData<UserViewState> = _userState
+    private fun prevUser() = _userState.value!!
+
+    fun getUser() {
+        if (_userState.value!!.isProgress) return
+        _userState.value = prevUser().copy(isProgress = true)
+
+        disposables.add(
+            apiService.remoteUser()
+                .timeout(60, TimeUnit.SECONDS)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe({
+                    if (it.resultCode == "1") {
+                        it.data?.let {
+                            _userState.value = prevUser().copy(
+                                isProgress = false,
+                                user = it,
+                                error = null
+                            )
+                        }
+
+                    } else {
+                        _userState.value = prevUser().copy(isProgress = false, error = "[${it.message.description}]")
+                    }
+                }, {
+                    val message: String = "ប្រតិបត្តិការមិនជោគជ័យ\n" + it.getErrorCode()
+                    _userState.value = prevUser().copy(isProgress = false, error = message)
+                })
+        )
+    }
+
     //-----------------------------------------------------Report statement----------------------------------------------------------
     fun remoteReportBettingStatement(reportBettingRequest: ReportBettingRequest? = null) {
         if (reportState.value!!.isProgress) return

+ 12 - 0
app/src/main/java/com/khmer9/sbcmain/remote/LoginDataModel.kt

@@ -36,6 +36,18 @@ data class LoginMessage(
     val description: String,
 )
 
+@JsonClass(generateAdapter = true)
+data class UserResponse(
+    @Json(name = "code")
+    val resultCode: String,
+
+    @Json(name = "message")
+    val message: LoginMessage,
+
+    @Json(name = "data")
+    val data: User?
+)
+
 @JsonClass(generateAdapter = true)
 data class LoginData(
     @Json(name = "user")

+ 3 - 0
app/src/main/java/com/khmer9/sbcmain/remote/service/ApiService.kt

@@ -13,6 +13,9 @@ interface ApiService {
     @Headers("No-Authentication: true")
     fun login(@Body loginRequest: LoginRequest): Single<LoginResponse>
 
+    @GET("/v1/api/user")
+    fun remoteUser(): Single<UserResponse>
+
     //Report api
 
     @POST("/v1/api/report/statement")

+ 10 - 0
app/src/main/java/com/khmer9/sbcmain/screen/login/LoginViewState.kt

@@ -1,9 +1,19 @@
 package com.khmer9.sbcmain.screen.login
 
+import com.khmer9.sbcmain.remote.User
+
 data class LoginViewState(
     val initial: Boolean = false,
     val isProgress: Boolean = false,
     val isLoginSuccess: Boolean = false,
 
     val error: String? = null
+)
+
+data class UserViewState(
+    val initial: Boolean = false,
+    val isProgress: Boolean = false,
+    val isLoginSuccess: Boolean = false,
+    val error: String? = null,
+    val user: User? = null
 )

+ 31 - 2
app/src/main/java/com/khmer9/sbcmain/screen/main/MainFragment.kt

@@ -19,6 +19,7 @@ import com.khmer9.sbcmain.base.BaseFragment
 import com.khmer9.sbcmain.extension.btnClick
 import com.khmer9.sbcmain.remote.User
 import com.khmer9.sbcmain.remote.service.ConnectivityStates
+import com.khmer9.sbcmain.screen.login.UserViewState
 import com.khmer9.sbcmain.screen.report.StatementFragment
 import com.khmer9.sbcmain.screen.setting.SettingFragment
 import com.khmer9.sbcmain.screen.splash.SplashScreenActivity
@@ -32,11 +33,11 @@ class MainFragment : BaseFragment(R.layout.layout_fragment_main_yuki) {
     private lateinit var betTouch: MediaPlayer
 
     private val YUKI_APP_ID = "630478c22983a591133f0492"
-    private val YUKI_DOWNLOAD = "https://www.dropbox.com/s/uzvfo7jahmcl8pe/Khmer9_Yuki_devDebug_1.0.1-dev.apk?dl=1"
+    private val YUKI_DOWNLOAD = "https://www.dropbox.com/s/xkk1g5h4282yx0l/Khmer9_Yuki_devDebug_1.0.1-dev.apk?dl=1"
     private val YUKI_PACKAGE = "com.khmer9.yuki"
 
     private val LOTTO_APP_ID = "630780f0f635dd035329f5b7"
-    private val LOTTO_DOWNLOAD = "https://www.dropbox.com/s/j3h5d3bjp91nsmr/Khmer9_Lotto_devDebug_1.0.3-dev.apk?dl=1"
+    private val LOTTO_DOWNLOAD = "https://www.dropbox.com/s/00s1s4f3dtdgyyg/Khmer9_Lotto_devDebug_1.0.4-dev.apk?dl=1"
     private val LOTTO_PACKAGE = "com.khmer9.lotto"
 
     private val LOTTO_PLUS_APP_ID = "62e397edae71cfa8782aa3a0"
@@ -113,12 +114,20 @@ class MainFragment : BaseFragment(R.layout.layout_fragment_main_yuki) {
                         .commit()
                 }
             }
+
+            refreshImageView.setOnClickListener {
+                shareViewModel.getUser()
+            }
         }
 
         //
         recyclerView = view.findViewById(R.id.rv_main)
 
         //
+        shareViewModel.getUser()
+        shareViewModel.userState.observe(viewLifecycleOwner, Observer {
+            setUserBalance(it)
+        })
         shareViewModel.remoteMainModule()
         shareViewModel.getMainModuleState.observe(viewLifecycleOwner, Observer {
             setModuleMain(it)
@@ -162,6 +171,26 @@ class MainFragment : BaseFragment(R.layout.layout_fragment_main_yuki) {
         })
     }
 
+    private fun setUserBalance(state: UserViewState) {
+        if (state.user != null) {
+            (requireActivity() as ShareActivity).apply {
+                val user = state.user
+                val balance = currencyFormat(user.accountBalances)
+                when (user.currencyType) {
+                    1 -> {//dollar
+                        balanceTextView.text = "$balance $"
+                    }
+                    2 -> {//riel
+                        balanceTextView.text = "$balance ៛"
+                    }
+                    3 -> {//baht
+                        balanceTextView.text = "$balance ฿"
+                    }
+                }
+            }
+        }
+    }
+
     private fun setModuleMain(state: ResultMainState) {
         if (state.resultList != null) {
             adapter = MainModuleAdapter()

+ 22 - 1
app/src/main/java/com/khmer9/sbcmain/screen/main/MainModuleViewHolder.kt

@@ -17,6 +17,9 @@ class MainModuleViewHolder(itemView: View, private val detailButtonListener: ((S
     private val picasso = Picasso.get()
     private val LOTTO_APP_ID = "630780f0f635dd035329f5b7"
     private val LOTTO_PLUS_APP_ID = "62e397edae71cfa8782aa3a0"
+    private val COCK_ID = "631c17831da02749e7e23f35"
+    private val YUKI_ID = "630478c22983a591133f0492"
+    private val APONG_ID = "631c1d1a0d213229fc5fd11a"
 
     override fun bindView(item: BaseListItem) {
         val imgIcon = itemView.findViewById<ImageView>(R.id.img_icon)
@@ -57,9 +60,27 @@ class MainModuleViewHolder(itemView: View, private val detailButtonListener: ((S
                             .placeholder(R.drawable.animal_seven)
                             .into(imgIcon)
                     }
+                    COCK_ID -> {
+                        picasso
+                            .load(R.drawable.ic_logo_cock)
+                            .placeholder(R.drawable.animal_seven)
+                            .into(imgIcon)
+                    }
+                    YUKI_ID -> {
+                        picasso
+                            .load(R.drawable.ic_yuki)
+                            .placeholder(R.drawable.animal_seven)
+                            .into(imgIcon)
+                    }
+                    APONG_ID -> {
+                        picasso
+                            .load(R.drawable.ic_apong)
+                            .placeholder(R.drawable.animal_seven)
+                            .into(imgIcon)
+                    }
                     else -> {
                         picasso
-                            .load(item.smallIcon)
+                            .load(R.drawable.ic_lotto_main)
                             .placeholder(R.drawable.animal_seven)
                             .into(imgIcon)
                     }

+ 1 - 1
app/src/main/java/com/khmer9/sbcmain/screen/main/SubModuleFragment.kt

@@ -26,7 +26,7 @@ class SubModuleFragment : BaseFragment(R.layout.layout_sub_module) {
     private val ARG_PARAM1 = "module_id"
 
     private val LOTTO_APP_ID = "630780f0f635dd035329f5b7"
-    private val LOTTO_DOWNLOAD = "https://www.dropbox.com/s/j3h5d3bjp91nsmr/Khmer9_Lotto_devDebug_1.0.3-dev.apk?dl=1"
+    private val LOTTO_DOWNLOAD = "https://www.dropbox.com/s/00s1s4f3dtdgyyg/Khmer9_Lotto_devDebug_1.0.4-dev.apk?dl=1"
     private val LOTTO_PACKAGE = "com.khmer9.lotto"
 
     private val LOTTO_PLUS_APP_ID = "62e397edae71cfa8782aa3a0"

BIN
app/src/main/res/drawable/ic_apong.png


BIN
app/src/main/res/drawable/ic_logo_cock.png


BIN
app/src/main/res/drawable/ic_lotto_main.png


BIN
app/src/main/res/drawable/ic_yuki.png