Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
1bd3189
#28 [fix] Fix top padding when hasTitle is false
kongwoojin Nov 14, 2022
aeda745
#28 [add] Add trending api
kongwoojin Nov 15, 2022
640b750
#28 [add] Add ShopRepository and ShopDataSource
kongwoojin Nov 15, 2022
40cf587
#28 [add] Add GetTrendingsUseCase
kongwoojin Nov 25, 2022
ac064e4
#28 [add] Add search history database
kongwoojin Nov 25, 2022
9281a09
#28 [add] Add search history methods in datasource
kongwoojin Nov 25, 2022
535c4d8
#28 [add] Add search history methods in repository
kongwoojin Nov 25, 2022
dd9f9cd
#28 [add] Add AddSearchHistoryUseCase and GetSearchHistoryUseCase
kongwoojin Nov 25, 2022
fa8c0ad
#28 [add] Create SearchActivity and fragments
kongwoojin Nov 25, 2022
e68a4c1
#28 [feat] Create search main page
kongwoojin Nov 25, 2022
9f8dbff
#28 [add] Add location permission request
kongwoojin Nov 25, 2022
1cd0505
#28 [mod] Search immediately when click trending item
kongwoojin Nov 25, 2022
a99b3eb
#28 [fix] Fix back press not work correctly on result page
kongwoojin Nov 25, 2022
b1adb5d
#28 [add] Add play-services-location library
kongwoojin Nov 25, 2022
2862b39
#28 [fix] Fix id naming convention
kongwoojin Nov 27, 2022
b44dc96
#28 [add] Add get current GPS location code
kongwoojin Nov 27, 2022
3ff5453
#28 [add] Add shops api
kongwoojin Dec 22, 2022
cc6b4ed
#28 [add] Add SearchShopsUseCase
kongwoojin Dec 22, 2022
3a26b4e
#28 [add] Create shop list fragment in search page
kongwoojin Dec 22, 2022
21bae2d
#28 [add] Set default input type of jjEditText to text
kongwoojin Dec 22, 2022
6da306d
#28 [add] Add imeOptions and OnEditorActionListener in jjEditText
kongwoojin Dec 22, 2022
7cc4f1b
#28 [add] Set imeOptions of search edittext to actionSearch
kongwoojin Dec 22, 2022
51c9edd
#28 [add] Do search if soft keyboard enter pressed
kongwoojin Dec 22, 2022
9e0fb90
#28 [fix] Fix shop list fragment not finished when backpressed called…
kongwoojin Dec 22, 2022
8bcd1f0
#28 [chore] Fix ktlint in JjEditText
kongwoojin Dec 22, 2022
5407a0e
#28 [fix] Fix typo
kongwoojin Dec 25, 2022
083baf4
#28 [add] Add naver map and kakao map intent
kongwoojin Dec 25, 2022
1152d75
#28 [add] Use coil to load shop image
kongwoojin Dec 25, 2022
eda2005
#28 [fix] Fix imeOptions typo
kongwoojin Dec 26, 2022
e277c5c
#28 [add] Add RespResult and ErrorType class
kongwoojin Dec 26, 2022
31f32b6
#28 [mod] Return trending data using RespResult
kongwoojin Dec 26, 2022
2945f9a
#28 [add] Show toast when error occurred
kongwoojin Dec 26, 2022
cf27079
#28 [mod] Return shops data using RespResult
kongwoojin Dec 26, 2022
e2b8a03
#28 [add] Show toast when error occurred in shop list
kongwoojin Dec 26, 2022
bb1446e
#28 [add] Add UrlUtil
kongwoojin Dec 26, 2022
45e7990
#28 [chore] Remove unused test code
kongwoojin Dec 26, 2022
58e2c5a
#28 [chore] Move livedata observing and ui related code to onViewCreated
kongwoojin Dec 26, 2022
6b34b8e
#28 [chore] Fix ktlint
kongwoojin Dec 26, 2022
155b8f0
#28 [add] Make activity finish if failed to get current location data
kongwoojin Dec 26, 2022
c5d84bd
#28 [chore] Move google location library to data module
kongwoojin Dec 27, 2022
5f9b000
#28 [add] Create LocationDataSource
kongwoojin Dec 27, 2022
0bffd4a
#28 [add] Create LocationRepository
kongwoojin Dec 27, 2022
d937f0e
#28 [add] Create GPSData
kongwoojin Dec 27, 2022
ad0c0a2
#28 [feat] Get real current location
kongwoojin Dec 27, 2022
5ec2028
#28 [add] Add GetCurrentLocationUseCase
kongwoojin Dec 27, 2022
05749b8
#28 [add] Replace get location code to new one
kongwoojin Dec 27, 2022
4f889c2
#28 [add] Show alert dialog if device loation turned off
kongwoojin Dec 27, 2022
37bb744
#28 [fix] Don't call getGPSLocation() twice
kongwoojin Dec 27, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
package="com.jjbaksa.jjbaksa">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

<application
android:name=".JjbaksaApp"
Expand All @@ -19,6 +21,10 @@
<activity
android:name=".ui.mainpage.MainPageActivity"
android:exported="false" />
<activity
android:name=".ui.search.SearchActivity"
android:exported="false"
android:label="@string/search_activity_title" />
<activity
android:name=".ui.signup.SignUpActivity"
android:exported="false" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.jjbaksa.jjbaksa.adapter

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.jjbaksa.jjbaksa.databinding.ItemSearchHistoryBinding
import com.jjbaksa.jjbaksa.util.StringDiffUtil

class SearchHistoryAdapter :
ListAdapter<String, SearchHistoryAdapter.ViewHolder>(StringDiffUtil) {

lateinit var onClickListener: OnClickListener

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding =
ItemSearchHistoryBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(currentList[position], onClickListener)
}

override fun getItemCount(): Int = currentList.size

class ViewHolder(private val binding: ItemSearchHistoryBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(
item: String,
onClickListener: OnClickListener,
) {
binding.item = item

binding.constraintLayoutSearchHistoryItemRoot.setOnClickListener {
onClickListener.onClick(item)
}
}
}

interface OnClickListener {
fun onClick(position: String)
}

inline fun setOnClickListener(crossinline item: (String) -> Unit) {
this.onClickListener = object : OnClickListener {
override fun onClick(position: String) {
item(position)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.jjbaksa.jjbaksa.adapter

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import coil.load
import com.jjbaksa.domain.resp.shop.ShopsResultContent
import com.jjbaksa.jjbaksa.R
import com.jjbaksa.jjbaksa.databinding.ItemSearchShopListBinding
import com.jjbaksa.jjbaksa.util.ShopListDiffUtil

class SearchShopListAdapter :
ListAdapter<ShopsResultContent, SearchShopListAdapter.ViewHolder>(ShopListDiffUtil) {

lateinit var onClickListener: OnClickListener

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding =
ItemSearchShopListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(currentList[position], onClickListener)
}

override fun getItemCount(): Int = currentList.size

class ViewHolder(private val binding: ItemSearchShopListBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(
item: ShopsResultContent,
onClickListener: OnClickListener,
) {
binding.item = item
// TODO Update image url after API provides it
binding.imageViewSearchRestaurantImage.load(R.mipmap.ic_shop_item_placeholder) {
placeholder(R.mipmap.ic_shop_item_placeholder)
}

binding.imageButtonSearchRestaurantMap.setOnClickListener {
onClickListener.onClick(item)
}
}
}

interface OnClickListener {
fun onClick(item: ShopsResultContent)
}

inline fun setOnClickListener(crossinline item: (ShopsResultContent) -> Unit) {
this.onClickListener = object : OnClickListener {
override fun onClick(item: ShopsResultContent) {
item(item)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.jjbaksa.jjbaksa.adapter

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.jjbaksa.jjbaksa.databinding.ItemSearchTrendingBinding
import com.jjbaksa.jjbaksa.util.StringDiffUtil

class SearchTrendingAdapter : ListAdapter<String, SearchTrendingAdapter.ViewHolder>(StringDiffUtil) {

lateinit var onClickListener: OnClickListener

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding =
ItemSearchTrendingBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(currentList[position], onClickListener)
}

override fun getItemCount(): Int = currentList.size

class ViewHolder(private val binding: ItemSearchTrendingBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(
item: String,
onClickListener: OnClickListener,
) {
binding.item = item

binding.constraintLayoutSearchTrendingItemRoot.setOnClickListener {
onClickListener.onClick(item)
}
}
}

interface OnClickListener {
fun onClick(position: String)
}

inline fun setOnClickListener(crossinline item: (String) -> Unit) {
this.onClickListener = object : OnClickListener {
override fun onClick(position: String) {
item(position)
}
}
}
}
7 changes: 7 additions & 0 deletions app/src/main/java/com/jjbaksa/jjbaksa/di/DataBaseModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.jjbaksa.jjbaksa.di
import android.content.Context
import androidx.room.Room
import com.jjbaksa.data.database.AppDatabase
import com.jjbaksa.data.database.SearchHistoryDao
import com.jjbaksa.data.database.UserDao
import dagger.Module
import dagger.Provides
Expand All @@ -27,4 +28,10 @@ object DataBaseModule {
fun provideVideoDao(appDatabase: AppDatabase): UserDao {
return appDatabase.userDao()
}

@Provides
@Singleton
fun provideSearchHistoryDao(appDatabase: AppDatabase): SearchHistoryDao {
return appDatabase.searchHistoryDao()
}
}
25 changes: 25 additions & 0 deletions app/src/main/java/com/jjbaksa/jjbaksa/di/DataSourceModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@ package com.jjbaksa.jjbaksa.di
import android.content.Context
import com.jjbaksa.data.api.AuthApi
import com.jjbaksa.data.api.NoAuthApi
import com.jjbaksa.data.database.SearchHistoryDao
import com.jjbaksa.data.database.UserDao
import com.jjbaksa.data.datasource.local.ShopLocalDataSource
import com.jjbaksa.data.datasource.local.UserLocalDataSource
import com.jjbaksa.data.datasource.remote.LocationRemoteDataSource
import com.jjbaksa.data.datasource.remote.ShopRemoteDataSource
import com.jjbaksa.data.datasource.remote.UserRemoteDataSource
import dagger.Module
import dagger.Provides
Expand All @@ -26,4 +30,25 @@ object DataSourceModule {
fun provideLocalDataSource(@ApplicationContext context: Context, userDao: UserDao): UserLocalDataSource {
return UserLocalDataSource(context, userDao)
}

@Provides
@Singleton
fun provideShopRemoteDataSource(authApi: AuthApi, noAuthApi: NoAuthApi): ShopRemoteDataSource {
return ShopRemoteDataSource(authApi, noAuthApi)
}

@Provides
@Singleton
fun provideShopLocalDataSource(
@ApplicationContext context: Context,
searchHistoryDao: SearchHistoryDao
): ShopLocalDataSource {
return ShopLocalDataSource(context, searchHistoryDao)
}

@Provides
@Singleton
fun provideLocationRemoteDataSource(@ApplicationContext context: Context): LocationRemoteDataSource {
return LocationRemoteDataSource(context)
}
}
26 changes: 25 additions & 1 deletion app/src/main/java/com/jjbaksa/jjbaksa/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
package com.jjbaksa.jjbaksa.di

import com.jjbaksa.data.datasource.local.ShopLocalDataSource
import com.jjbaksa.data.datasource.local.UserLocalDataSource
import com.jjbaksa.data.datasource.remote.LocationRemoteDataSource
import com.jjbaksa.data.datasource.remote.ShopRemoteDataSource
import com.jjbaksa.data.datasource.remote.UserRemoteDataSource
import com.jjbaksa.domain.repository.UserRepository
import com.jjbaksa.data.repository.LocationRepositoryImpl
import com.jjbaksa.data.repository.ShopRepositoryImpl
import com.jjbaksa.data.repository.UserRepositoryImpl
import com.jjbaksa.domain.repository.LocationRepository
import com.jjbaksa.domain.repository.ShopRepository
import com.jjbaksa.domain.repository.UserRepository
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand All @@ -21,4 +28,21 @@ object RepositoryModule {
): UserRepository {
return UserRepositoryImpl(userRemoteDataSource, userLocalDataSource)
}

@Singleton
@Provides
fun provideShopRepository(
shopRemoteDataSource: ShopRemoteDataSource,
shopLocalDataSource: ShopLocalDataSource,
): ShopRepository {
return ShopRepositoryImpl(shopRemoteDataSource, shopLocalDataSource)
}

@Singleton
@Provides
fun provideLocationRepository(
locationRemoteDataSource: LocationRemoteDataSource
): LocationRepository {
return LocationRepositoryImpl(locationRemoteDataSource)
}
}
Loading