Skip to content

Commit

Permalink
Merge pull request #7 from TeamOwori/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
bamin0422 authored Sep 5, 2023
2 parents 85b9b96 + df99137 commit 277022b
Show file tree
Hide file tree
Showing 60 changed files with 690 additions and 141 deletions.
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/owori-isuue-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Owori-Isuue-Template
about: Owori-Android 이슈 공통 템플릿
title: "[Android] 이슈제목"
labels: ''
assignees: ''

---

# 목적

# 상세 내용

# 참고
11 changes: 11 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## 🧨이슈
<!-- 해당이슈와 관련있는 이슈를 적어주세요.-->

## 🔍 상세 내용 (해결 내용)
<!-- 상세 내용을 적어주세요. -->

## 💡 참고자료 및 공유할만한 자료 (선택)
<!-- 참고자료를 첨부해주세요. -->

## ❕후속 진행 이슈
<!-- 후속 진행 이슈 -->
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
# Owori-Android
- 오월이 안드로이드 Repository입니다.
9 changes: 2 additions & 7 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ plugins {
}

android {
namespace = "com.owrori.android"
namespace = "com.owori.android"
compileSdk = 33

defaultConfig {
applicationId = "com.owrori.android"
applicationId = "com.owori.android"
minSdk = 24
targetSdk = 33
versionCode = 1
Expand Down Expand Up @@ -46,11 +46,6 @@ android {
viewBinding = true
dataBinding = true
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.owrori.android
package com.owori.android

import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
Expand All @@ -19,6 +19,6 @@ class ExampleInstrumentedTest {
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.owrori.android", appContext.packageName)
assertEquals("com.owori.android", appContext.packageName)
}
}
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@
android:theme="@style/Theme.Owori"
tools:targetApi="31">
<activity
android:name=".ui.auth.view.AuthActivity"
android:name=".auth.ui.view.AuthActivity"
android:exported="true"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:theme="@style/Theme.Owori">
<intent-filter>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.owrori.android
package com.owori.android

import android.app.Application
import org.koin.android.ext.koin.androidContext
Expand Down
19 changes: 19 additions & 0 deletions app/src/main/java/com/owori/android/OworiModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.owori.android

import com.owori.android.auth.ui.viewmodel.AuthViewModel
import com.owori.android.auth.ui.viewmodel.LoginViewModel
import com.owori.android.auth.ui.viewmodel.OnBoardingViewModel
import com.owori.android.auth.ui.viewmodel.PolicyViewModel
import com.owori.android.auth.ui.viewmodel.SplashViewModel
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.dsl.module

val viewModelModule = module {
viewModel { AuthViewModel() }
viewModel { SplashViewModel() }
viewModel { LoginViewModel() }
viewModel { OnBoardingViewModel() }
viewModel { PolicyViewModel() }
}

val appModules = listOf(viewModelModule)
28 changes: 28 additions & 0 deletions app/src/main/java/com/owori/android/auth/ui/TextViewExt.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.owori.android.auth.ui

import android.widget.TextView
import androidx.databinding.BindingAdapter
import com.owori.android.R

@BindingAdapter("setTitleText")
fun TextView.setTitleText(currentItemIndex: Int) {
setText(
when (currentItemIndex) {
0 -> R.string.onboarding_first_title
1 -> R.string.onboarding_second_title
else -> R.string.onboarding_last_title
}
)
}

@BindingAdapter("setSubTitleText")
fun TextView.setSubTitleText(currentItemIndex: Int) {
setText(
when (currentItemIndex) {
0 -> R.string.onboarding_first_subtitle
1 -> R.string.onboarding_second_subtitle
else -> R.string.onboarding_last_subtitle
}
)
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.owori.android.auth.ui.adapter

import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.owori.android.auth.ui.view.OnBoardingItemFragment

class OnBoardingViewPagerAdapter(fragment: Fragment, fragmentIdList: List<OnBoardingItemFragment>): FragmentStateAdapter(fragment) {
private val fragmentList = fragmentIdList;
override fun getItemCount(): Int {
return fragmentList.size
}

override fun createFragment(position: Int): Fragment {
return fragmentList[position]
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.owrori.android.ui.auth.view
package com.owori.android.auth.ui.view

import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.fragment.findNavController
import com.owrori.android.ui.common.presentation.view.BaseActivity
import com.owrori.android.R
import com.owrori.android.databinding.ActivityAuthBinding
import com.owrori.android.ui.auth.viewmodel.AuthViewModel
import com.owori.android.common.ui.view.BaseActivity
import com.owori.android.R
import com.owori.android.databinding.ActivityAuthBinding
import com.owori.android.auth.ui.viewmodel.AuthViewModel
import org.koin.android.ext.android.inject

class AuthActivity : BaseActivity<ActivityAuthBinding, AuthViewModel>(R.layout.activity_auth) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.owrori.android.ui.auth.view
package com.owori.android.auth.ui.view

import androidx.activity.addCallback
import com.owrori.android.ui.auth.viewmodel.LoginViewModel
import com.owrori.android.ui.common.navigateTo
import com.owrori.android.ui.common.presentation.view.BaseFragment
import com.owrori.android.R
import com.owrori.android.databinding.FragmentLoginBinding
import com.owori.android.auth.ui.viewmodel.LoginViewModel
import com.owori.android.common.ui.view.BaseFragment
import com.owori.android.R
import com.owori.android.databinding.FragmentLoginBinding
import com.owori.android.common.navigateTo
import org.koin.android.ext.android.inject

class LoginFragment : BaseFragment<FragmentLoginBinding, LoginViewModel>(R.layout.fragment_login) {
Expand All @@ -22,7 +22,14 @@ class LoginFragment : BaseFragment<FragmentLoginBinding, LoginViewModel>(R.layou

override fun initObserver() {
with(viewModel) {
// TODO : PolicyFragment를 위해 작성한 부분이라 수정 필요.
callKakaoLogin.observe(viewLifecycleOwner) {
navigateTo(R.id.action_loginFragment_to_PolicyFragment)
}

callGoogleLogin.observe(viewLifecycleOwner) {
navigateTo(R.id.action_loginFragment_to_PolicyFragment)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package com.owori.android.auth.ui.view

import androidx.activity.addCallback
import androidx.viewpager2.widget.ViewPager2
import com.owori.android.common.ui.view.BaseFragment
import com.owori.android.R
import com.owori.android.databinding.FragmentOnboardingBinding
import com.owori.android.auth.ui.adapter.OnBoardingViewPagerAdapter
import com.owori.android.auth.ui.viewmodel.OnBoardingViewModel
import com.owori.android.common.navigateTo
import org.koin.android.ext.android.inject

class OnBoardingFragment :
BaseFragment<FragmentOnboardingBinding, OnBoardingViewModel>(R.layout.fragment_onboarding) {
override val viewModel: OnBoardingViewModel by inject()
override fun setBindingVariables() {
with(binding) {
vm = viewModel
}
}

override fun initView() {
initViewPager()
initCustomOnBackPressed()
}

override fun initObserver() {
with(viewModel) {
finishOnBoarding.observe(viewLifecycleOwner) {
navigateTo(R.id.action_onboardingFragment_to_loginFragment)
}

currentItemIndex.observe(viewLifecycleOwner) {
binding.onboardingViewpager.setCurrentItem(it, true)
}
}
}

private fun initCustomOnBackPressed() {
requireActivity().onBackPressedDispatcher.addCallback(this) {
requireActivity().finish()
}
}

private fun initViewPager() {
with(binding) {
val viewpagerFragmentAdapter =
OnBoardingViewPagerAdapter(this@OnBoardingFragment, setOnBoardingList())
onboardingViewpager.adapter = viewpagerFragmentAdapter
registerOnPageChangeCallback()
}
}

private fun setOnBoardingList() = listOf(
OnBoardingItemFragment(R.layout.fragment_onboarding_first),
OnBoardingItemFragment(R.layout.fragment_onboarding_second),
OnBoardingItemFragment(R.layout.fragment_onboarding_third),
)

private fun registerOnPageChangeCallback() {
binding.onboardingViewpager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
viewModel.setCurrentItemIndex(position)
}
})
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.owori.android.auth.ui.view

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment

class OnBoardingItemFragment(private val fragmentId: Int) : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(fragmentId, container, false)
}
}
17 changes: 17 additions & 0 deletions app/src/main/java/com/owori/android/auth/ui/view/PolicyFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.owori.android.auth.ui.view

import com.owori.android.R
import com.owori.android.databinding.FragmentPolicyBinding
import com.owori.android.auth.ui.viewmodel.PolicyViewModel
import com.owori.android.common.ui.view.BaseFragment
import org.koin.android.ext.android.inject

class PolicyFragment :
BaseFragment<FragmentPolicyBinding, PolicyViewModel>(R.layout.fragment_policy) {
override val viewModel: PolicyViewModel by inject()
override fun setBindingVariables() {}

override fun initView() {}

override fun initObserver() {}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.owrori.android.ui.auth.view
package com.owori.android.auth.ui.view

import android.os.Handler
import android.os.Looper
import com.owrori.android.ui.common.presentation.view.BaseFragment
import com.owrori.android.R
import com.owrori.android.databinding.FragmentSplashBinding
import com.owrori.android.ui.auth.viewmodel.SplashViewModel
import com.owrori.android.ui.common.navigateTo
import com.owori.android.common.ui.view.BaseFragment
import com.owori.android.R
import com.owori.android.databinding.FragmentSplashBinding
import com.owori.android.auth.ui.viewmodel.SplashViewModel
import com.owori.android.common.navigateTo
import org.koin.android.ext.android.inject

class SplashFragment :
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.owori.android.auth.ui.viewmodel

import com.owori.android.common.ui.viewmodel.BaseViewModel

class AuthViewModel : BaseViewModel() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.owori.android.auth.ui.viewmodel

import androidx.lifecycle.LiveData
import com.owori.android.common.SingleLiveEvent
import com.owori.android.common.ui.viewmodel.BaseViewModel

class LoginViewModel : BaseViewModel() {
private val _callKakaoLogin: SingleLiveEvent<Unit> = SingleLiveEvent()
val callKakaoLogin: LiveData<Unit> = _callKakaoLogin
private val _callGoogleLogin: SingleLiveEvent<Unit> = SingleLiveEvent()
val callGoogleLogin: LiveData<Unit> = _callGoogleLogin

fun onClickKakaoLogin() {
_callKakaoLogin.call()
}

fun onClickGoogleLogin() {
_callGoogleLogin.call()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.owori.android.auth.ui.viewmodel

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.owori.android.common.SingleLiveEvent
import com.owori.android.common.ui.viewmodel.BaseViewModel

class OnBoardingViewModel : BaseViewModel() {
private val _currentItemIndex: MutableLiveData<Int> = MutableLiveData(0)
val currentItemIndex: LiveData<Int> = _currentItemIndex
private val _finishOnBoarding: SingleLiveEvent<Unit> = SingleLiveEvent();
val finishOnBoarding: LiveData<Unit> = _finishOnBoarding;

fun setCurrentItemIndex(index: Int) {
_currentItemIndex.value = index
}

fun onClickNextButton() {
_currentItemIndex.value?.let { _index ->
if (_index == LAST_PAGE) _finishOnBoarding.call()
else _currentItemIndex.value = _currentItemIndex.value?.plus(1)
}
}

companion object {
private const val LAST_PAGE = 2
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.owori.android.auth.ui.viewmodel

import com.owori.android.common.ui.viewmodel.BaseViewModel

class PolicyViewModel : BaseViewModel() {}
Loading

0 comments on commit 277022b

Please sign in to comment.