Skip to content

Commit d4962a2

Browse files
authored
Merge pull request #300 from Scents-Note/release/1.5.6
Release 1.5.6
2 parents cfea5c6 + f4d6e22 commit d4962a2

17 files changed

Lines changed: 134 additions & 62 deletions

File tree

.github/workflows/release_tag.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Release Tag
2+
on:
3+
push:
4+
branches:
5+
- master
6+
jobs:
7+
build:
8+
runs-on: ubuntu-latest
9+
steps:
10+
- uses: actions/checkout@v2
11+
- name: 버전 정보 추출
12+
run: echo "##[set-output name=version;]$(echo '${{ github.event.head_commit.message }}' | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')"
13+
id: extract_version_name
14+
- name: Release 생성
15+
uses: actions/create-release@v1
16+
env:
17+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18+
with:
19+
tag_name: ${{ steps.extract_version_name.outputs.version }}
20+
release_name: ${{ steps.extract_version_name.outputs.version }}

app/src/main/java/com/scentsnote/android/data/remote/RemoteDataSource.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,5 @@ interface RemoteDataSource {
5656
suspend fun getRecommendPerfumeList(token: String) : MutableList<RecommendPerfumeItem>
5757
suspend fun getCommonPerfumeList(token: String) : MutableList<HomePerfumeItem>
5858
suspend fun getRecentPerfumeList(token: String) : MutableList<HomePerfumeItem>
59-
suspend fun getNewPerfumeList() : MutableList<HomePerfumeItem>
59+
suspend fun getNewPerfumeList(requestSize: Int?) : MutableList<HomePerfumeItem>
6060
}

app/src/main/java/com/scentsnote/android/data/remote/RemoteDataSourceImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ class RemoteDataSourceImpl : RemoteDataSource{
8787
return api.getRecentList(token).data.rows
8888
}
8989

90-
override suspend fun getNewPerfumeList(): MutableList<HomePerfumeItem> {
91-
return api.getNewPerfumeList().data.rows
90+
override suspend fun getNewPerfumeList(requestSize: Int?): MutableList<HomePerfumeItem> {
91+
return api.getNewPerfumeList(requestSize).data.rows
9292
}
9393

9494
override suspend fun getReview(reviewIdx: Int): ResponseReview {

app/src/main/java/com/scentsnote/android/data/remote/network/ScentsNoteService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ interface ScentsNoteService {
117117
// Home - New Perfume List
118118
@GET("perfume/new")
119119
suspend fun getNewPerfumeList(
120-
120+
@Query("requestSize") requestSize : Int?
121121
):ResponseBase<ResponseHomePerfumeList>
122122

123123
@GET("perfume/{perfumeIdx}")

app/src/main/java/com/scentsnote/android/data/repository/HomeRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class HomeRepository {
1212
suspend fun getRecommendPerfumeList(token : String) = remoteDataSource.getRecommendPerfumeList(token)
1313
suspend fun getCommonPerfumeList(token : String) = remoteDataSource.getCommonPerfumeList(token)
1414
suspend fun getRecentPerfumeList(token : String) = remoteDataSource.getRecentPerfumeList(token)
15-
suspend fun getNewPerfumeList() = remoteDataSource.getNewPerfumeList()
15+
suspend fun getNewPerfumeList(requestSize: Int?) = remoteDataSource.getNewPerfumeList(requestSize)
1616
fun postPerfumeLike(token: String, perfumeIdx: Int): Single<ResponseBase<Boolean>> =
1717
ScentsNoteServiceImpl.service.postPerfumeLike(token, perfumeIdx).map { it }
1818
}

app/src/main/java/com/scentsnote/android/ui/filter/FilterFragment.kt

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ class FilterFragment : Fragment() {
7676
override fun onResume() {
7777
super.onResume()
7878

79+
binding.tabFilter.changeTabsFont(0)
7980
firebaseAnalytics.setPageViewEvent("Filter", this::class.java.name)
8081
}
8182

@@ -96,13 +97,7 @@ class FilterFragment : Fragment() {
9697

9798
firebaseAnalytics.setClickEvent("FilterActionButton")
9899

99-
reqFilterGa("apply_filter", seriesViewModel.getSelectedSeries())
100-
reqFilterGa("apply_brand", brandViewModel.getSelectedBrands())
101-
reqFilterGa("apply_bonding", keywordViewModel.getSelectedKeywords())
102-
103-
Log.d("GA 필터 - 계열", seriesViewModel.getSelectedSeries().map { it.name }.toString())
104-
Log.d("GA 필터 - 브랜드", brandViewModel.getSelectedBrands().map { it.name }.toString())
105-
Log.d("GA 필터 - 키워드", keywordViewModel.getSelectedKeywords().map { it.name }.toString())
100+
setFilterGa()
106101
}
107102
binding.toolbarFilter.toolbarBtn.setOnSafeClickListener {
108103
closeSelfWithAnimation()
@@ -125,6 +120,23 @@ class FilterFragment : Fragment() {
125120
}
126121
}
127122

123+
private fun setFilterGa(){
124+
if(seriesViewModel.getSelectedSeries().isNotEmpty()){
125+
reqFilterGa("apply_filter", seriesViewModel.getSelectedSeries())
126+
Log.d("GA 필터 - 계열", seriesViewModel.getSelectedSeries().map { it.name }.toString())
127+
}
128+
129+
if(brandViewModel.getSelectedBrands().isNotEmpty()){
130+
reqFilterGa("apply_brand", brandViewModel.getSelectedBrands())
131+
Log.d("GA 필터 - 브랜드", brandViewModel.getSelectedBrands().map { it.name }.toString())
132+
}
133+
134+
if(keywordViewModel.getSelectedKeywords().isNotEmpty()){
135+
reqFilterGa("apply_bonding", keywordViewModel.getSelectedKeywords())
136+
Log.d("GA 필터 - 키워드", keywordViewModel.getSelectedKeywords().map { it.name }.toString())
137+
}
138+
}
139+
128140
private fun reqFilterGa(type: String, list : List<FilterInfoP>){
129141
list.forEach {
130142
firebaseAnalytics.setOneParamClickEvent("kind_of_filter", type, it.name)
@@ -156,7 +168,6 @@ class FilterFragment : Fragment() {
156168
filterCategoryList.forEachIndexed { index, filterCategory ->
157169
val tab = getTabAt(index)
158170
tab?.text = filterCategory.nameText
159-
tab?.orCreateBadge?.backgroundColor = context.getColor(R.color.black)
160171
}
161172
addOnTabSelectedListener(TabSelectedListener(binding.tabFilter))
162173
changeTabsFont(0)
@@ -166,26 +177,35 @@ class FilterFragment : Fragment() {
166177
private fun observeViewModel() {
167178
seriesViewModel.selectedCount.observe(viewLifecycleOwner) { count ->
168179
val tab = binding.tabFilter.getTabAt(FilterCategory.Series.index)
169-
tab?.orCreateBadge?.let {
170-
updateCategoryBadge(it, count)
180+
if(count != 0){
181+
tab?.text = FilterCategory.Series.nameText+"($count)"
182+
}else{
183+
tab?.text = FilterCategory.Series.nameText
171184
}
172185
updateApplyBtnText()
186+
binding.tabFilter.changeTabsFont(FilterCategory.Series.index)
173187
}
174188

175189
brandViewModel.selectedCount.observe(viewLifecycleOwner) { count ->
176190
val tab = binding.tabFilter.getTabAt(FilterCategory.Brand.index)
177-
tab?.orCreateBadge?.let {
178-
updateCategoryBadge(it, count)
191+
if(count != 0){
192+
tab?.text = FilterCategory.Brand.nameText+"($count)"
193+
}else{
194+
tab?.text = FilterCategory.Brand.nameText
179195
}
180196
updateApplyBtnText()
197+
binding.tabFilter.changeTabsFont(FilterCategory.Brand.index)
181198
}
182199

183200
keywordViewModel.selectedCount.observe(viewLifecycleOwner) { count ->
184201
val tab = binding.tabFilter.getTabAt(FilterCategory.Keyword.index)
185-
tab?.orCreateBadge?.let {
186-
updateCategoryBadge(it, count)
202+
if(count != 0){
203+
tab?.text = FilterCategory.Keyword.nameText+"($count)"
204+
}else{
205+
tab?.text = FilterCategory.Keyword.nameText
187206
}
188207
updateApplyBtnText()
208+
binding.tabFilter.changeTabsFont(FilterCategory.Keyword.index)
189209
}
190210
}
191211

app/src/main/java/com/scentsnote/android/ui/home/HomeFragment.kt

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import android.view.View
88
import android.view.ViewGroup
99
import androidx.fragment.app.Fragment
1010
import androidx.fragment.app.viewModels
11+
import androidx.lifecycle.Lifecycle
1112
import androidx.lifecycle.lifecycleScope
13+
import androidx.lifecycle.repeatOnLifecycle
1214
import com.scentsnote.android.ScentsNoteApplication
1315
import com.scentsnote.android.R
1416
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
@@ -22,6 +24,7 @@ import com.scentsnote.android.utils.extension.setHeartBtnClickEvent
2224
import com.scentsnote.android.viewmodel.home.HomeViewModel
2325
import com.scentsnote.android.utils.extension.setOnSafeClickListener
2426
import com.scentsnote.android.utils.extension.setPageViewEvent
27+
import kotlinx.coroutines.launch
2528
import java.util.*
2629

2730
/**
@@ -60,7 +63,7 @@ class HomeFragment : Fragment() {
6063
override fun onActivityCreated(savedInstanceState: Bundle?) {
6164
super.onActivityCreated(savedInstanceState)
6265

63-
observe()
66+
initObserve()
6467

6568
initRecommendList()
6669
initPopularList()
@@ -71,8 +74,11 @@ class HomeFragment : Fragment() {
7174
override fun onResume() {
7275
super.onResume()
7376

74-
viewLifecycleOwner.lifecycleScope.launchWhenCreated {
75-
homeViewModel.getHomePerfumeList()
77+
viewLifecycleOwner.lifecycleScope.launch {
78+
homeViewModel.run {
79+
getHomePerfumeList()
80+
getNewPerfumeList(10)
81+
}
7682
}
7783

7884
firebaseAnalytics.setPageViewEvent("HomePage",this::class.java.name)
@@ -135,16 +141,22 @@ class HomeFragment : Fragment() {
135141
binding.vpHomeRecommend.adapter = recommendAdapter
136142
}
137143

138-
private fun observe() {
139-
homeViewModel.recommendPerfumeList.observe(requireActivity(), androidx.lifecycle.Observer {
144+
private fun initObserve() {
145+
homeViewModel.recommendPerfumeList.observe(requireActivity()){
140146

141147
recommendAdapter.run {
142148
replaceAll(ArrayList(it))
143149
notifyDataSetChanged()
144150
}
145151

146152
binding.indicatorHome.setViewPager(binding.vpHomeRecommend)
147-
})
153+
}
154+
155+
homeViewModel.recentPerfumeList.observe(requireActivity()) {
156+
binding.clHomeRecent.visibility =
157+
if(it.isNotEmpty()) View.VISIBLE
158+
else View.GONE
159+
}
148160
}
149161

150162
private fun initPopularList() {

app/src/main/java/com/scentsnote/android/ui/home/MoreNewPerfumeActivity.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import android.view.View
66
import androidx.activity.viewModels
77
import androidx.appcompat.app.AppCompatActivity
88
import androidx.databinding.DataBindingUtil
9+
import androidx.lifecycle.Lifecycle
10+
import androidx.lifecycle.lifecycleScope
11+
import androidx.lifecycle.repeatOnLifecycle
912
import com.scentsnote.android.R
1013
import com.scentsnote.android.ScentsNoteApplication.Companion.firebaseAnalytics
1114
import com.scentsnote.android.databinding.ActivityMoreNewPerfumeBinding
@@ -14,6 +17,7 @@ import com.scentsnote.android.viewmodel.home.HomeViewModel
1417
import com.scentsnote.android.utils.base.BaseWebViewActivity
1518
import com.scentsnote.android.utils.extension.setHeartBtnClickEvent
1619
import com.scentsnote.android.utils.extension.setPageViewEvent
20+
import kotlinx.coroutines.launch
1721

1822
/**
1923
* 홈 화면 - 새로운 향수 더보기
@@ -31,6 +35,10 @@ class MoreNewPerfumeActivity : AppCompatActivity() {
3135
binding.lifecycleOwner = this
3236
binding.viewModel = homeViewModel
3337

38+
lifecycleScope.launch {
39+
homeViewModel.getNewPerfumeList(null)
40+
}
41+
3442
initNewList()
3543
}
3644

app/src/main/java/com/scentsnote/android/viewmodel/home/HomeViewModel.kt

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,14 @@ class HomeViewModel : ViewModel(){
3232
val recentPerfumeList : LiveData<MutableList<HomePerfumeItem>>
3333
get() = _recentPerfumeList
3434

35-
private val _isValidRecentList = MutableLiveData<Boolean>(true)
36-
val isValidRecentList : LiveData<Boolean>
37-
get() = _isValidRecentList
38-
3935
private val _newPerfumeList : MutableLiveData<MutableList<HomePerfumeItem>> = MutableLiveData()
4036
val newPerfumeList : LiveData<MutableList<HomePerfumeItem>>
4137
get() = _newPerfumeList
4238

43-
init {
44-
viewModelScope.launch {
45-
getHomePerfumeList()
46-
}
47-
}
48-
4939
suspend fun getHomePerfumeList(){
5040
getRecommendPerfumeList()
5141
getCommonPerfumeList()
5242
getRecentPerfumeList()
53-
getNewPerfumeList()
5443
}
5544

5645
private suspend fun getRecommendPerfumeList(){
@@ -73,22 +62,17 @@ class HomeViewModel : ViewModel(){
7362

7463
private suspend fun getRecentPerfumeList(){
7564
try{
76-
_isValidRecentList.postValue(true)
7765
_recentPerfumeList.value = homeRepository.getRecentPerfumeList(ScentsNoteApplication.prefManager.accessToken)
7866
Log.d("getRecentPerfumeList", _recentPerfumeList.value.toString())
79-
80-
if(_recentPerfumeList.value!!.isEmpty()){
81-
_isValidRecentList.postValue(false)
82-
}
8367
}catch (e : HttpException){
84-
_isValidRecentList.postValue(false)
68+
_recentPerfumeList.value = mutableListOf()
8569
Log.d("getRecentPerfumeList error", e.message())
8670
}
8771
}
8872

89-
private suspend fun getNewPerfumeList(){
73+
suspend fun getNewPerfumeList(requestSize: Int?){
9074
try{
91-
_newPerfumeList.value = homeRepository.getNewPerfumeList()
75+
_newPerfumeList.value = homeRepository.getNewPerfumeList(requestSize)
9276
Log.d("getNewPerfumeList", _newPerfumeList.value.toString())
9377
}catch (e : HttpException){
9478
Log.d("getNewPerfumeList error", e.message())
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shape="oval">
4+
<solid android:color="@color/white"/>
5+
</shape>

0 commit comments

Comments
 (0)