diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 701e14b..10d8619 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,11 +16,17 @@
android:theme="@style/Theme.Woka"
tools:targetApi="31">
+ android:name=".modules.disclaimer.DisclaimerActivity"
+ android:exported="false"
+ android:screenOrientation="portrait" />
+
+ android:exported="false"
+ android:screenOrientation="portrait" />
?>,
@@ -331,6 +337,28 @@ class HomeActivity : WokaBaseActivity(),
}
}
+ sbTermsNConditionsCard.setOnClickListener {
+ startActivity(
+ Intent(this@HomeActivity, WebViewActivity::class.java).apply {
+ putExtra(WEB_VIEW_URL, TERMS_N_CONDITIONS_URL)
+ }
+ )
+ }
+
+ sbPrivacyNPolicyCard.setOnClickListener {
+ startActivity(
+ Intent(this@HomeActivity, WebViewActivity::class.java).apply {
+ putExtra(WEB_VIEW_URL, PRIVACY_N_POLICY_URL)
+ }
+ )
+ }
+
+ sbDisclaimerCard.setOnClickListener {
+ startActivity(
+ Intent(this@HomeActivity, DisclaimerActivity::class.java)
+ )
+ }
+
}
}
@@ -504,6 +532,15 @@ class HomeActivity : WokaBaseActivity(),
sbBtn.text = getString(R.string.logout)
}
}
+
+ value.data?.userNotificationsCount?.let {
+ if (it == 0){
+ binding.notiCountView.hide()
+ }else{
+ binding.notiCountView.show()
+ binding.notiCount.text = "${min(it, 99)}"
+ }
+ }?:binding.notiCountView.hide()
}
null -> {}
diff --git a/app/src/main/java/com/woka/home/MoreHomeActivity.kt b/app/src/main/java/com/woka/home/MoreHomeActivity.kt
index 2af1cb1..711ceb6 100644
--- a/app/src/main/java/com/woka/home/MoreHomeActivity.kt
+++ b/app/src/main/java/com/woka/home/MoreHomeActivity.kt
@@ -7,16 +7,19 @@ import android.view.WindowManager
import androidx.activity.enableEdgeToEdge
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
+import androidx.lifecycle.ViewModelProvider
+import com.google.android.exoplayer2.ExoPlayer
import com.woka.R
import com.woka.databinding.ActivityMoreHomeBinding
import com.woka.modules.blogs.BlogsAdapter
import com.woka.modules.blogs.BlogsRepository
+import com.woka.modules.wokasongs.WokaSongsAdapter
+import com.woka.modules.wokasongs.WokaSongsRepository
import com.woka.networking.ApiResult
import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide
import com.woka.utils.lightStatusBar
import com.woka.utils.show
-import com.woka.utils.toast
class MoreHomeActivity : WokaBaseActivity() {
@@ -24,6 +27,12 @@ class MoreHomeActivity : WokaBaseActivity() {
private lateinit var blogsAdapter: BlogsAdapter
+ private lateinit var viewModel: MoreViewModel
+
+ private lateinit var songsAdapter: WokaSongsAdapter
+
+ private var player: ExoPlayer? = null
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
with(window){
@@ -45,7 +54,10 @@ class MoreHomeActivity : WokaBaseActivity() {
lightStatusBar()
}
+ viewModel = ViewModelProvider(this)[MoreViewModel::class.java]
+
blogsAdapter = BlogsAdapter()
+ songsAdapter = WokaSongsAdapter()
initViews()
@@ -65,6 +77,7 @@ class MoreHomeActivity : WokaBaseActivity() {
private fun initViews(){
binding.apply {
rvBlogs.adapter = blogsAdapter
+ rvWokaSongs.adapter = songsAdapter
}
}
@@ -72,7 +85,6 @@ class MoreHomeActivity : WokaBaseActivity() {
BlogsRepository.blogsLiveData.observe(this){
when(it){
is ApiResult.Error -> {
- toast(it.errorMessage)
binding.blogsTxt.hide()
binding.rvBlogs.hide()
}
@@ -91,5 +103,27 @@ class MoreHomeActivity : WokaBaseActivity() {
null -> {}
}
}
+
+ WokaSongsRepository.wokaSongsLiveData.observe(this){
+ when(it){
+ is ApiResult.Error -> {
+ binding.wokaSongsTxt.hide()
+ binding.rvWokaSongs.hide()
+ }
+ is ApiResult.Loading -> {
+ binding.wokaSongsTxt.hide()
+ binding.rvWokaSongs.hide()
+ }
+ is ApiResult.Success -> {
+
+ it.data?.paint_data?.let {songList ->
+ binding.wokaSongsTxt.show()
+ binding.rvWokaSongs.show()
+
+ songsAdapter.submitList(songList)
+ }
+ }
+ }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/home/MoreViewModel.kt b/app/src/main/java/com/woka/home/MoreViewModel.kt
new file mode 100644
index 0000000..f7e528d
--- /dev/null
+++ b/app/src/main/java/com/woka/home/MoreViewModel.kt
@@ -0,0 +1,7 @@
+package com.woka.home
+
+import androidx.lifecycle.ViewModel
+
+class MoreViewModel: ViewModel() {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt b/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt
index ae742c6..f1554e6 100644
--- a/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt
+++ b/app/src/main/java/com/woka/home/sidebar/profile/UserProfileActivity.kt
@@ -16,6 +16,7 @@ import com.woka.userdata.userDataModels.UserData
import com.woka.networking.ApiResult
import com.woka.utils.Gender
import com.woka.utils.ProgressView
+import com.woka.utils.UserType
import com.woka.utils.WokaBaseActivity
import com.woka.utils.hide
import com.woka.utils.toast
@@ -44,11 +45,23 @@ class UserProfileActivity : WokaBaseActivity() {
viewModel = ViewModelProvider(this)[ProfileViewModel::class.java]
progressView = ProgressView(this, getString(R.string.please_wait))
+ initViews()
+
clickEvents()
setObservers()
}
+ private fun initViews() {
+ binding.apply {
+ genderMTxt.text = if (userPrefs?.userType == UserType.GUARDIAN) getString(R.string.male)
+ else getString(R.string.boy)
+
+ genderFTxt.text = if (userPrefs?.userType == UserType.GUARDIAN) getString(R.string.female)
+ else getString(R.string.girl)
+ }
+ }
+
private fun clickEvents() {
binding.apply {
genderM.setOnClickListener { selectGender(Gender.MALE) }
diff --git a/app/src/main/java/com/woka/modules/ModuleApiService.kt b/app/src/main/java/com/woka/modules/ModuleApiService.kt
index 09f01eb..b8e6caa 100644
--- a/app/src/main/java/com/woka/modules/ModuleApiService.kt
+++ b/app/src/main/java/com/woka/modules/ModuleApiService.kt
@@ -2,6 +2,7 @@ package com.woka.modules
import com.woka.modules.blogs.models.BlogsResponse
import com.woka.modules.faqs.models.FaqResponse
+import com.woka.modules.wokasongs.models.WokaSongsResponse
import com.woka.networking.ApiResponse
import okhttp3.FormBody
import retrofit2.Response
@@ -22,4 +23,7 @@ interface ModuleApiService {
@POST("user_queries_store")
suspend fun supportForUser(@Body body: FormBody): Response>
+
+ @POST("song_listing")
+ suspend fun getWokaSongs(): Response>
}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt b/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt
new file mode 100644
index 0000000..0b393b8
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/disclaimer/DisclaimerActivity.kt
@@ -0,0 +1,30 @@
+package com.woka.modules.disclaimer
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.woka.R
+import com.woka.databinding.ActivityDisclaimerBinding
+import com.woka.utils.WokaBaseActivity
+
+class DisclaimerActivity : WokaBaseActivity() {
+
+ private lateinit var binding: ActivityDisclaimerBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ binding = ActivityDisclaimerBinding.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
+ }
+
+ binding.backBtn.setOnClickListener {
+ onBackPressedDispatcher.onBackPressed()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt b/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt
new file mode 100644
index 0000000..34be90f
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/webview/WebViewActivity.kt
@@ -0,0 +1,77 @@
+package com.woka.modules.webview
+
+import android.annotation.SuppressLint
+import android.graphics.Bitmap
+import android.os.Build
+import android.os.Bundle
+import android.webkit.WebResourceRequest
+import android.webkit.WebSettings
+import android.webkit.WebView
+import android.webkit.WebViewClient
+import android.widget.ProgressBar
+import androidx.activity.enableEdgeToEdge
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.woka.R
+import com.woka.databinding.ActivityWebViewBinding
+import com.woka.utils.WEBSITE_BASE_URL
+import com.woka.utils.WokaBaseActivity
+import com.woka.utils.hide
+import com.woka.utils.show
+
+class WebViewActivity : WokaBaseActivity() {
+
+ companion object{
+ const val WEB_VIEW_URL = "web_view_url"
+ }
+
+ private lateinit var binding: ActivityWebViewBinding
+
+ @SuppressLint("SetJavaScriptEnabled")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ binding = ActivityWebViewBinding.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
+ }
+
+ intent.getStringExtra(WEB_VIEW_URL)?.let {
+ val webSettings: WebSettings = binding.webView.getSettings()
+ webSettings.javaScriptEnabled = true
+
+ webSettings.allowFileAccess = false;
+ webSettings.allowContentAccess = false;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ webSettings.safeBrowsingEnabled = true
+ };
+
+ binding.webView.setWebViewClient(SecureWebViewClient(binding.progressBar))
+
+ binding.webView.loadUrl(it)
+ }
+ }
+
+ private class SecureWebViewClient(val progressBar: ProgressBar) : WebViewClient() {
+
+ override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
+ super.onPageStarted(view, url, favicon)
+ progressBar.show()
+ }
+
+ override fun onPageFinished(view: WebView?, url: String?) {
+ super.onPageFinished(view, url)
+ progressBar.hide()
+ }
+
+ override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
+ val url = request.url.toString()
+ return !url.startsWith(WEBSITE_BASE_URL)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt b/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt
new file mode 100644
index 0000000..22849b1
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/wokasongs/WokaSongsAdapter.kt
@@ -0,0 +1,46 @@
+package com.woka.modules.wokasongs
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.AsyncDifferConfig
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView.ViewHolder
+import com.woka.databinding.WokaSongViewHolderBinding
+import com.woka.modules.wokasongs.models.SongData
+import java.util.concurrent.Executors
+
+class WokaSongsAdapter(config: AsyncDifferConfig): ListAdapter(config) {
+
+ inner class SongViewHolder(val binding: WokaSongViewHolderBinding): ViewHolder(binding.root)
+
+ companion object{
+ private val DIFF_UTILS = object : DiffUtil.ItemCallback(){
+ override fun areItemsTheSame(oldItem: SongData, newItem: SongData): Boolean =
+ oldItem.id == newItem.id
+
+ override fun areContentsTheSame(oldItem: SongData, newItem: SongData): Boolean =
+ oldItem == newItem
+ }
+
+ private val ASYNC_DIFF_CONFIG = AsyncDifferConfig.Builder(DIFF_UTILS)
+ .setBackgroundThreadExecutor(Executors.newSingleThreadExecutor())
+ .build()
+ }
+
+ constructor(): this(ASYNC_DIFF_CONFIG)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SongViewHolder {
+ return SongViewHolder(
+ WokaSongViewHolderBinding.inflate(LayoutInflater.from(parent.context),
+ parent, false)
+ )
+ }
+
+ override fun onBindViewHolder(holder: SongViewHolder, position: Int) {
+ val songData = getItem(position)
+ holder.binding.apply {
+ title.text = songData.title
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/wokasongs/WokaSongsRepository.kt b/app/src/main/java/com/woka/modules/wokasongs/WokaSongsRepository.kt
new file mode 100644
index 0000000..b9a5fe1
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/wokasongs/WokaSongsRepository.kt
@@ -0,0 +1,37 @@
+package com.woka.modules.wokasongs
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import com.woka.modules.ModuleApiService
+import com.woka.modules.wokasongs.models.WokaSongsResponse
+import com.woka.networking.ApiResult
+import com.woka.networking.RetrofitHelper
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+
+object WokaSongsRepository {
+
+ private val apiService = RetrofitHelper.getRetrofit().create(ModuleApiService::class.java)
+
+ private val _wokaSongsLiveData = MutableLiveData>()
+ val wokaSongsLiveData: LiveData>
+ get() = _wokaSongsLiveData
+
+ init {
+ loadWokaSongs()
+ }
+
+ private suspend fun getWokaSongs(): ApiResult{
+ return RetrofitHelper.handleApiCall {
+ apiService.getWokaSongs()
+ }
+ }
+
+ private fun loadWokaSongs(){
+ CoroutineScope(Dispatchers.IO).launch {
+ _wokaSongsLiveData.postValue(ApiResult.Loading())
+ _wokaSongsLiveData.postValue(getWokaSongs())
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/wokasongs/models/ContentMoreDetail.kt b/app/src/main/java/com/woka/modules/wokasongs/models/ContentMoreDetail.kt
new file mode 100644
index 0000000..31fb524
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/wokasongs/models/ContentMoreDetail.kt
@@ -0,0 +1,12 @@
+package com.woka.modules.wokasongs.models
+
+data class ContentMoreDetail(
+ val content_id: Int?,
+ val description: String?,
+ val id: Int?,
+ val language_master_id: Int?,
+ val post_type: Int?,
+ val tags_keywords: String?,
+ val title: String?,
+ val url: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/wokasongs/models/SongData.kt b/app/src/main/java/com/woka/modules/wokasongs/models/SongData.kt
new file mode 100644
index 0000000..2b2b1ee
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/wokasongs/models/SongData.kt
@@ -0,0 +1,23 @@
+package com.woka.modules.wokasongs.models
+
+data class SongData(
+ val age_range_data: List?,
+ val age_range_master_id: String?,
+ val bookmark_count: Int?,
+ val category_data: List?,
+ val category_master_id: String?,
+ val content_more_details: List?,
+ val description: String?,
+ val gender_data: List?,
+ val gender_master_id: String?,
+ val id: Int?,
+ val is_liked: Boolean?,
+ val language_master_id: Int?,
+ val likes_count: Int?,
+ val mark_as_favourite: Boolean?,
+ val release_date: String?,
+ val song_duration: String?,
+ val tags_keyword: String?,
+ val thumbnail_image: String?,
+ val title: String?
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/wokasongs/models/WokaSongsResponse.kt b/app/src/main/java/com/woka/modules/wokasongs/models/WokaSongsResponse.kt
new file mode 100644
index 0000000..ff4c682
--- /dev/null
+++ b/app/src/main/java/com/woka/modules/wokasongs/models/WokaSongsResponse.kt
@@ -0,0 +1,6 @@
+package com.woka.modules.wokasongs.models
+
+data class WokaSongsResponse(
+ val paint_data: List?,
+ val total_records: 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 3bdc6bb..78eb7c3 100644
--- a/app/src/main/java/com/woka/networking/RetrofitHelper.kt
+++ b/app/src/main/java/com/woka/networking/RetrofitHelper.kt
@@ -83,10 +83,17 @@ object RetrofitHelper {
fun handleApiResponse(response: Response>): ApiResult {
if (response.isSuccessful) {
val body = response.body() ?: return ApiResult.Error(errorMessage = "Empty Response")
- return if (body.success == 1) {
- ApiResult.Success(body.data, body.message)
- } else {
- ApiResult.Error(errorMessage = body.message, error = NoSuccessError())
+ return when (body.success) {
+ 1 -> {
+ ApiResult.Success(body.data, body.message)
+ }
+ 4 -> {
+ userPrefs?.logout(true)
+ ApiResult.Error(errorMessage = body.message, error = SessionExpiredError())
+ }
+ else -> {
+ ApiResult.Error(errorMessage = body.message, error = NoSuccessError())
+ }
}
} else {
return ApiResult.Error(errorMessage = response.message())
diff --git a/app/src/main/java/com/woka/networking/SessionExpiredError.kt b/app/src/main/java/com/woka/networking/SessionExpiredError.kt
new file mode 100644
index 0000000..ac9ea90
--- /dev/null
+++ b/app/src/main/java/com/woka/networking/SessionExpiredError.kt
@@ -0,0 +1,3 @@
+package com.woka.networking
+
+class SessionExpiredError: Throwable()
\ 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 242e3d7..1fc3b6b 100644
--- a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt
+++ b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt
@@ -78,7 +78,7 @@ class SelectAvatarFragment : Fragment() {
val registerRequestData = with(viewModel){
RegisterRequestData(
- add_child = "0",
+ add_child = if (viewModel.addChildIntent) "1" else "0",
avtar = adapter?.avatarList?.get(selectedAvatarPos!!)?.avatar_name,
birthdate = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(selectedDOB.time),
email = email,
diff --git a/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt
index ebf6bf4..5c76ea4 100644
--- a/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt
+++ b/app/src/main/java/com/woka/onboard/fragments/SignUpFragment.kt
@@ -132,6 +132,7 @@ class SignUpFragment : Fragment() {
passwordTitle.text = getString(R.string.password)
viewModel.email = email
+ viewModel.addChildIntent = true
}
}
}
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 1c20e24..1781681 100644
--- a/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt
+++ b/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt
@@ -95,9 +95,13 @@ class SplashFragment : Fragment(), Observer?> {
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)
+ try {
+ val extras = FragmentNavigatorExtras(binding.logo to "logo")
+ findNavController().navigate(R.id.action_splashFragment_to_languageFragment,
+ null, null, extras)
+ } catch (e: Exception) {
+ // do nothing
+ }
}else{
// going to home activity as any of the user is logged in
activity?.let {
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 cdc792f..2fba21f 100644
--- a/app/src/main/java/com/woka/onboard/mvvm/OnboardViewModel.kt
+++ b/app/src/main/java/com/woka/onboard/mvvm/OnboardViewModel.kt
@@ -36,6 +36,8 @@ class OnboardViewModel: ViewModel(){
var name: String? = null
var password: String? = null
+ var addChildIntent: Boolean = false
+
var childList: List? = null
val interestTopics = mutableSetOf()
diff --git a/app/src/main/java/com/woka/userPreference/UserPreference.kt b/app/src/main/java/com/woka/userPreference/UserPreference.kt
index 7720199..a302e0f 100644
--- a/app/src/main/java/com/woka/userPreference/UserPreference.kt
+++ b/app/src/main/java/com/woka/userPreference/UserPreference.kt
@@ -3,12 +3,14 @@ package com.woka.userPreference
import android.annotation.SuppressLint
import android.content.Context
import android.content.Context.MODE_PRIVATE
+import android.content.Intent
import android.content.SharedPreferences
import android.provider.Settings.Secure
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.woka.home.Theme
import com.woka.networking.ApiResult
+import com.woka.onboard.OnboardActivity
import com.woka.userdata.UserRepository
import com.woka.userdata.userDataModels.UserData
import com.woka.userdata.userDataModels.UserDataResponse
@@ -17,7 +19,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
-class UserPreference(context: Context) {
+class UserPreference(val context: Context) {
companion object {
private const val USER_PREFERENCE = "woka_user_preferences"
@@ -95,9 +97,15 @@ class UserPreference(context: Context) {
}
}
- fun logout(){
+ fun logout(openLoginScreen: Boolean = false){
accessToken = null
userType = if (guestUserName == null) UserType.NONE else UserType.GUEST
_userLiveData.postValue(null)
+
+ if (openLoginScreen){
+ context.startActivity(Intent(context, OnboardActivity::class.java).apply {
+ addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
+ })
+ }
}
}
\ 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 19759a7..3526bdd 100644
--- a/app/src/main/java/com/woka/utils/Constants.kt
+++ b/app/src/main/java/com/woka/utils/Constants.kt
@@ -11,4 +11,9 @@ const val UNKNOWN_ERROR_MESSAGE = "An unknown error occurred"
// language code
const val LOCALE_HINDI = "hi"
-const val LOCALE_ENGLISH = "en"
\ No newline at end of file
+const val LOCALE_ENGLISH = "en"
+
+// website urls
+const val WEBSITE_BASE_URL = "https://www.wokaland.com/"
+const val TERMS_N_CONDITIONS_URL = "https://www.wokaland.com/terms/"
+const val PRIVACY_N_POLICY_URL = "https://www.wokaland.com/privacy-policy/"
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..dfc18af
--- /dev/null
+++ b/app/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_play.xml b/app/src/main/res/drawable/ic_play.xml
new file mode 100644
index 0000000..d7fc626
--- /dev/null
+++ b/app/src/main/res/drawable/ic_play.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_disclaimer.xml b/app/src/main/res/layout/activity_disclaimer.xml
new file mode 100644
index 0000000..98a7515
--- /dev/null
+++ b/app/src/main/res/layout/activity_disclaimer.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 71d4c4b..78a9f66 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -16,24 +16,61 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
- android:contentDescription="@string/image"
- android:src="@drawable/img_notification"
- android:scaleType="fitXY"
- />
+
+
+
+
+
+
+
+
+
-
- android:text="@string/terms_conditions"
- android:fontFamily="@font/exo_2_medium"
- android:textColor="@color/white"
- android:textSize="@dimen/_10ssp"
+
- android:foreground="?android:attr/selectableItemBackground"
- />
+
-
- android:text="@string/privacy_policy"
- android:fontFamily="@font/exo_2_medium"
- android:textColor="@color/white"
- android:textSize="@dimen/_10ssp"
+
- android:foreground="?android:attr/selectableItemBackground"
- />
+
@@ -619,24 +662,26 @@
android:layout_marginVertical="8dp"
/>
-
- android:text="@string/disclaimer"
- android:fontFamily="@font/exo_2_medium"
- android:textColor="@color/white"
- android:textSize="@dimen/_10ssp"
+
+ android:paddingVertical="5dp"
+ android:paddingHorizontal="5dp"
+ />
+
+ android:orientation="vertical">
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_web_view.xml b/app/src/main/res/layout/activity_web_view.xml
new file mode 100644
index 0000000..22acb06
--- /dev/null
+++ b/app/src/main/res/layout/activity_web_view.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/woka_song_view_holder.xml b/app/src/main/res/layout/woka_song_view_holder.xml
new file mode 100644
index 0000000..da28924
--- /dev/null
+++ b/app/src/main/res/layout/woka_song_view_holder.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 95e51ff..78b7a96 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -120,4 +120,11 @@
ब्लॉग
मासिला
ट्रेलर चलाएं
+ प्रोफ़ाइल अपडेट करें
+ पूरा नाम
+ आपकी जन्म तिथि
+ अपडेट
+ बच्चे का खाता जोड़ें
+ बच्चे का नाम
+ अपने बच्चे का नाम दर्ज करें
\ 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 84a07e8..919f6dd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -138,14 +138,14 @@
Blogs
MASILA
PLAY TRAILER
- WOKA endeavours to make this world a happier and a safe place for Children. A world where families and communities unite joyfully in celebration of their unity and learn from each other\'s diversity.
- Frequently asked questions
- Subject
- Message
- Enter your message
- Submit
- Email
- Name
+ WOKA endeavours to make this world a happier and a safe place for Children. A world where families and communities unite joyfully in celebration of their unity and learn from each other\'s diversity.
+ Frequently asked questions
+ Subject
+ Message
+ Enter your message
+ Submit
+ Email
+ Name
Update profile
Full name
Your birthdate
@@ -153,9 +153,12 @@
Add child account
CHILD NAME
Enter your child\'s name
- Add child account
- DeActivate WOKA account?
- By clicking on the button below your account will get deactivated. Your data will be erased after a month.
- Activate WOKA account
- Would you like to re-activate your account?
+ Add child account
+ DeActivate WOKA account?
+ By clicking on the button below your account will get deactivated. Your data will be erased after a month.
+ Activate WOKA account
+ Would you like to re-activate your account?
+
+ THE USER AGREES AND UNDERSTANDS THAT THE PLATFORM IS PROVIDED BY US ON AN “AS IS” AND “AS AVAILABLE” BASIS AND WE MAKE NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE OPERATION OF THE PLATFORM OR THE INFORMATION AND CONTENT INCLUDED ON THE PLATFORM. YOU EXPRESSLY AGREE THAT YOUR USE OF THE PLATFORM IS AT YOUR SOLE RISK.\n\nTO THE FULLEST EXTENT PERMISSIBLE BY APPLICABLE LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED. WE DO NOT WARRANT THAT THE PLATFORM, ITS SERVERS, OR EMAIL/OTHER COMMUNICATION SENT FROM THE PLATFORM ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. WE WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THE PLATFORM, INCLUDING, BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE, AND CONSEQUENTIAL DAMAGES.\n\nALL INTERACTION, COMMUNICATION, DEALING, OR TRANSACTION BETWEEN THE USERS AND THE THIRD-PARTY PROVIDER IN RESPECT OF ANY PRODUCTS/SERVICES OFFERED BY THE THIRD-PARTY PROVIDER IS A SEPARATE AND INDEPENDENT TRANSACTION BETWEEN THE USER AND SUCH THIRD-PARTY PROVIDER WITHOUT ANY LIABILITY ACCRUING TO OR ON US FOR ANY MATTERS ARISING OUT OF OR IN RELATION TO THE SAME. THE USER EXPRESSLY AGREES AND ACKNOWLEDGES TO HOLD HARMLESS US IN RESPECT OF ANY COST, CLAIMS, DAMAGE, LOSS, OR EXPENSES ACCRUED, SUFFERED, INCURRED BY US OR ANY THIRD PARTY ARISING OUT OF OR IN CONNECTION WITH ANY SUCH COMMUNICATION, INTERACTION, DEALINGS, AND TRANSACTIONS BETWEEN THE USER AND THIRD-PARTY PROVIDERS. THE USER ACKNOWLEDGES THAT WE DO NOT HAVE ANY CONTROL OVER SUCH DEALINGS AND TRANSACTIONS AND PLAYS NO DETERMINATIVE ROLE IN THE PERFORMANCE IN RESPECT OF THE SAME AND WE SHALL NOT BE LIABLE FOR THE OUTCOMES OF SUCH COMMUNICATION, INTERACTION, DEALINGS, AND TRANSACTIONS BETWEEN THE USERS AND THE THIRD-PARTY PROVIDERS.\n\nWE DO NOT WARRANT, ENDORSE, GUARANTEE, OR ASSUME RESPONSIBILITY FOR ANY PRODUCT OR SERVICE ADVERTISED OR OFFERED BY A THIRD-PARTY PROVIDER IN ANY MANNER AND WE WILL NOT BE A PARTY TO OR IN ANY WAY BE RESPONSIBLE FOR ANY TRANSACTION BETWEEN YOU AND SUCH PARTY PROVIDER. AS WITH THE PURCHASE OF A PRODUCT OR SERVICE THROUGH ANY MEDIUM THROUGH SUCH THIRD-PARTY PROVIDER, YOU SHOULD USE YOUR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE.
+ WOKA Songs
\ No newline at end of file