Skip to content

Commit

Permalink
#18 [refactor] base 생성
Browse files Browse the repository at this point in the history
  • Loading branch information
OliviaYJH committed Jun 9, 2024
1 parent 3ef6911 commit d97ecc0
Show file tree
Hide file tree
Showing 16 changed files with 77 additions and 71 deletions.
21 changes: 21 additions & 0 deletions app/src/main/java/com/sopt/now/config/BaseActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.sopt.now.config

import android.os.Bundle
import android.os.PersistableBundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import androidx.viewbinding.ViewBinding

abstract class BaseActivity<B : ViewBinding>(private val inflate: (LayoutInflater) -> B) :
AppCompatActivity() {
protected lateinit var binding: B


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

binding = inflate(layoutInflater).apply {
setContentView(root)
}
}
}
31 changes: 31 additions & 0 deletions app/src/main/java/com/sopt/now/config/BaseFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.sopt.now.config

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding

abstract class BaseFragment<B : ViewBinding>(
private val bind: (View) -> B,
@LayoutRes layoutResId: Int
) : Fragment(layoutResId) {
private var _binding: B? = null
protected val binding get() = requireNotNull(_binding)

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = super.onCreateView(inflater, container, savedInstanceState)?.let { bind(it) }
return binding.root
}

override fun onDestroyView() {
_binding = null
super.onDestroyView()
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.utils
package com.sopt.now.config

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopt.now.utils
package com.sopt.now.config

import com.sopt.now.ApplicationClass.SharedPreferences.sSharedPreferences
import com.sopt.now.utils.Constants.Companion.MEMBER_ID
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/sopt/now/data/AuthRepositoryImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.sopt.now.datasource.AuthService
import com.sopt.now.model.login.RequestLoginDto
import com.sopt.now.model.signup.RequestSignUpDto
import com.sopt.now.repository.AuthRepository
import com.sopt.now.utils.BaseResponse
import com.sopt.now.config.BaseResponse
import retrofit2.Response

class AuthRepositoryImpl(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.sopt.now.data
import com.sopt.now.datasource.InfoService
import com.sopt.now.model.info.UserInfo
import com.sopt.now.repository.MyPageRepository
import com.sopt.now.utils.BaseResponse
import com.sopt.now.config.BaseResponse
import retrofit2.Response

class MyPageRepositoryImpl(
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/sopt/now/datasource/AuthService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.sopt.now.datasource

import com.sopt.now.model.login.RequestLoginDto
import com.sopt.now.model.signup.RequestSignUpDto
import com.sopt.now.utils.BaseResponse
import com.sopt.now.config.BaseResponse
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.POST
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/sopt/now/datasource/InfoService.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sopt.now.datasource

import com.sopt.now.model.info.UserInfo
import com.sopt.now.utils.BaseResponse
import com.sopt.now.config.BaseResponse
import retrofit2.Response
import retrofit2.http.GET

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.sopt.now.ApplicationClass.SharedPreferences.sSharedPreferences
import com.sopt.now.config.BaseActivity
import com.sopt.now.databinding.ActivityLoginBinding
import com.sopt.now.model.login.RequestLoginDto
import com.sopt.now.presentation.auth.signup.SignupActivity
Expand All @@ -19,15 +20,12 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
class LoginActivity : BaseActivity<ActivityLoginBinding>(ActivityLoginBinding::inflate) {
private val loginViewModel: LoginViewModel by viewModels()

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

binding = ActivityLoginBinding.inflate(layoutInflater).apply { setContentView(root) }

with(binding) {
btnSignup.setOnClickListener { navigateToSignup() }
btnLogin.setOnClickListener { login() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.sopt.now.R
import com.sopt.now.config.BaseActivity
import com.sopt.now.databinding.ActivitySignupBinding
import com.sopt.now.model.signup.RequestSignUpDto
import com.sopt.now.utils.UiState
Expand All @@ -15,14 +16,12 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class SignupActivity : AppCompatActivity() {
private lateinit var binding: ActivitySignupBinding
class SignupActivity : BaseActivity<ActivitySignupBinding>(ActivitySignupBinding::inflate) {
private val signUpViewModel: SignUpViewModel by viewModels()

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

binding = ActivitySignupBinding.inflate(layoutInflater).apply { setContentView(root) }
binding.btnSignup.setOnClickListener { signUp() }
observeSignUp()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,13 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import com.sopt.now.R
import com.sopt.now.config.BaseFragment
import com.sopt.now.databinding.FragmentHomeBinding

class HomeFragment : Fragment() {
private var _binding: FragmentHomeBinding? = null
private val binding get() = requireNotNull(_binding)
class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::bind, R.layout.fragment_home) {
private val viewModel by viewModels<HomeViewModel>()

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

Expand All @@ -33,9 +24,4 @@ class HomeFragment : Fragment() {
binding.rvFriend.adapter = friendAdapter
friendAdapter.setFriendList(viewModel.mockFriendList)
}

override fun onDestroyView() {
_binding = null
super.onDestroyView()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.sopt.now.R
import com.sopt.now.config.BaseFragment
import com.sopt.now.databinding.FragmentMypageBinding
import com.sopt.now.model.info.UserInfo
import com.sopt.now.utils.UiState
Expand All @@ -17,20 +19,9 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach

@AndroidEntryPoint
class MyPageFragment : Fragment() {
private var _binding: FragmentMypageBinding? = null
private val binding get() = requireNotNull(_binding)
class MyPageFragment : BaseFragment<FragmentMypageBinding>(FragmentMypageBinding::bind, R.layout.fragment_mypage) {
private val myPageViewModel: MyPageViewModel by viewModels()

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentMypageBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

Expand All @@ -42,11 +33,6 @@ class MyPageFragment : Fragment() {
myPageViewModel.getUserInfo()
}

override fun onDestroyView() {
_binding = null
super.onDestroyView()
}

private fun observeUserInfo() {
myPageViewModel.state.flowWithLifecycle(viewLifecycleOwner.lifecycle).onEach { state ->
when (state) {
Expand All @@ -66,4 +52,4 @@ class MyPageFragment : Fragment() {
tvMainUserPhone.text = data.phone
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,12 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.sopt.now.R
import com.sopt.now.config.BaseFragment
import com.sopt.now.databinding.FragmentSearchBinding

class SearchFragment: Fragment() {
private var _binding: FragmentSearchBinding ?= null
private val binding get() = requireNotNull(_binding)

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentSearchBinding.inflate(inflater, container, false)
return binding.root
}

class SearchFragment: BaseFragment<FragmentSearchBinding>(FragmentSearchBinding::bind, R.layout.fragment_search) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}

override fun onDestroyView() {
_binding = null
super.onDestroyView()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.sopt.now.repository

import com.sopt.now.model.login.RequestLoginDto
import com.sopt.now.model.signup.RequestSignUpDto
import com.sopt.now.utils.BaseResponse
import com.sopt.now.config.BaseResponse
import retrofit2.Response

interface AuthRepository {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sopt.now.repository

import com.sopt.now.model.info.UserInfo
import com.sopt.now.utils.BaseResponse
import com.sopt.now.config.BaseResponse
import retrofit2.Response

interface MyPageRepository {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/com/sopt/now/utils/ApiFactory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package com.sopt.now.utils

import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import com.sopt.now.BuildConfig
import com.sopt.now.config.XAccessTokenInterceptor
import com.sopt.now.datasource.AuthService
import com.sopt.now.datasource.InfoService
import com.sopt.now.utils.ApiFactory.create
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down

0 comments on commit d97ecc0

Please sign in to comment.