diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0cd0e8..234ee29 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -17,7 +17,9 @@
tools:targetApi="31" >
+ android:exported="false"
+ android:screenOrientation="portrait"
+ />
> {
+
+ private lateinit var binding: ActivityHomeBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_home)
+ binding = ActivityHomeBinding.inflate(layoutInflater)
+ setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
- Log.d(TAG, "onCreate: ${userPrefs?.userType} ${userPrefs?.accessToken}")
+ userPrefs?.userLiveData?.observe(this, this)
+
+ initViews()
+
+ clickEvents()
+ }
+
+ private fun initViews() {
+ binding.apply {
+
+ bottomNav.setOnItemSelectedListener {
+ if (bottomNav.selectedItemId != it.itemId)
+ toast(it.title.toString())
+
+ true
+ }
+ }
+ }
+
+ private fun clickEvents() {
+ binding.apply {
+ sideMenu.setOnClickListener {
+ homeDrawer.openDrawer(GravityCompat.END)
+ }
+
+ closeDrawer.setOnClickListener {
+ homeDrawer.closeDrawer(GravityCompat.END)
+ }
+ }
+ }
+
+ override fun onChanged(value: ApiResult) {
+ when(value){
+ is ApiResult.Error -> {}
+ is ApiResult.Loading -> {}
+ is ApiResult.Success -> {
+ Log.d(TAG, "onChanged: ${value.data?.result}")
+ value.data?.result?.let {
+ binding.apply {
+
+ it.avtar?.let {
+ Glide.with(this@HomeActivity)
+ .load(it)
+ .placeholder(R.drawable.profile_placeholder)
+ .error(R.drawable.profile_placeholder)
+ .into(sbUserImage)
+ }
+
+ sbUserName.text = it.fullname
+ sbBtn.text = getString(R.string.logout)
+ }
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt b/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt
index ae67e5d..8edb279 100644
--- a/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt
+++ b/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt
@@ -7,7 +7,7 @@ data class UserData(
val child_detail: ChildDetail?,
val email: String?,
val fullname: String?,
- val gender: Gender?,
+ val gender: String?,
val id: Int?,
val is_active: String?,
val language: Language?,
diff --git a/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt
index 91cf52d..a9f8127 100644
--- a/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt
+++ b/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt
@@ -1,23 +1,36 @@
package com.woka.onboard.fragments
+import android.animation.Animator
+import android.content.Intent
import android.media.MediaPlayer
import android.os.Bundle
+import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.view.animation.Animation
+import android.view.animation.Animation.AnimationListener
import androidx.fragment.app.Fragment
+import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.FragmentNavigatorExtras
import androidx.navigation.fragment.findNavController
import com.woka.R
+import com.woka.WokaApp.Companion.userPrefs
import com.woka.databinding.FragmentSplashBinding
+import com.woka.home.HomeActivity
+import com.woka.mvvm.userDataModels.UserDataResponse
+import com.woka.networking.ApiResult
+import com.woka.utils.TAG
+import com.woka.utils.UserType
+import com.woka.utils.toast
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
/*
Root fragment to the launcher activity i.e. WelcomeActivity
*/
-class SplashFragment : Fragment() {
+class SplashFragment : Fragment(), Observer> {
private lateinit var binding: FragmentSplashBinding
@@ -38,11 +51,10 @@ class SplashFragment : Fragment() {
animateLogo()
- lifecycleScope.launch {
- delay(6000)
- val extras = FragmentNavigatorExtras(binding.logo to "logo")
- findNavController().navigate(R.id.action_splashFragment_to_languageFragment,
- null, null, extras)
+ if (userPrefs?.userType == UserType.CHILD || userPrefs?.userType == UserType.GUARDIAN){
+ // some type of user is logged in
+ // thus, loading data
+ userPrefs?.loadUserData()
}
}
@@ -54,6 +66,25 @@ class SplashFragment : Fragment() {
private fun animateLogo() {
binding.logo.animate().scaleXBy(1f).scaleYBy(1f)
.setDuration(2000)
+ .setListener(object : Animator.AnimatorListener{
+ override fun onAnimationStart(animation: Animator) {}
+ override fun onAnimationEnd(animation: Animator) {
+ lifecycleScope.launch {
+ delay(2000)
+ if (userPrefs?.userType == UserType.NONE || userPrefs?.userType == UserType.GUEST){
+ // no user or guest is logged in
+ goForward()
+ }else{
+ // some user is logged in listening to user data
+ userPrefs?.userLiveData?.removeObserver(this@SplashFragment)
+ userPrefs?.userLiveData?.observe(viewLifecycleOwner, this@SplashFragment)
+ }
+ }
+ }
+ override fun onAnimationCancel(animation: Animator) {}
+ override fun onAnimationRepeat(animation: Animator) {}
+
+ })
.start()
}
@@ -63,4 +94,35 @@ class SplashFragment : Fragment() {
player?.release()
player = null
}
+
+ private fun goForward(){
+ if (userPrefs?.userType == UserType.NONE){
+ // none of the user is logged in
+ // going through normal onboard process
+ val extras = FragmentNavigatorExtras(binding.logo to "logo")
+ findNavController().navigate(R.id.action_splashFragment_to_languageFragment,
+ null, null, extras)
+ }else{
+ // going to home activity as any of the user is logged in
+ activity?.let {
+ startActivity(Intent(it, HomeActivity::class.java).apply {
+ addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
+ })
+ it.finish()
+ }
+ }
+ }
+
+ override fun onChanged(value: ApiResult) {
+ // on user data loaded
+ when (value){
+ is ApiResult.Error -> {
+ toast(value.errorMessage)
+ }
+ is ApiResult.Loading -> {}
+ is ApiResult.Success -> {
+ goForward()
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/ic_menu.png b/app/src/main/res/drawable-hdpi/ic_menu.png
new file mode 100644
index 0000000..ef675e8
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_menu.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_woka.png b/app/src/main/res/drawable-hdpi/ic_woka.png
new file mode 100644
index 0000000..c13b161
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_woka.png differ
diff --git a/app/src/main/res/drawable-hdpi/profile_placeholder.png b/app/src/main/res/drawable-hdpi/profile_placeholder.png
new file mode 100644
index 0000000..6ff5549
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/profile_placeholder.png differ
diff --git a/app/src/main/res/drawable-hdpi/theme_1.png b/app/src/main/res/drawable-hdpi/theme_1.png
new file mode 100644
index 0000000..77f1363
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/theme_1.png differ
diff --git a/app/src/main/res/drawable-hdpi/theme_2.png b/app/src/main/res/drawable-hdpi/theme_2.png
new file mode 100644
index 0000000..28b649f
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/theme_2.png differ
diff --git a/app/src/main/res/drawable-hdpi/theme_selected_tint.png b/app/src/main/res/drawable-hdpi/theme_selected_tint.png
new file mode 100644
index 0000000..821ea81
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/theme_selected_tint.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_menu.png b/app/src/main/res/drawable-ldpi/ic_menu.png
new file mode 100644
index 0000000..afb6e2c
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_menu.png differ
diff --git a/app/src/main/res/drawable-ldpi/ic_woka.png b/app/src/main/res/drawable-ldpi/ic_woka.png
new file mode 100644
index 0000000..7724760
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/ic_woka.png differ
diff --git a/app/src/main/res/drawable-ldpi/profile_placeholder.png b/app/src/main/res/drawable-ldpi/profile_placeholder.png
new file mode 100644
index 0000000..c4939d5
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/profile_placeholder.png differ
diff --git a/app/src/main/res/drawable-ldpi/theme_1.png b/app/src/main/res/drawable-ldpi/theme_1.png
new file mode 100644
index 0000000..2edeed0
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/theme_1.png differ
diff --git a/app/src/main/res/drawable-ldpi/theme_2.png b/app/src/main/res/drawable-ldpi/theme_2.png
new file mode 100644
index 0000000..5c1148c
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/theme_2.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_menu.png b/app/src/main/res/drawable-mdpi/ic_menu.png
new file mode 100644
index 0000000..be739c8
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_menu.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_woka.png b/app/src/main/res/drawable-mdpi/ic_woka.png
new file mode 100644
index 0000000..c8ee5d7
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_woka.png differ
diff --git a/app/src/main/res/drawable-mdpi/profile_placeholder.png b/app/src/main/res/drawable-mdpi/profile_placeholder.png
new file mode 100644
index 0000000..814b59a
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/profile_placeholder.png differ
diff --git a/app/src/main/res/drawable-mdpi/theme_1.png b/app/src/main/res/drawable-mdpi/theme_1.png
new file mode 100644
index 0000000..b358914
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/theme_1.png differ
diff --git a/app/src/main/res/drawable-mdpi/theme_2.png b/app/src/main/res/drawable-mdpi/theme_2.png
new file mode 100644
index 0000000..90f09d3
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/theme_2.png differ
diff --git a/app/src/main/res/drawable-mdpi/theme_selected_tint.png b/app/src/main/res/drawable-mdpi/theme_selected_tint.png
new file mode 100644
index 0000000..a41cda3
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/theme_selected_tint.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_menu.png b/app/src/main/res/drawable-xhdpi/ic_menu.png
new file mode 100644
index 0000000..92472aa
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_menu.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_woka.png b/app/src/main/res/drawable-xhdpi/ic_woka.png
new file mode 100644
index 0000000..99b5eff
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_woka.png differ
diff --git a/app/src/main/res/drawable-xhdpi/profile_placeholder.png b/app/src/main/res/drawable-xhdpi/profile_placeholder.png
new file mode 100644
index 0000000..982fbc0
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/profile_placeholder.png differ
diff --git a/app/src/main/res/drawable-xhdpi/theme_1.png b/app/src/main/res/drawable-xhdpi/theme_1.png
new file mode 100644
index 0000000..eebaaa9
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/theme_1.png differ
diff --git a/app/src/main/res/drawable-xhdpi/theme_2.png b/app/src/main/res/drawable-xhdpi/theme_2.png
new file mode 100644
index 0000000..17a1ad3
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/theme_2.png differ
diff --git a/app/src/main/res/drawable-xhdpi/theme_selected_tint.png b/app/src/main/res/drawable-xhdpi/theme_selected_tint.png
new file mode 100644
index 0000000..41925d9
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/theme_selected_tint.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu.png b/app/src/main/res/drawable-xxhdpi/ic_menu.png
new file mode 100644
index 0000000..d2c3c1b
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_menu.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_woka.png b/app/src/main/res/drawable-xxhdpi/ic_woka.png
new file mode 100644
index 0000000..b37dcf1
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_woka.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/profile_placeholder.png b/app/src/main/res/drawable-xxhdpi/profile_placeholder.png
new file mode 100644
index 0000000..ca50d22
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/profile_placeholder.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/theme_1.png b/app/src/main/res/drawable-xxhdpi/theme_1.png
new file mode 100644
index 0000000..1dc4ecb
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/theme_1.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/theme_2.png b/app/src/main/res/drawable-xxhdpi/theme_2.png
new file mode 100644
index 0000000..826b9aa
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/theme_2.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/theme_selected_tint.png b/app/src/main/res/drawable-xxhdpi/theme_selected_tint.png
new file mode 100644
index 0000000..e178594
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/theme_selected_tint.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_menu.png b/app/src/main/res/drawable-xxxhdpi/ic_menu.png
new file mode 100644
index 0000000..c0321da
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_menu.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_woka.png b/app/src/main/res/drawable-xxxhdpi/ic_woka.png
new file mode 100644
index 0000000..96ebabd
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_woka.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/profile_placeholder.png b/app/src/main/res/drawable-xxxhdpi/profile_placeholder.png
new file mode 100644
index 0000000..4d1ae9d
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/profile_placeholder.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/theme_1.png b/app/src/main/res/drawable-xxxhdpi/theme_1.png
new file mode 100644
index 0000000..f37fd78
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/theme_1.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/theme_2.png b/app/src/main/res/drawable-xxxhdpi/theme_2.png
new file mode 100644
index 0000000..2091e11
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/theme_2.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/theme_selected_tint.png b/app/src/main/res/drawable-xxxhdpi/theme_selected_tint.png
new file mode 100644
index 0000000..6d8dbda
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/theme_selected_tint.png differ
diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml
new file mode 100644
index 0000000..8df1f54
--- /dev/null
+++ b/app/src/main/res/drawable/ic_close.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_green_tick.xml b/app/src/main/res/drawable/ic_green_tick.xml
new file mode 100644
index 0000000..12b646a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_green_tick.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_heart_filled.xml b/app/src/main/res/drawable/ic_heart_filled.xml
new file mode 100644
index 0000000..8ed0b9e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_heart_filled.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml
new file mode 100644
index 0000000..34037e1
--- /dev/null
+++ b/app/src/main/res/drawable/ic_home.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/lang_tab_bg.xml b/app/src/main/res/drawable/lang_tab_bg.xml
new file mode 100644
index 0000000..1ec63c7
--- /dev/null
+++ b/app/src/main/res/drawable/lang_tab_bg.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index 6a72abd..b90e738 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -1,11 +1,286 @@
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/home_bottom_menu.xml b/app/src/main/res/menu/home_bottom_menu.xml
new file mode 100644
index 0000000..58b3fb1
--- /dev/null
+++ b/app/src/main/res/menu/home_bottom_menu.xml
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index 1e4ea4a..ba1ce8c 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -2,7 +2,7 @@
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 11f13de..6c7ba8e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -103,4 +103,9 @@
Required
BOY
GIRL
+ Home
+ Explore Woka
+ My List
+ Logout
+ THEME
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 582595a..906f991 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -2,7 +2,7 @@