diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 53232c8..f0cd0e8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools" > @@ -14,7 +14,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Woka" - tools:targetApi="31"> + tools:targetApi="31" > @@ -27,7 +27,7 @@ android:name=".onboard.WelcomeActivity" android:exported="true" android:screenOrientation="portrait" - android:theme="@style/Theme.App.Starting"> + android:theme="@style/Theme.App.Starting" > diff --git a/app/src/main/java/com/woka/home/HomeActivity.kt b/app/src/main/java/com/woka/home/HomeActivity.kt index 87417fc..7c885a5 100644 --- a/app/src/main/java/com/woka/home/HomeActivity.kt +++ b/app/src/main/java/com/woka/home/HomeActivity.kt @@ -1,13 +1,20 @@ package com.woka.home import android.os.Bundle +import android.util.Log import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.lifecycle.lifecycleScope import com.woka.R +import com.woka.WokaApp.Companion.userPrefs +import com.woka.networking.ApiResult +import com.woka.utils.TAG +import kotlinx.coroutines.launch class HomeActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() @@ -17,5 +24,7 @@ class HomeActivity : AppCompatActivity() { v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } + + Log.d(TAG, "onCreate: ${userPrefs?.userType} ${userPrefs?.accessToken}") } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/UserApiService.kt b/app/src/main/java/com/woka/mvvm/UserApiService.kt new file mode 100644 index 0000000..8406de1 --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/UserApiService.kt @@ -0,0 +1,12 @@ +package com.woka.mvvm + +import com.woka.mvvm.userDataModels.UserDataResponse +import com.woka.networking.ApiResponse +import retrofit2.Response +import retrofit2.http.GET + +interface UserApiService { + + @GET("get_user_data") + suspend fun getUserData(): Response> +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/UserRepository.kt b/app/src/main/java/com/woka/mvvm/UserRepository.kt new file mode 100644 index 0000000..e099d50 --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/UserRepository.kt @@ -0,0 +1,14 @@ +package com.woka.mvvm + +import com.woka.mvvm.userDataModels.UserDataResponse +import com.woka.networking.ApiResult +import com.woka.networking.RetrofitHelper.handleApiCall + +class UserRepository(private val userApiService: UserApiService) { + + suspend fun getUserData(): ApiResult{ + return handleApiCall{ + userApiService.getUserData() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/ChildDetail.kt b/app/src/main/java/com/woka/mvvm/userDataModels/ChildDetail.kt new file mode 100644 index 0000000..02a6e68 --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/userDataModels/ChildDetail.kt @@ -0,0 +1,8 @@ +package com.woka.mvvm.userDataModels + +data class ChildDetail( + val avatar_name: String?, + val id: Int?, + val interest_topic: List?, + val user_id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/Gender.kt b/app/src/main/java/com/woka/mvvm/userDataModels/Gender.kt new file mode 100644 index 0000000..a63687d --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/userDataModels/Gender.kt @@ -0,0 +1,6 @@ +package com.woka.mvvm.userDataModels + +data class Gender( + val gender_name: String?, + val id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/InterestTopic.kt b/app/src/main/java/com/woka/mvvm/userDataModels/InterestTopic.kt new file mode 100644 index 0000000..715954f --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/userDataModels/InterestTopic.kt @@ -0,0 +1,6 @@ +package com.woka.mvvm.userDataModels + +data class InterestTopic( + val id: Int?, + val topic_name: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/Language.kt b/app/src/main/java/com/woka/mvvm/userDataModels/Language.kt new file mode 100644 index 0000000..03e445e --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/userDataModels/Language.kt @@ -0,0 +1,6 @@ +package com.woka.mvvm.userDataModels + +data class Language( + val id: Int?, + val language_name: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/Result.kt b/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt similarity index 75% rename from app/src/main/java/com/woka/onboard/models/Result.kt rename to app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt index debf7c4..ae67e5d 100644 --- a/app/src/main/java/com/woka/onboard/models/Result.kt +++ b/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt @@ -1,10 +1,10 @@ -package com.woka.onboard.models +package com.woka.mvvm.userDataModels -data class Result( +data class UserData( val already_logged_in: Boolean, val avtar: String?, val birthdate: String?, - val child_detail: Any?, + val child_detail: ChildDetail?, val email: String?, val fullname: String?, val gender: Gender?, @@ -14,6 +14,6 @@ data class Result( val language_master_id: Int?, val last_login: String?, val remember_token: String?, - val user_type: String?, + val user_type: Int?, val username: String? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt b/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt new file mode 100644 index 0000000..a65e4d7 --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt @@ -0,0 +1,7 @@ +package com.woka.mvvm.userDataModels + +data class UserDataResponse( + val result: UserData?, + val userNotificationData: UserNotificationData?, + val userNotificationsCount: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/UserNotificationData.kt b/app/src/main/java/com/woka/mvvm/userDataModels/UserNotificationData.kt new file mode 100644 index 0000000..aa1d3c1 --- /dev/null +++ b/app/src/main/java/com/woka/mvvm/userDataModels/UserNotificationData.kt @@ -0,0 +1,15 @@ +package com.woka.mvvm.userDataModels + +data class UserNotificationData( + val created_at: String?, + val description: String?, + val image_url: String?, + val is_home_notification_read: Int?, + val is_read: Int?, + val is_specific_time_notification: Int?, + val link: Any?, + val post_type: Int?, + val title: String?, + val type: String?, + val user_id: Int? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/networking/RetrofitHelper.kt b/app/src/main/java/com/woka/networking/RetrofitHelper.kt index 87ac32a..0646124 100644 --- a/app/src/main/java/com/woka/networking/RetrofitHelper.kt +++ b/app/src/main/java/com/woka/networking/RetrofitHelper.kt @@ -8,6 +8,7 @@ import com.woka.WokaApp.Companion.userPrefs import com.woka.onboard.models.LoginResponse import com.woka.utils.NO_INTERNET_MESSAGE import com.woka.utils.UNKNOWN_ERROR_MESSAGE +import com.woka.utils.UserType import kotlinx.coroutines.delay import okhttp3.Credentials import okhttp3.Interceptor @@ -41,6 +42,12 @@ object RetrofitHelper { request.addHeader("device-id", userPrefs?.deviceId!!) request.addHeader("Authorization", Credentials.basic(BuildConfig.WOKA_USER_NAME, BuildConfig.WOKA_PASSWORD)) + if (userPrefs?.userType == UserType.CHILD || userPrefs?.userType == UserType.GUARDIAN){ + userPrefs?.accessToken?.let { + request.addHeader("access-token", it) + } + } + chain.proceed(request.build()) }) diff --git a/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt b/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt index ab9605e..fddd847 100644 --- a/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/OnboardFragment.kt @@ -1,5 +1,6 @@ package com.woka.onboard.fragments +import android.content.Intent import android.graphics.Color import android.os.Bundle import android.transition.TransitionInflater @@ -8,16 +9,28 @@ import android.view.View import android.view.ViewGroup import android.view.WindowManager import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.google.android.material.tabs.TabLayoutMediator import com.woka.R +import com.woka.WokaApp.Companion.userPrefs import com.woka.databinding.FragmentOnboardBinding +import com.woka.home.HomeActivity +import com.woka.networking.ApiResult import com.woka.onboard.OnboardingAdapter +import com.woka.onboard.mvvm.OnboardViewModel +import com.woka.utils.ProgressView +import com.woka.utils.UserType +import com.woka.utils.toast class OnboardFragment : Fragment() { private lateinit var binding: FragmentOnboardBinding + private lateinit var viewModel: OnboardViewModel + + private lateinit var progressView: ProgressView + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) sharedElementEnterTransition = TransitionInflater.from(context).inflateTransition(android.R.transition.move) @@ -28,8 +41,13 @@ class OnboardFragment : Fragment() { savedInstanceState: Bundle? ): View? { binding = FragmentOnboardBinding.inflate(inflater, container, false) - activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) - activity?.window?.statusBarColor = Color.parseColor("#55cffe") + activity?.let { + it.window?.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + it.window?.statusBarColor = Color.parseColor("#55cffe") + + viewModel = ViewModelProvider(it)[OnboardViewModel::class.java] + progressView = ProgressView(it) + } return binding.root } @@ -39,6 +57,40 @@ class OnboardFragment : Fragment() { initViews() clickEvents() + + viewModel.guestLogin.observe(viewLifecycleOwner){ + when(it){ + is ApiResult.Error -> { + progressView.hide() + toast(it.errorMessage) + } + is ApiResult.Loading -> { + progressView.show(getString(R.string.please_wait)) + } + is ApiResult.Success -> { + progressView.hide() + it.data?.let {data -> + toast(it.message) + + userPrefs?.userType = UserType.GUEST + userPrefs?.guestUserName = data.fullname + + activity?.let { activity-> + startActivity(Intent(activity, HomeActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + activity.finish() + } + } + } + null -> {} + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + viewModel.clearGuestLoginData() } private fun initViews() { @@ -62,6 +114,10 @@ class OnboardFragment : Fragment() { login.setOnClickListener { findNavController().navigate(R.id.action_onboardFragment_to_signInFragment) } + + guest.setOnClickListener { + viewModel.guestLogin() + } } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt index 3fca38f..619b19b 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt @@ -21,6 +21,7 @@ import com.woka.onboard.models.RegisterRequestData import com.woka.onboard.mvvm.OnboardViewModel import com.woka.utils.Gender import com.woka.utils.ProgressView +import com.woka.utils.UserType import com.woka.utils.toast import java.text.SimpleDateFormat import java.util.Locale @@ -136,8 +137,17 @@ class SelectAvatarFragment : Fragment() { activity?.let {activity -> toast(it.message) - startActivity(Intent(activity, HomeActivity::class.java)) - activity.finish() + it.data?.result?.let { result-> + + // saving to user prefs + userPrefs?.accessToken = result.remember_token?:"no_token_received" + userPrefs?.userType = UserType.createUserType(result.user_type) + + startActivity(Intent(activity, HomeActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + activity.finish() + } } } null -> {} diff --git a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt index b6032a5..ade8844 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt @@ -1,5 +1,6 @@ package com.woka.onboard.fragments +import android.content.Intent import android.graphics.Color import android.os.Bundle import androidx.fragment.app.Fragment @@ -11,12 +12,15 @@ import android.widget.Toast import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.woka.R +import com.woka.WokaApp.Companion.userPrefs import com.woka.databinding.FragmentSignInBinding +import com.woka.home.HomeActivity import com.woka.networking.ApiResult import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_RESET_PASSWORD_INTENT import com.woka.onboard.mvvm.OnboardViewModel import com.woka.utils.DecisionDialog import com.woka.utils.ProgressView +import com.woka.utils.UserType import com.woka.utils.toast class SignInFragment : Fragment() { @@ -80,6 +84,12 @@ class SignInFragment : Fragment() { dialog.show() }else{ toast(it.message) + + // saving to user prefs + userPrefs?.accessToken = data.remember_token?:"no_value_received" + userPrefs?.userType = UserType.createUserType(data.user_type) + + gotoHomeActivity() } } } @@ -100,6 +110,7 @@ class SignInFragment : Fragment() { is ApiResult.Success -> { progressView.hide() toast(it.message) + gotoHomeActivity() } null -> {} } @@ -145,4 +156,13 @@ class SignInFragment : Fragment() { } } } + + private fun gotoHomeActivity(){ + activity?.let { activity-> + startActivity(Intent(activity, HomeActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + activity.finish() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/Gender.kt b/app/src/main/java/com/woka/onboard/models/Gender.kt deleted file mode 100644 index 4ff6541..0000000 --- a/app/src/main/java/com/woka/onboard/models/Gender.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.woka.onboard.models - -data class Gender( - val gender_name: String, - val id: Int -) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/GenderX.kt b/app/src/main/java/com/woka/onboard/models/GenderX.kt deleted file mode 100644 index dce7c6b..0000000 --- a/app/src/main/java/com/woka/onboard/models/GenderX.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.woka.onboard.models - -data class GenderX( - val gender_name: String, - val id: Int -) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/Guest.kt b/app/src/main/java/com/woka/onboard/models/Guest.kt new file mode 100644 index 0000000..b98199c --- /dev/null +++ b/app/src/main/java/com/woka/onboard/models/Guest.kt @@ -0,0 +1,6 @@ +package com.woka.onboard.models + +data class Guest( + val fullname: String?, + val username: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/Language.kt b/app/src/main/java/com/woka/onboard/models/Language.kt deleted file mode 100644 index fb6f42c..0000000 --- a/app/src/main/java/com/woka/onboard/models/Language.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.woka.onboard.models - -data class Language( - val id: Int, - val language_name: String -) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/LanguageX.kt b/app/src/main/java/com/woka/onboard/models/LanguageX.kt deleted file mode 100644 index 7a41328..0000000 --- a/app/src/main/java/com/woka/onboard/models/LanguageX.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.woka.onboard.models - -data class LanguageX( - val id: Int, - val language_name: String -) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/LoginResponse.kt b/app/src/main/java/com/woka/onboard/models/LoginResponse.kt index 03ffc62..c30c67f 100644 --- a/app/src/main/java/com/woka/onboard/models/LoginResponse.kt +++ b/app/src/main/java/com/woka/onboard/models/LoginResponse.kt @@ -1,4 +1,7 @@ package com.woka.onboard.models + +import com.woka.mvvm.userDataModels.UserData + data class LoginResponse( - val result: Result? + val result: UserData? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/RegisterData.kt b/app/src/main/java/com/woka/onboard/models/RegisterData.kt deleted file mode 100644 index b7c81e6..0000000 --- a/app/src/main/java/com/woka/onboard/models/RegisterData.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.woka.onboard.models - -data class RegisterData( - val already_logged_in: Boolean, - val avtar: String, - val birthdate: String, - val child_detail: Any, - val email: String, - val fullname: String, - val gender: GenderX, - val id: Int, - val language: LanguageX, - val language_master_id: Int, - val last_login: String, - val remember_token: String, - val user_type: String, - val username: String -) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/models/RegisterResponse.kt b/app/src/main/java/com/woka/onboard/models/RegisterResponse.kt index 4300f78..827e42c 100644 --- a/app/src/main/java/com/woka/onboard/models/RegisterResponse.kt +++ b/app/src/main/java/com/woka/onboard/models/RegisterResponse.kt @@ -1,5 +1,7 @@ package com.woka.onboard.models +import com.woka.mvvm.userDataModels.UserData + data class RegisterResponse( - val result: RegisterData + val result: UserData ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/mvvm/OnboardApiService.kt b/app/src/main/java/com/woka/onboard/mvvm/OnboardApiService.kt index e4a5d21..ddcff8d 100644 --- a/app/src/main/java/com/woka/onboard/mvvm/OnboardApiService.kt +++ b/app/src/main/java/com/woka/onboard/mvvm/OnboardApiService.kt @@ -4,6 +4,7 @@ import com.woka.networking.ApiResponse import com.woka.onboard.models.AvatarList import com.woka.onboard.models.ChildListResponse import com.woka.onboard.models.ForgotPasswrodOTPResponse +import com.woka.onboard.models.Guest import com.woka.onboard.models.InterestTopicResponse import com.woka.onboard.models.LoginResponse import com.woka.onboard.models.RegisterRequestData @@ -56,4 +57,7 @@ interface OnboardApiService { @POST("update_password") suspend fun updatePassword(@Body body: FormBody): Response> + @POST("guest_login") + suspend fun guestLogin(@Body body: FormBody): Response> + } \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/mvvm/OnboardRepository.kt b/app/src/main/java/com/woka/onboard/mvvm/OnboardRepository.kt index b882327..c18bf3f 100644 --- a/app/src/main/java/com/woka/onboard/mvvm/OnboardRepository.kt +++ b/app/src/main/java/com/woka/onboard/mvvm/OnboardRepository.kt @@ -1,5 +1,6 @@ package com.woka.onboard.mvvm +import com.woka.WokaApp import com.woka.networking.ApiResponse import com.woka.networking.ApiResult import com.woka.networking.RetrofitHelper.handleApiCall @@ -7,6 +8,7 @@ import com.woka.networking.RetrofitHelper.handleApiResponse import com.woka.onboard.models.AvatarList import com.woka.onboard.models.ChildListResponse import com.woka.onboard.models.ForgotPasswrodOTPResponse +import com.woka.onboard.models.Guest import com.woka.onboard.models.InterestTopicResponse import com.woka.onboard.models.LoginResponse import com.woka.onboard.models.RegisterRequestData @@ -148,4 +150,17 @@ class OnboardRepository(private val apiService: OnboardApiService) { } } + suspend fun guestLogin(): ApiResult{ + return handleApiCall { + apiService.guestLogin( + FormBody.Builder() + .add("language_id", if (WokaApp.userPrefs?.appLanguage == "hi") "2" else "1") + .add("user_type", "3") + .add("one_signal_player_id", "test") + .add("device_type", "1") + .build() + ) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/mvvm/OnboardViewModel.kt b/app/src/main/java/com/woka/onboard/mvvm/OnboardViewModel.kt index c1e4043..cb28cd3 100644 --- a/app/src/main/java/com/woka/onboard/mvvm/OnboardViewModel.kt +++ b/app/src/main/java/com/woka/onboard/mvvm/OnboardViewModel.kt @@ -11,6 +11,7 @@ import com.woka.onboard.models.AvatarList import com.woka.onboard.models.Child import com.woka.onboard.models.ChildListResponse import com.woka.onboard.models.ForgotPasswrodOTPResponse +import com.woka.onboard.models.Guest import com.woka.onboard.models.InterestTopicResponse import com.woka.onboard.models.LoginResponse import com.woka.onboard.models.RegisterRequestData @@ -39,6 +40,12 @@ class OnboardViewModel: ViewModel(){ val interestTopics = mutableSetOf() // live_data + // onboard fragment + private val _guestLogin = MutableLiveData?>() + fun clearGuestLoginData() = _guestLogin.postValue(null) + val guestLogin: LiveData?> + get() = _guestLogin + /* Login Fragment */ @@ -118,6 +125,14 @@ class OnboardViewModel: ViewModel(){ val updatePasswordLiveData: LiveData?> get() = _updatePasswordLiveData + fun guestLogin(){ + viewModelScope.launch { + _guestLogin.postValue(ApiResult.Loading()) + val response = repository.guestLogin() + _guestLogin.postValue(response) + } + } + fun login(userName: String, password: String){ viewModelScope.launch { _loginLiveData.postValue(ApiResult.Loading()) diff --git a/app/src/main/java/com/woka/userPreference/UserPreference.kt b/app/src/main/java/com/woka/userPreference/UserPreference.kt index 263edd1..95dc06a 100644 --- a/app/src/main/java/com/woka/userPreference/UserPreference.kt +++ b/app/src/main/java/com/woka/userPreference/UserPreference.kt @@ -6,12 +6,27 @@ import android.content.Context.MODE_PRIVATE import android.content.SharedPreferences import android.provider.Settings import android.provider.Settings.Secure +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import com.woka.mvvm.UserApiService +import com.woka.mvvm.UserRepository +import com.woka.mvvm.userDataModels.UserData +import com.woka.mvvm.userDataModels.UserDataResponse +import com.woka.networking.ApiResult +import com.woka.networking.RetrofitHelper +import com.woka.utils.UserType +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch class UserPreference(context: Context) { companion object{ private const val USER_PREFERENCE = "woka_user_preferences" private const val APP_LANGUAGE = "app_language" + private const val ACCESS_TOKEN = "access_token" + private const val USER_TYPE = "user_type" + private const val GUEST_USER_NAME = "guest_user_name" } private val userPrefs: SharedPreferences = context.getSharedPreferences(USER_PREFERENCE, MODE_PRIVATE) @@ -21,4 +36,29 @@ class UserPreference(context: Context) { var appLanguage: String get() = userPrefs.getString(APP_LANGUAGE, "en")?:"en" set(value) = userPrefs.edit().putString(APP_LANGUAGE, value).apply() + + var accessToken: String? + get() = userPrefs.getString(ACCESS_TOKEN, null) + set(value) = userPrefs.edit().putString(ACCESS_TOKEN, value).apply() + + var userType: UserType + get() = UserType.createUserType(userPrefs.getInt(USER_TYPE, -1)) + set(value) = userPrefs.edit().putInt(USER_TYPE, value.id).apply() + + var guestUserName: String? + get() = userPrefs.getString(GUEST_USER_NAME, null) + set(value) = userPrefs.edit().putString(GUEST_USER_NAME, value).apply() + + private val userRepository = UserRepository(RetrofitHelper.getRetrofit().create(UserApiService::class.java)) + + private val _userLiveData = MutableLiveData>() + val userLiveData: LiveData> + get() = _userLiveData + + fun loadUserData(){ + CoroutineScope(Dispatchers.IO).launch { + _userLiveData.postValue(ApiResult.Loading()) + _userLiveData.postValue(userRepository.getUserData()) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/utils/Constants.kt b/app/src/main/java/com/woka/utils/Constants.kt index 3f98762..e8c567f 100644 --- a/app/src/main/java/com/woka/utils/Constants.kt +++ b/app/src/main/java/com/woka/utils/Constants.kt @@ -1,5 +1,7 @@ package com.woka.utils +const val TAG = "aditya_testing" + const val PARENT_TYPE = "2" const val CHILD_TYPE = "1" diff --git a/app/src/main/java/com/woka/utils/UserType.kt b/app/src/main/java/com/woka/utils/UserType.kt new file mode 100644 index 0000000..06d8956 --- /dev/null +++ b/app/src/main/java/com/woka/utils/UserType.kt @@ -0,0 +1,19 @@ +package com.woka.utils + +enum class UserType(val id: Int) { + CHILD(1), + GUARDIAN(2), + GUEST(3), + NONE(-1); + + companion object{ + fun createUserType(id: Int?): UserType{ + return when(id){ + 1 -> CHILD + 2 -> GUARDIAN + 3 -> GUEST + else -> NONE + } + } + } +} \ 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 d27c75c..6a72abd 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -1,10 +1,11 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_decision_dialog.xml b/app/src/main/res/layout/layout_decision_dialog.xml index 49c5ba3..21129ad 100644 --- a/app/src/main/res/layout/layout_decision_dialog.xml +++ b/app/src/main/res/layout/layout_decision_dialog.xml @@ -45,6 +45,7 @@ android:layout_marginVertical="10dp" android:fontFamily="@font/exo_2_medium" android:textSize="@dimen/_14ssp" + android:textAlignment="center" android:textColor="@color/color_primary" tools:text="This is message that will be shown as subtitle"