Skip to content

Commit

Permalink
Merge pull request #286 from Scents-Note/feat/283-ga
Browse files Browse the repository at this point in the history
[feat] GA 적용
  • Loading branch information
Haeeul authored Oct 24, 2023
2 parents 9d26138 + bf7ac26 commit 4083814
Show file tree
Hide file tree
Showing 36 changed files with 391 additions and 41 deletions.
7 changes: 0 additions & 7 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@ package com.scentsnote.android
import android.app.Application
import android.content.Context
import androidx.appcompat.app.AppCompatDelegate
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.ktx.Firebase
import com.scentsnote.android.data.local.preference.SharedPreferencesManager

class ScentsNoteApplication : Application() {

companion object {
lateinit var prefManager : SharedPreferencesManager
lateinit var firebaseAnalytics: FirebaseAnalytics

private var instance: ScentsNoteApplication? = null
fun applicationContext() : Context {
return instance!!.applicationContext
Expand All @@ -19,6 +24,7 @@ class ScentsNoteApplication : Application() {
super.onCreate()
instance = this
prefManager = SharedPreferencesManager(applicationContext)
firebaseAnalytics = Firebase.analytics
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ data class SeriesInfo(

@Parcelize
data class SeriesIngredient(
val ingredientIdx: Int = 2,
val id: Int = 2,
val name: String = "베르가못",
var seriesName: String,
var checked: Boolean = false,
Expand All @@ -49,7 +49,7 @@ data class SeriesIngredient(
oldItem: SeriesIngredient,
newItem: SeriesIngredient
): Boolean {
return oldItem.ingredientIdx == newItem.ingredientIdx
return oldItem.id == newItem.id
}

override fun areContentsTheSame(
Expand Down
29 changes: 28 additions & 1 deletion app/src/main/java/com/scentsnote/android/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ import androidx.navigation.ui.setupWithNavController
import com.scentsnote.android.R
import com.scentsnote.android.databinding.ActivityMainBinding
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.utils.base.BaseActivity
import com.scentsnote.android.utils.extension.setClickEvent

class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {
private lateinit var navController: NavController
private lateinit var bottomNav: BottomNavigationView

private lateinit var toast: Toast
private var backPressedTime: Long = 0
Expand All @@ -21,6 +24,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {
toast = Toast.makeText(this, getString(R.string.txt_app_end_message), Toast.LENGTH_SHORT)

initNavigation()
initNavigationEvent()
}

override fun onPause() {
Expand All @@ -29,12 +33,35 @@ class MainActivity : BaseActivity<ActivityMainBinding>(R.layout.activity_main) {
}

private fun initNavigation() {
val bottomNav = findViewById<BottomNavigationView>(R.id.bottom_navigation)
bottomNav = findViewById(R.id.bottom_navigation)
navController = Navigation.findNavController(this, R.id.nav_host_fragment)
bottomNav.setupWithNavController(navController)
bottomNav.itemIconTintList = null
}

private fun initNavigationEvent(){
bottomNav.setOnItemSelectedListener { menuItem ->
var buttonName = ""

when (menuItem.itemId) {
R.id.homeFragment -> {
buttonName = "NavigationHome"
}
R.id.searchFragment -> {
buttonName = "NavigationSearch"
}
R.id.myPageFragment -> {
buttonName = "NavigationMy"
}
}

firebaseAnalytics.setClickEvent(buttonName)

navController.navigate(menuItem.itemId)
true
}
}

override fun onBackPressed() {
if (navController.currentDestination?.id == R.id.homeFragment) {
if (System.currentTimeMillis() - backPressedTime < 2000) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@ import com.scentsnote.android.ui.detail.note.DetailNoteFragment
import com.scentsnote.android.ui.note.NoteActivity
import com.scentsnote.android.utils.*
import com.bumptech.glide.Glide
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.viewmodel.detail.PerfumeDetailViewModel
import com.scentsnote.android.utils.adapter.BindingAdapter.setNoteBtnText
import com.scentsnote.android.utils.extension.changeTabsFont
import com.scentsnote.android.utils.extension.setOnSafeClickListener
import com.scentsnote.android.utils.base.BaseActivity
import com.scentsnote.android.utils.extension.setPageViewEvent
import com.scentsnote.android.utils.extension.toast
import com.scentsnote.android.utils.listener.TabSelectedListener

Expand Down Expand Up @@ -65,6 +67,8 @@ class PerfumeDetailActivity :

detailViewModel.getPerfumeInfo(perfumeIdx)
detailViewModel.getPerfumeInfoWithReview(perfumeIdx)

firebaseAnalytics.setPageViewEvent("DetailInfo",this::class.java.name)
}

private fun initInfo() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,27 @@ package com.scentsnote.android.ui.filter

import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.google.android.material.badge.BadgeDrawable
import com.google.firebase.analytics.ktx.logEvent
import com.scentsnote.android.R
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.data.vo.request.FilterInfoP
import com.scentsnote.android.data.vo.request.SendFilter
import com.scentsnote.android.databinding.FragmentFilterBinding
import com.scentsnote.android.ui.filter.brand.FilterBrandFragment
import com.scentsnote.android.ui.filter.incense.FilterIncenseSeriesFragment
import com.scentsnote.android.ui.filter.keyword.FilterKeywordFragment
import com.scentsnote.android.utils.extension.changeTabsFont
import com.scentsnote.android.utils.extension.*
import com.scentsnote.android.utils.extension.closeSelfWithAnimation
import com.scentsnote.android.utils.extension.setOnSafeClickListener
import com.scentsnote.android.utils.extension.setPageViewEvent
import com.scentsnote.android.utils.listener.TabSelectedListener
import com.scentsnote.android.viewmodel.filter.FilterBrandViewModel
import com.scentsnote.android.viewmodel.filter.FilterKeywordViewModel
Expand Down Expand Up @@ -65,15 +70,33 @@ class FilterFragment : Fragment() {
private fun initView() {
binding.btnFilterApply.setOnSafeClickListener {
sendFilter()

firebaseAnalytics.setClickEvent("FilterActionButton")

reqFilterGa("apply_filter", seriesViewModel.getSelectedSeries())
reqFilterGa("apply_brand", brandViewModel.getSelectedBrands())
reqFilterGa("apply_bonding", keywordViewModel.getSelectedKeywords())

Log.d("명_계열",seriesViewModel.getSelectedSeries().map { it.name }.toString())
Log.d("명_브랜드",brandViewModel.getSelectedBrands().map { it.name }.toString())
Log.d("명_키워드",keywordViewModel.getSelectedKeywords().map { it.name }.toString())
}
binding.toolbarFilter.toolbarBtn.setOnSafeClickListener {
closeSelfWithAnimation()

firebaseAnalytics.setClickEvent("FilterPauseButton")
}

binding.toolbarFilter.toolbar = R.drawable.icon_btn_cancel
binding.toolbarFilter.toolbartxt = "필터"
}

private fun reqFilterGa(type: String, list : List<FilterInfoP>){
list.forEach {
firebaseAnalytics.setOneParamClickEvent("kind_of_filter", type, it.name)
}
}

override fun onAttach(context: Context) {
super.onAttach(context)

Expand All @@ -85,6 +108,12 @@ class FilterFragment : Fragment() {
requireActivity().onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}

override fun onResume() {
super.onResume()

firebaseAnalytics.setPageViewEvent("Filter", this::class.java.name)
}

override fun onDetach() {
super.onDetach()
onBackPressedCallback.remove()
Expand Down Expand Up @@ -158,6 +187,7 @@ class FilterFragment : Fragment() {
val filterInfoPList = seriesViewModel.getSelectedSeries() +
brandViewModel.getSelectedBrands() +
keywordViewModel.getSelectedKeywords()
firebaseAnalytics.setOneParamClickEvent("kind_of_filter", "kind_of_filter_name", filterInfoPList.toString())
return SendFilter(
filterInfoPList.toMutableList(),
mutableMapOf() // TODO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import com.google.android.material.tabs.TabLayout
import com.scentsnote.android.utils.base.BaseWebViewActivity
import com.scentsnote.android.utils.extension.changeTabsFont
import com.scentsnote.android.viewmodel.filter.FilterBrandViewModel
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.utils.extension.setPageViewEvent

/**
* 향수 검색 - 필터 - 브랜드 탭
Expand All @@ -40,6 +42,12 @@ class FilterBrandFragment : Fragment() {
initBrandRvItem(context)
}

override fun onResume() {
super.onResume()

firebaseAnalytics.setPageViewEvent("FilterBrand", this::class.java.name)
}

private fun initBinding(inflater: LayoutInflater, container: ViewGroup?): View {
binding = FragmentFilterBrandBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.scentsnote.android.ui.filter.incense

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.databinding.FragmentFilterIncenseSeriesBinding
import com.scentsnote.android.utils.extension.setPageViewEvent
import com.scentsnote.android.viewmodel.filter.FilterSeriesViewModel

/**
Expand All @@ -32,6 +33,12 @@ class FilterIncenseSeriesFragment : Fragment() {
initIncenseSeriesRv()
}

override fun onResume() {
super.onResume()

firebaseAnalytics.setPageViewEvent("FilterProductLine", this::class.java.name)
}

private fun initBinding(inflater: LayoutInflater, container: ViewGroup?): View {
binding = FragmentFilterIncenseSeriesBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.utils.adapter.FlexboxRecyclerViewAdapter
import com.scentsnote.android.utils.extension.setPageViewEvent
import com.scentsnote.android.viewmodel.filter.FilterKeywordViewModel

/**
Expand Down Expand Up @@ -40,6 +42,9 @@ class FilterKeywordFragment : Fragment() {

override fun onResume() {
super.onResume()

firebaseAnalytics.setPageViewEvent("FilterKeyword", this::class.java.name)

initKeywordRv(context)
observeBlockClickMoreThan5()
observeViewModel()
Expand Down
34 changes: 30 additions & 4 deletions app/src/main/java/com/scentsnote/android/ui/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.scentsnote.android.ScentsNoteApplication
import com.scentsnote.android.R
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
import com.scentsnote.android.databinding.FragmentHomeBinding
import com.scentsnote.android.ui.home.adapter.NewListAdapter
import com.scentsnote.android.ui.home.adapter.PopularListAdapter
import com.scentsnote.android.ui.home.adapter.RecentListAdapter
import com.scentsnote.android.ui.home.adapter.RecommendListAdapter
import com.scentsnote.android.utils.extension.setClickEvent
import com.scentsnote.android.utils.extension.setHeartBtnClickEvent
import com.scentsnote.android.viewmodel.home.HomeViewModel
import com.scentsnote.android.utils.extension.setOnSafeClickListener
import com.scentsnote.android.utils.extension.setPageViewEvent
import java.util.*

/**
Expand All @@ -43,6 +47,8 @@ class HomeFragment : Fragment() {
initInfo()

binding.btnHomeMore.setOnSafeClickListener {
firebaseAnalytics.setClickEvent("NewRegisterButton")

val moreNewPerfumeIntent = Intent(context, MoreNewPerfumeActivity::class.java)

startActivity(moreNewPerfumeIntent)
Expand All @@ -68,6 +74,8 @@ class HomeFragment : Fragment() {
viewLifecycleOwner.lifecycleScope.launchWhenCreated {
homeViewModel.getHomePerfumeList()
}

firebaseAnalytics.setPageViewEvent("HomePage",this::class.java.name)
}

@SuppressLint("SetTextI18n")
Expand Down Expand Up @@ -144,11 +152,17 @@ class HomeFragment : Fragment() {
PopularListAdapter(
requireContext(),
parentFragmentManager
) { idx -> homeViewModel.postPerfumeLike(0, idx) }
){ idx -> homeViewModel.postPerfumeLike(0, idx)}

popularAdapter.setOnItemClickListener(object : PopularListAdapter.OnItemClickListener{
override fun firebaseClickEvent(like: Boolean) {
firebaseAnalytics.setHeartBtnClickEvent("home_recommend", like)
}
})

binding.rvHomePopular.adapter = popularAdapter

popularAdapter.notifyDataSetChanged()

}

private fun initRecentList() {
Expand All @@ -157,10 +171,16 @@ class HomeFragment : Fragment() {
requireContext(),
parentFragmentManager
) { idx -> homeViewModel.postPerfumeLike(1, idx) }

recentAdapter.setOnItemClickListener(object : RecentListAdapter.OnItemClickListener{
override fun firebaseClickEvent(like: Boolean) {
firebaseAnalytics.setHeartBtnClickEvent("home_recently", like)
}
})

binding.rvHomeRecent.adapter = recentAdapter

recentAdapter.notifyDataSetChanged()

}

private fun initNewList() {
Expand All @@ -169,9 +189,15 @@ class HomeFragment : Fragment() {
requireContext(),
parentFragmentManager
) { idx -> homeViewModel.postPerfumeLike(2, idx) }

newAdapter.setOnItemClickListener(object : NewListAdapter.OnItemClickListener{
override fun firebaseClickEvent(like: Boolean) {
firebaseAnalytics.setHeartBtnClickEvent("home_new", like)
}
})

binding.rvHomeNew.adapter = newAdapter

newAdapter.notifyDataSetChanged()
}

}
Loading

0 comments on commit 4083814

Please sign in to comment.