Commit 7654afcf authored by shohboz's avatar shohboz

[ADD] MUS-107 Feature, added firebase to project

parent 47267ca3
......@@ -4,13 +4,14 @@ plugins {
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
id 'androidx.navigation.safeargs.kotlin'
id 'com.google.firebase.crashlytics'
}
android {
compileSdk 31
defaultConfig {
applicationId "uz.ssd.mobiuz"
applicationId "com.mobiuz.app"
minSdk 21
targetSdk 31
versionCode 1
......@@ -49,6 +50,13 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
// Firebase
implementation platform('com.google.firebase:firebase-bom:28.2.1')
implementation 'com.google.firebase:firebase-crashlytics-ktx:18.2.5'
implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
implementation 'com.google.firebase:firebase-messaging-ktx:23.0.0'
// Navigation
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
......
{
"project_info": {
"project_number": "453497477762",
"project_id": "mobiuz-7563b",
"storage_bucket": "mobiuz-7563b.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:453497477762:android:57da19692a77341ae9b29b",
"android_client_info": {
"package_name": "com.mobiuz.app"
}
},
"oauth_client": [
{
"client_id": "453497477762-t0b1iqi4k3t8s49mm7eco951kpdr4eta.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.mobiuz.app",
"certificate_hash": "0259d09452724d02cca3c034973f523c2485a232"
}
},
{
"client_id": "453497477762-1080ucujet6ca5dop6qc2f0k6vornqj6.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCpGAiOAd5TBCiDI_ZyVMZSkK-OH00LP5w"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "453497477762-1080ucujet6ca5dop6qc2f0k6vornqj6.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:453497477762:android:4e22d841473f89a3e9b29b",
"android_client_info": {
"package_name": "com.mobiuz.app.dev"
}
},
"oauth_client": [
{
"client_id": "453497477762-okn4u5uhp9mq1j85ckqds7bhieo4sbu6.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.mobiuz.app.dev",
"certificate_hash": "0259d09452724d02cca3c034973f523c2485a232"
}
},
{
"client_id": "453497477762-1080ucujet6ca5dop6qc2f0k6vornqj6.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCpGAiOAd5TBCiDI_ZyVMZSkK-OH00LP5w"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "453497477762-1080ucujet6ca5dop6qc2f0k6vornqj6.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}
\ No newline at end of file
package uz.ssd.mobiuz
package com.mobiuz.app
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.ktx.Firebase
import com.google.firebase.messaging.FirebaseMessaging
import com.google.firebase.messaging.ktx.messaging
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityAuthBinding
import uz.ssd.mobiuz.ui.global.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import com.mobiuz.app.databinding.ActivityAuthBinding
import com.mobiuz.app.model.SharedPref
import com.mobiuz.app.ui.global.CONSTANTS
import com.mobiuz.app.utils.Utils
import javax.inject.Inject
@AndroidEntryPoint
class AuthActivity : AppCompatActivity() {
@Inject
lateinit var pref: SharedPref
private var _bn: ActivityAuthBinding? = null
private val bn get() = _bn ?: throw NullPointerException("cannot inflate")
private lateinit var navController : NavController
private lateinit var navController: NavController
private lateinit var mFirebaseAnalytics: FirebaseAnalytics
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivityAuthBinding.inflate(layoutInflater)
setContentView(bn.root)
val fragment = supportFragmentManager.findFragmentById(R.id.auth_container) as NavHostFragment
val fragment = supportFragmentManager.findFragmentById(R.id.auth_container) as NavHostFragment
navController = NavHostFragment.findNavController(fragment)
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
// Firebase.messaging.subscribeToTopic("just").addOnCompleteListener { task ->
// Log.e("AAA", "subscribe: ${task.isSuccessful}")
// }
FirebaseMessaging.getInstance().token.addOnCompleteListener {
if(it.isSuccessful) pref.setDeviceToken(it.result.toString())
}
window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
intent?.let {
val type = it.getStringExtra(CONSTANTS.TYPE_AUTH)
if (type == CONSTANTS.PIN_CODE) {
navController.popBackStack()
navController.navigate(R.id.pinFragment,null,Utils.navOptions())
navController.navigate(R.id.pinFragment, null, Utils.navOptions())
}
}
}
......
package uz.ssd.mobiuz
package com.mobiuz.app
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContentProviderCompat.requireContext
import androidx.lifecycle.LiveData
import androidx.navigation.NavController
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.ktx.Firebase
import com.google.firebase.messaging.FirebaseMessaging
import com.google.firebase.messaging.ktx.messaging
import dagger.hilt.android.AndroidEntryPoint
import uz.ssd.mobiuz.databinding.ActivityMainBinding
import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.ui.global.FullScreenDialog
import uz.ssd.mobiuz.ui.global.CONSTANTS
import uz.ssd.mobiuz.utils.extensions.customLog
import uz.ssd.mobiuz.utils.extensions.setupWithNavController
import com.mobiuz.app.databinding.ActivityMainBinding
import com.mobiuz.app.model.SharedPref
import com.mobiuz.app.ui.global.CONSTANTS
import com.mobiuz.app.ui.global.FullScreenDialog
import com.mobiuz.app.utils.extensions.customLog
import com.mobiuz.app.utils.extensions.setupWithNavController
import javax.inject.Inject
......@@ -30,13 +34,22 @@ class MainActivity : AppCompatActivity() {
private lateinit var bottomNavigationView: BottomNavigationView
private var currentNavController: LiveData<NavController>? = null
private lateinit var mFirebaseAnalytics: FirebaseAnalytics
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_bn = ActivityMainBinding.inflate(layoutInflater)
setContentView(bn.root)
window.statusBarColor = Color.TRANSPARENT
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this)
// Firebase.messaging.subscribeToTopic("just").addOnCompleteListener { task ->
// Log.e("AAA", "subscribe: ${task.isSuccessful}")
// }
FirebaseMessaging.getInstance().token.addOnCompleteListener {
if(it.isSuccessful) pref.setDeviceToken(it.result.toString())
}
if (savedInstanceState == null) {
setupBottomNavigationBar()
}
......
package uz.ssd.mobiuz.di
package com.mobiuz.app.di
import android.content.Context
import com.readystatesoftware.chuck.ChuckInterceptor
......@@ -13,10 +13,10 @@ import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory
import uz.ssd.mobiuz.model.SharedPref
import uz.ssd.mobiuz.network.api.ApiService
import uz.ssd.mobiuz.ui.global.CONSTANTS
import uz.ssd.mobiuz.utils.Utils
import com.mobiuz.app.model.SharedPref
import com.mobiuz.app.network.api.ApiService
import com.mobiuz.app.ui.global.CONSTANTS
import com.mobiuz.app.utils.Utils
import javax.inject.Singleton
@Module
......@@ -52,7 +52,7 @@ class ServerModule {
val builder = chain.request().newBuilder()
builder.header("Content-Type", "application/x-www-form-urlencoded")
builder.header("Lang", sharedPref.language)
builder.header("device-id", Utils.getDeviceName())
builder.header("device-id", sharedPref.getDeviceToken() ?: Utils.getDeviceName())
builder.header("Accept", "application/json")
builder.header("Authorization", "Bearer ${sharedPref.getUserToken()}")
chain.proceed(builder.build())
......
package uz.ssd.mobiuz.model
package com.mobiuz.app.model
import android.content.Context
import android.content.SharedPreferences
......@@ -7,7 +7,7 @@ import javax.inject.Inject
class SharedPref @Inject constructor(@ApplicationContext context: Context) {
private var mySharedPref: SharedPreferences = context.getSharedPreferences("mvd", Context.MODE_PRIVATE)
private var mySharedPref: SharedPreferences = context.getSharedPreferences("mobiuz", Context.MODE_PRIVATE)
fun setDeviceToken(token: String) {
mySharedPref.edit().putString("device_token", token).apply()
......@@ -26,25 +26,25 @@ class SharedPref @Inject constructor(@ApplicationContext context: Context) {
}
var language: String
get() = mySharedPref.getString(::language.name, "")?:""
get() = mySharedPref.getString(::language.name, "") ?: ""
set(value) {
mySharedPref.edit().putString(::language.name, value).apply()
}
var pin_code: String
get() = mySharedPref.getString(::pin_code.name, "")?:""
get() = mySharedPref.getString(::pin_code.name, "") ?: ""
set(value) {
mySharedPref.edit().putString(::pin_code.name, value).apply()
}
var isRegistered: Boolean
get() = mySharedPref.getBoolean("isRegistered", false)
get() = mySharedPref.getBoolean(::isRegistered.name, false)
set(value) {
mySharedPref.edit().putBoolean("isRegistered", value).apply()
mySharedPref.edit().putBoolean(::isRegistered.name, value).apply()
}
var userPhone: String
get() = mySharedPref.getString(::userPhone.name, "")?:""
get() = mySharedPref.getString(::userPhone.name, "") ?: ""
set(value) {
mySharedPref.edit().putString(::userPhone.name, value).apply()
}
......
......@@ -20,6 +20,7 @@ buildscript {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.0-beta02"
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment