Skip to content

Commit

Permalink
#57 feat: 영화검색 임시중단
Browse files Browse the repository at this point in the history
  • Loading branch information
ChunBaee committed Jun 1, 2023
1 parent 2b117e4 commit 3ff9060
Show file tree
Hide file tree
Showing 21 changed files with 204 additions and 45 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.chunbae.narchive.data.remote.api

import com.chunbae.narchive.data.remote.response.ResponseMovieData
import retrofit2.Response
import retrofit2.http.GET
import retrofit2.http.Query

interface SearchMovieService {

@GET("searchMovieList.json")
suspend fun getMovieData(
@Query("key", encoded = true) key : String,
@Query("movieNm", encoded = true) movieNm : String,
@Query("curPage", encoded = true) curPage : Int,
) : Response<ResponseMovieData>
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.chunbae.narchive.data.remote.repository

import com.chunbae.narchive.data.remote.response.ResponseMovieData
import com.chunbae.narchive.domain.repository.MovieSearchRepository
import com.chunbae.narchive.domain.source.MovieSearchSource
import javax.inject.Inject

class MovieSearchRepositoryImpl @Inject constructor(private val source: MovieSearchSource): MovieSearchRepository {
override suspend fun getMovieLists(movieNm: String): Result<List<ResponseMovieData.ResultSearchMovie>> {
return source.getMovieLists(movieNm)
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
package com.chunbae.narchive.data.remote.response

data class ResponseMovieData(
val page : Int,
val results : List<ResultSearchMovie>
val movieListResult : Sub
) {
data class Sub(
val totCnt : Int,
val movieList : List<ResultSearchMovie>
)
data class ResultSearchMovie(
val title : String,
val release_date : String,

val movieCd : String,
val movieNm : String,
var openDt : String,
val genreAlt : String,
val directors : List<Director>
)
data class Director (
val peopleNm : String
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.chunbae.narchive.data.remote.source

import android.util.Log
import com.chunbae.narchive.data.remote.api.SearchMovieService
import com.chunbae.narchive.data.remote.response.ResponseMovieData
import com.chunbae.narchive.domain.source.MovieSearchSource
import javax.inject.Inject

class MovieSearchRemoteSource @Inject constructor(private val service : SearchMovieService): MovieSearchSource {
override suspend fun getMovieLists(movieNm: String): Result<List<ResponseMovieData.ResultSearchMovie>> {
val res = service.getMovieData("f28ad8a4ed81962cbbffbd289eea80b1", movieNm, 1)
if(res.isSuccessful) {
Log.d("----", "getMovieLists: ${res.body()!!.movieListResult.movieList}")
return Result.success(res.body()!!.movieListResult.movieList)
}
Log.d("----", "getMovieLists: ${res.message()}")
return Result.failure(IllegalArgumentException(res.message()))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.chunbae.narchive.domain.repository

import com.chunbae.narchive.data.remote.response.ResponseMovieData

interface MovieSearchRepository {

suspend fun getMovieLists(movieNm : String) : Result<List<ResponseMovieData.ResultSearchMovie>>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.chunbae.narchive.domain.source

import com.chunbae.narchive.data.remote.response.ResponseMovieData

interface MovieSearchSource {

suspend fun getMovieLists(movieNm : String) : Result<List<ResponseMovieData.ResultSearchMovie>>
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ annotation class KakaoAIRetrofit

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class TmdbRetrofit
annotation class MovieRetrofit



Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.chunbae.narchive.data.remote.repository.FirebaseRepositoryImpl
import com.chunbae.narchive.data.remote.repository.KakaoAiDiaryRepositoryImpl
import com.chunbae.narchive.data.remote.repository.KakaoBookSearchRepositoryImpl
import com.chunbae.narchive.data.remote.repository.KakaoLocationSearchRepositoryImpl
import com.chunbae.narchive.data.remote.repository.MovieSearchRepositoryImpl
import com.chunbae.narchive.data.remote.repository.ProfileRepositoryImpl
import com.chunbae.narchive.domain.repository.AuthRepository
import com.chunbae.narchive.domain.repository.BookRepository
Expand All @@ -19,6 +20,7 @@ import com.chunbae.narchive.domain.repository.FirebaseRepository
import com.chunbae.narchive.domain.repository.KakaoAiDiaryRepository
import com.chunbae.narchive.domain.repository.KakaoBookSearchRepository
import com.chunbae.narchive.domain.repository.KakaoLocationSearchRepository
import com.chunbae.narchive.domain.repository.MovieSearchRepository
import com.chunbae.narchive.domain.repository.ProfileRepository
import dagger.Binds
import dagger.Module
Expand Down Expand Up @@ -58,4 +60,7 @@ abstract class RepositoryModule {

@Binds
abstract fun bindBookRepository(bookRepositoryImpl: BookRepositoryImpl) : BookRepository

@Binds
abstract fun bindMovieSearchRepository(movieSearchRepositoryImpl: MovieSearchRepositoryImpl) : MovieSearchRepository
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package com.chunbae.narchive.presentation.di.module
import com.chunbae.narchive.presentation.di.annotation.KakaoAIRetrofit
import com.chunbae.narchive.presentation.di.annotation.KakaoAuthRetrofit
import com.chunbae.narchive.presentation.di.annotation.KakaoRetrofit
import com.chunbae.narchive.presentation.di.annotation.MovieRetrofit
import com.chunbae.narchive.presentation.di.annotation.NarchiveRetrofit
import com.chunbae.narchive.presentation.di.annotation.TmdbRetrofit
import com.chunbae.narchive.presentation.util.XAccessTokenInterceptor
import dagger.Module
import dagger.Provides
Expand All @@ -25,7 +25,7 @@ class RetrofitModule {
val KAKAO_URL = "https://dapi.kakao.com/"
val KAKAO_AUTH_URL = "https://kapi.kakao.com/"
val KAKAO_AI_URL = "https://api.kakaobrain.com/"
val TMDB_URL = "https://api.themoviedb.org/3/"
val MOVIE_URL = "https://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/"
}

@Provides
Expand Down Expand Up @@ -95,12 +95,12 @@ class RetrofitModule {

@Provides
@Singleton
@TmdbRetrofit
@MovieRetrofit
fun provideTmdbRetrofit(
gsonConverterFactory: GsonConverterFactory
): Retrofit {
return Retrofit.Builder()
.baseUrl(TMDB_URL)
.baseUrl(MOVIE_URL)
.addConverterFactory(gsonConverterFactory)
.build()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.chunbae.narchive.presentation.di.module

import com.chunbae.narchive.data.data.Comment
import com.chunbae.narchive.data.remote.api.AuthService
import com.chunbae.narchive.data.remote.api.BookService
import com.chunbae.narchive.data.remote.api.CommentService
Expand All @@ -9,17 +8,16 @@ import com.chunbae.narchive.data.remote.api.FeedService
import com.chunbae.narchive.data.remote.api.KakaoAiService
import com.chunbae.narchive.data.remote.api.KakaoService
import com.chunbae.narchive.data.remote.api.ProfileService
import com.chunbae.narchive.data.remote.api.TmdbService
import com.chunbae.narchive.data.remote.api.SearchMovieService
import com.chunbae.narchive.presentation.di.annotation.KakaoAIRetrofit
import com.chunbae.narchive.presentation.di.annotation.KakaoRetrofit
import com.chunbae.narchive.presentation.di.annotation.MovieRetrofit
import com.chunbae.narchive.presentation.di.annotation.NarchiveRetrofit
import com.chunbae.narchive.presentation.di.annotation.TmdbRetrofit
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import retrofit2.Retrofit
import retrofit2.create
import javax.inject.Singleton

@Module
Expand All @@ -32,7 +30,7 @@ class ServiceModule {

@Provides
@Singleton
fun provideTmdbService(@TmdbRetrofit retrofit: Retrofit) : TmdbService = retrofit.create(TmdbService::class.java)
fun provideSearchMovieService(@MovieRetrofit retrofit: Retrofit) : SearchMovieService = retrofit.create(SearchMovieService::class.java)

@Provides
@Singleton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.chunbae.narchive.data.remote.source.FirebaseStorageRemoteSource
import com.chunbae.narchive.data.remote.source.KakaoAiDiaryRemoteSource
import com.chunbae.narchive.data.remote.source.KakaoBookSearchRemoteSource
import com.chunbae.narchive.data.remote.source.KakaoLocationSearchRemoteSource
import com.chunbae.narchive.data.remote.source.MovieSearchRemoteSource
import com.chunbae.narchive.data.remote.source.ProfileRemoteSource
import com.chunbae.narchive.domain.source.AuthSource
import com.chunbae.narchive.domain.source.BookSource
Expand All @@ -19,6 +20,7 @@ import com.chunbae.narchive.domain.source.FirebaseStorageSource
import com.chunbae.narchive.domain.source.KakaoAiDiarySource
import com.chunbae.narchive.domain.source.KakaoBookSearchSource
import com.chunbae.narchive.domain.source.KakaoLocationSearchSource
import com.chunbae.narchive.domain.source.MovieSearchSource
import com.chunbae.narchive.domain.source.ProfileSource
import dagger.Binds
import dagger.Module
Expand Down Expand Up @@ -58,4 +60,7 @@ abstract class SourceModule {

@Binds
abstract fun bindBookRemoteSource(bookRemoteSource: BookRemoteSource) : BookSource

@Binds
abstract fun bindMovieSearchRemoteSource(movieSearchRemoteSource: MovieSearchRemoteSource) : MovieSearchSource
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chunbae.narchive.data.data.BookData
import com.chunbae.narchive.databinding.ItemSearchBookMovieListFormBinding
import com.chunbae.narchive.presentation.ui.search.movie.adapter.SearchMovieAdapter

class SearchBookAdapter(private val onItemClick : (BookData) -> Unit) : RecyclerView.Adapter<SearchBookAdapter.SearchBookViewHolder>() {
var bookItems = mutableListOf<BookData>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.chunbae.narchive.presentation.ui.search.book.view

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
Expand All @@ -13,6 +12,7 @@ import com.chunbae.narchive.R
import com.chunbae.narchive.data.data.BookData
import com.chunbae.narchive.databinding.ActivityBookMovieSearchBinding
import com.chunbae.narchive.presentation.ui.search.book.adapter.SearchBookAdapter
import com.chunbae.narchive.presentation.ui.search.movie.adapter.SearchMovieAdapter
import com.chunbae.narchive.presentation.ui.search.book.viewmodel.SearchBookViewModel
import com.chunbae.narchive.presentation.ui.write.book.view.WriteBookReviewActivity
import dagger.hilt.android.AndroidEntryPoint
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.chunbae.narchive.presentation.ui.search.movie.adapter

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.chunbae.narchive.data.remote.response.ResponseMovieData
import com.chunbae.narchive.databinding.ItemSearchBookMovieListFormBinding
import com.chunbae.narchive.presentation.ui.search.book.adapter.SearchBookAdapter

class SearchMovieAdapter(private val onItemClick : (ResponseMovieData.ResultSearchMovie) -> Unit) : RecyclerView.Adapter<SearchMovieAdapter.SearchMovieViewHolder>() {
var movieItems = mutableListOf<ResponseMovieData.ResultSearchMovie>()

inner class SearchMovieViewHolder(private val binding : ItemSearchBookMovieListFormBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(item : ResponseMovieData.ResultSearchMovie) {
binding.type = "Movie"
binding.movieData = item
binding.root.setOnClickListener { onItemClick.invoke(item) }
}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SearchMovieViewHolder {
return SearchMovieViewHolder(
ItemSearchBookMovieListFormBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}

override fun getItemCount(): Int = movieItems.size

override fun onBindViewHolder(holder: SearchMovieViewHolder, position: Int) {
holder.bind(movieItems[position])
}
}
Original file line number Diff line number Diff line change
@@ -1,30 +1,72 @@
package com.chunbae.narchive.presentation.ui.search.movie.view

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.chunbae.narchive.R
import com.chunbae.narchive.data.data.BookData
import com.chunbae.narchive.data.remote.response.ResponseMovieData
import com.chunbae.narchive.databinding.ActivityBookMovieSearchBinding
import com.chunbae.narchive.presentation.ui.search.movie.adapter.SearchMovieAdapter
import com.chunbae.narchive.presentation.ui.search.movie.viewmodel.SearchMovieViewModel
import com.chunbae.narchive.presentation.ui.write.book.view.WriteBookReviewActivity
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class SearchMovieActivity : AppCompatActivity() {

private lateinit var binding : ActivityBookMovieSearchBinding
private val viewModel : SearchMovieViewModel by viewModels()
private val movieAdapter by lazy {
SearchMovieAdapter(::onMovieSelected)
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = DataBindingUtil.setContentView(this, R.layout.activity_book_movie_search)

initBinding()
initMovieList()
initMovieObserver()
}

private fun initBinding() {
binding.type = "Movie"
binding.movieActivity = this
binding.movieViewModel = viewModel
binding.lifecycleOwner = this
}

private fun initMovieList() {
val dividerItemDecoration = DividerItemDecoration(this, LinearLayoutManager.VERTICAL)
binding.searchRvContainer.adapter = movieAdapter
binding.searchRvContainer.addItemDecoration(dividerItemDecoration)
}

private fun initMovieObserver() {
viewModel.searchedMovieList.observe(this) {
Log.d("----", "initMovieObserver: $it")
movieAdapter.movieItems = it
movieAdapter.notifyItemRangeChanged(0, it.size)
}
}

fun searchMovie() {
if(binding.searchEdtUserKeyword.text.isNotEmpty()) viewModel.getSearchedMovieData(binding.searchEdtUserKeyword.text.toString())
else Toast.makeText(this, "검색어를 입력해주세요.", Toast.LENGTH_SHORT).show()
}

fun click() {
Toast.makeText(this, "MOVIE", Toast.LENGTH_SHORT).show()
private fun onMovieSelected(item: ResponseMovieData.ResultSearchMovie) {
val intent = Intent(this, WriteBookReviewActivity::class.java)
intent.putExtra("Movie", item.movieCd)
startActivity(intent)
finish()
}
}
Loading

0 comments on commit 3ff9060

Please sign in to comment.