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 + + + + + + + + + + + + + + + + + + + + + + + + + + +