diff --git a/29th_first_semina/app/build.gradle b/29th_first_semina/app/build.gradle index 211b7b2..edc6684 100644 --- a/29th_first_semina/app/build.gradle +++ b/29th_first_semina/app/build.gradle @@ -38,6 +38,9 @@ android { dependencies { + implementation "com.squareup.retrofit2:retrofit:2.9.0" + implementation "com.squareup.retrofit2:converter-gson:2.9.0" + implementation "com.google.code.gson:gson:2.8.6" implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" @@ -50,5 +53,6 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation "androidx.fragment:fragment-ktx:1.3.6" - + implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5' + implementation 'androidx.navigation:navigation-ui-ktx:2.3.5' } \ No newline at end of file diff --git a/29th_first_semina/app/src/main/AndroidManifest.xml b/29th_first_semina/app/src/main/AndroidManifest.xml index 09ee285..662247f 100644 --- a/29th_first_semina/app/src/main/AndroidManifest.xml +++ b/29th_first_semina/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ - + - + android:theme="@style/Theme.29th_first_semina" + android:usesCleartextTraffic="true"> + + - + @@ -28,7 +30,7 @@ - + diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/ProfileFragment.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/ProfileFragment.kt index 89fd535..9e9b068 100644 --- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/ProfileFragment.kt +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/ProfileFragment.kt @@ -10,6 +10,8 @@ import com.example.a29th_first_semina.R import com.example.a29th_first_semina.databinding.FragmentProfileBinding import com.example.a29th_first_semina.ui.view.follwer.FollowerFragment import com.example.a29th_first_semina.ui.view.repository.RepositoryFragment +import com.example.a29th_first_semina.ui.view.setting.SettingActivity +import com.example.a29th_first_semina.util.IntentUtil.moveActivity class ProfileFragment : Fragment() { @@ -28,6 +30,7 @@ class ProfileFragment : Fragment() { ) initImage() initTransactionEvent() + clickBtnSetting() return binding.root } @@ -72,4 +75,11 @@ class ProfileFragment : Fragment() { } + private fun clickBtnSetting() { + binding.btnSetting.setOnClickListener { + moveActivity(context,SettingActivity::class.java) + } + } + + } \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/home/HomeActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/home/HomeActivity.kt index 2b0e4cf..d2b611a 100644 --- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/home/HomeActivity.kt +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/home/HomeActivity.kt @@ -10,6 +10,7 @@ import com.example.a29th_first_semina.ui.view.CameraFragment import com.example.a29th_first_semina.ui.view.ProfileFragment import com.example.a29th_first_semina.ui.view.follwer.FollowerFragment import com.example.a29th_first_semina.ui.view.repository.RepositoryFragment +import com.example.a29th_first_semina.util.ToastUtil.makeToast class HomeActivity : AppCompatActivity() { private lateinit var binding: ActivityHomeBinding @@ -19,7 +20,7 @@ class HomeActivity : AppCompatActivity() { setContentView(binding.root) initButtomNavigation() - Toast.makeText(this, "김송현님 환영합니다", Toast.LENGTH_SHORT).show() + makeToast("김송현님 환영합니다") } private fun initButtomNavigation(){ diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingActivity.kt new file mode 100644 index 0000000..04991fc --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingActivity.kt @@ -0,0 +1,19 @@ +package com.example.a29th_first_semina.ui.view.onboarding + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import androidx.navigation.findNavController +import com.example.a29th_first_semina.R +import com.example.a29th_first_semina.databinding.ActivityOnboardingBinding + +class OnboardingActivity : AppCompatActivity() { + private lateinit var binding : ActivityOnboardingBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding = ActivityOnboardingBinding.inflate(layoutInflater) + setContentView(binding.root) + + + } +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingFragment1.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingFragment1.kt new file mode 100644 index 0000000..14f6025 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingFragment1.kt @@ -0,0 +1,40 @@ +package com.example.a29th_first_semina.ui.view.onboarding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.example.a29th_first_semina.R +import com.example.a29th_first_semina.databinding.FragmentOnboarding1Binding + + +class OnboardingFragment1 : Fragment() { + private var _binding : FragmentOnboarding1Binding ?= null + private val binding get() = _binding ?: error("뷰참조 실패얌") + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = FragmentOnboarding1Binding.inflate( + inflater, + container, + false + ) + + binding.btnNext.setOnClickListener { + findNavController().navigate(R.id.action_onboardingFragment1_to_onboardingFragment2) + } + return binding.root + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } + + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingFragment2.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingFragment2.kt new file mode 100644 index 0000000..bd64fdd --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnboardingFragment2.kt @@ -0,0 +1,39 @@ +package com.example.a29th_first_semina.ui.view.onboarding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.example.a29th_first_semina.R +import com.example.a29th_first_semina.databinding.FragmentOnboarding2Binding + + +class OnboardingFragment2 : Fragment() { + private var _binding : FragmentOnboarding2Binding ?= null + private val binding get() = _binding ?: error("뷰참조 실패") + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = FragmentOnboarding2Binding.inflate( + inflater, + container, + false + ) + binding.btnNext.setOnClickListener { + findNavController().navigate(R.id.action_onboardingFragment2_to_onbordingFragment3) + } + return binding.root + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } + + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnbordingFragment3.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnbordingFragment3.kt new file mode 100644 index 0000000..9359321 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/onboarding/OnbordingFragment3.kt @@ -0,0 +1,40 @@ +package com.example.a29th_first_semina.ui.view.onboarding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.a29th_first_semina.databinding.FragmentOnbording3Binding +import com.example.a29th_first_semina.ui.view.sigin.view.SignInActivity +import com.example.a29th_first_semina.util.IntentUtil + +class OnbordingFragment3 : Fragment() { + private var _binding : FragmentOnbording3Binding ?= null + private val binding get() = _binding ?: error("뷰참조실패") + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + _binding = FragmentOnbording3Binding.inflate( + inflater, + container, + false + ) + + binding.btnNext.setOnClickListener { + IntentUtil.moveActivity(context, SignInActivity::class.java) + requireActivity().finish() + } + return binding.root + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } + + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/setting/SettingActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/setting/SettingActivity.kt new file mode 100644 index 0000000..9cf20dc --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/setting/SettingActivity.kt @@ -0,0 +1,34 @@ +package com.example.a29th_first_semina.ui.view.setting + +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import com.example.a29th_first_semina.R +import com.example.a29th_first_semina.databinding.ActivitySettingBinding +import com.example.a29th_first_semina.ui.view.sigin.SheredPreference.SophubUserAuthStorage +import com.example.a29th_first_semina.ui.view.sigin.view.SignInActivity +import com.example.a29th_first_semina.util.IntentUtil + +class SettingActivity : AppCompatActivity() { + private lateinit var binding : ActivitySettingBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySettingBinding.inflate(layoutInflater) + + + binding.btnBack.setOnClickListener { + finish() + } + + binding.tvLogout.setOnClickListener { + SophubUserAuthStorage.clearAuthStorage(this) + IntentUtil.moveActivity(this, SignInActivity::class.java) + Log.d("자동 로그아웃","해제") + + } + + + setContentView(binding.root) + } +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SheredPreference/SophubUserAuthStorage.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SheredPreference/SophubUserAuthStorage.kt new file mode 100644 index 0000000..804310e --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SheredPreference/SophubUserAuthStorage.kt @@ -0,0 +1,79 @@ +package com.example.a29th_first_semina.ui.view.sigin.SheredPreference + +import android.content.Context + +object SophubUserAuthStorage { + + private const val STORAGE_KEY = "user_auth" + private const val USER_ID_KEY = "user_id" + private const val USER_PWD_KEY = "user_pwd" + + fun getUserId(context: Context) : String { + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + return sharedPreferences.getString(USER_ID_KEY,"") ?: "" + } + + fun getUserPwd(context: Context) : String { + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + return sharedPreferences.getString(USER_PWD_KEY,"") ?: "" + } + + fun saveUserId(context: Context, id : String) { + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + sharedPreferences.edit() + .putString(USER_ID_KEY,id) + .apply() + } + + fun saveUserPwd(context: Context, pwd : String){ + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + sharedPreferences.edit() + .putString(USER_PWD_KEY,pwd) + .apply() + } + + fun removeUserId(context: Context){ + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + sharedPreferences.edit() + .remove(USER_ID_KEY) + .apply() + } + + fun removeUserPwe(context: Context){ + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + sharedPreferences.edit() + .remove(USER_PWD_KEY) + .apply() + } + + + fun clearAuthStorage(context: Context){ + val sharedPreferences = context.getSharedPreferences( + "${context.packageName}.$STORAGE_KEY", + Context.MODE_PRIVATE + ) + + sharedPreferences.edit() + .clear() + .apply() + } + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt deleted file mode 100644 index fd1f25e..0000000 --- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignInActivity.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.example.a29th_first_semina.ui.view.sigin - -import android.content.Intent -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.widget.Toast -import com.example.a29th_first_semina.databinding.ActivitySigninBinding -import com.example.a29th_first_semina.ui.view.home.HomeActivity - -class SignInActivity : AppCompatActivity() { - private lateinit var binding: ActivitySigninBinding - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivitySigninBinding.inflate(layoutInflater) - setContentView(binding.root) - initButtonClickEvent() - - } - - private fun initButtonClickEvent() { - - clickLoginEvent() - clickSignUpEvent() - } - - private fun moveHomeActivity() { - val homeIntent = Intent(this, HomeActivity::class.java) - startActivity(homeIntent) - } - - private fun moveSignUpActivity() { - val signupIntent = Intent(this, SignUpActivity::class.java) - startActivity(signupIntent) - - } - - private fun clickLoginEvent() { - - with(binding) { - btnLogin.setOnClickListener { - val userId = etId.text - val userPassword= etPwd.text - if (userId.isEmpty() || userPassword.isEmpty()) { - Toast.makeText(this@SignInActivity, "로그인 실패", Toast.LENGTH_SHORT).show() - } else { - moveHomeActivity() - } - - } - - } - - } - - private fun clickSignUpEvent() { - binding.tvSignup.setOnClickListener { - moveSignUpActivity() - } - - } -} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt deleted file mode 100644 index 199b107..0000000 --- a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/SignUpActivity.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.example.a29th_first_semina.ui.view.sigin - -import androidx.appcompat.app.AppCompatActivity -import android.os.Bundle -import android.widget.Toast -import com.example.a29th_first_semina.databinding.ActivitySignUpBinding - -class SignUpActivity : AppCompatActivity() { - private lateinit var binding: ActivitySignUpBinding - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = ActivitySignUpBinding.inflate(layoutInflater) - setContentView(binding.root) - initButtonClick() - } - - private fun initButtonClick() { - clickSignUpEvent() - } - - private fun clickSignUpEvent() { - - binding.apply { - val userName = etName.text - val userId = etId.text - val userPwd = etPwd.text - - btnSignup.setOnClickListener { - if (userName.isEmpty() || userId.isEmpty() || userPwd.isEmpty() ){ - Toast.makeText(this@SignUpActivity, "입력되지 않은 정보가 있습니다", Toast.LENGTH_SHORT) - .show() - } - else { - finish() - } - } - } - - - } -} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt new file mode 100644 index 0000000..1c21f47 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetLoginData.kt @@ -0,0 +1,9 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +import com.google.gson.annotations.SerializedName + +data class RequsetLoginData( + @SerializedName("email") + val email : String, + val password : String, +) diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt new file mode 100644 index 0000000..8eb3dec --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/RequsetSignUpdata.kt @@ -0,0 +1,8 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +data class RequsetSignUpdata( + val email : String, + val name : String, + val password : String, + +) diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt new file mode 100644 index 0000000..bced1c6 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseLoginData.kt @@ -0,0 +1,15 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +data class ResponseLoginData( + val status : Int, + val success : Boolean, + val message : String, + val data : Data +) { + + data class Data( + val id: Int, + val name: String, + val email: String + ) +} diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt new file mode 100644 index 0000000..f8b1388 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/data/ResponseSignUpData.kt @@ -0,0 +1,17 @@ +package com.example.a29th_first_semina.ui.view.sigin.data + +data class ResponseSignUpData( + + val status : Int, + val success : Boolean, + val message : String, + val data : Data +) { + + data class Data( + val id: Int, + val name: String, + val email: String + + ) +} diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt new file mode 100644 index 0000000..462e1b6 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/Service.kt @@ -0,0 +1,24 @@ +package com.example.a29th_first_semina.ui.view.sigin.di + +import android.telecom.Call +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetLoginData +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetSignUpdata +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseLoginData +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseSignUpData +import retrofit2.http.Body +import retrofit2.http.Headers +import retrofit2.http.POST + +interface Service { + @Headers("Content-Type:application/json") + @POST("user/login") + fun postLogin( + @Body body : RequsetLoginData + ) : retrofit2.Call + + + @POST("user/signup") + fun postSignup( + @Body body : RequsetSignUpdata + ) : retrofit2.Call +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt new file mode 100644 index 0000000..aca30ac --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/di/ServiceCreater.kt @@ -0,0 +1,18 @@ +package com.example.a29th_first_semina.ui.view.sigin.di + +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +object ServiceCreater { + + private const val BASE_URL = "https://asia-northeast3-we-sopt-29.cloudfunctions.net/api/" + + private val retrofit : Retrofit = Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + + val service : Service = retrofit.create(Service::class.java) + + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt new file mode 100644 index 0000000..64ebb52 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignInActivity.kt @@ -0,0 +1,123 @@ +package com.example.a29th_first_semina.ui.view.sigin.view + +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import com.example.a29th_first_semina.databinding.ActivitySigninBinding +import com.example.a29th_first_semina.ui.view.home.HomeActivity +import com.example.a29th_first_semina.ui.view.sigin.SheredPreference.SophubUserAuthStorage +import com.example.a29th_first_semina.ui.view.sigin.di.ServiceCreater +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetLoginData +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseLoginData +import com.example.a29th_first_semina.util.IntentUtil +import com.example.a29th_first_semina.util.ToastUtil.makeToast +import retrofit2.Callback +import retrofit2.Response + +class SignInActivity : AppCompatActivity() { + private lateinit var binding: ActivitySigninBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySigninBinding.inflate(layoutInflater) + setContentView(binding.root) + + + searchSopthubUserStoage() + initButtonClickEvent() + + } + + private fun initButtonClickEvent() { + + clickLoginEvent() + clickSignUpEvent() + } + + private fun moveHomeActivity() { + IntentUtil.moveActivity(this, HomeActivity::class.java) + } + + + private fun clickLoginEvent() { + + with(binding) { + btnLogin.setOnClickListener { + val userId = etId.text + val userPassword= etPwd.text + if (userId.isEmpty() || userPassword.isEmpty()) { + makeToast("아이디/비번 둘 다 입력해라") + } else { + initNetwork() + } + } + } + } + + private fun clickSignUpEvent() { + binding.tvSignup.setOnClickListener { + IntentUtil.moveActivity(this, SignUpActivity::class.java) + } + + } + + private fun initNetwork(){ + val requsetLoginData = RequsetLoginData( + email = binding.etId.text.toString(), + password = binding.etPwd.text.toString() + ) + + val call : retrofit2.Call = ServiceCreater.service.postLogin(requsetLoginData) + + call.enqueue(object : Callback{ + override fun onResponse( + call: retrofit2.Call, + response: Response + ) { + if(response.isSuccessful){ + moveHomeActivity() + Log.d("서버통신 상태",response.body()?.status.toString()) + + if(!hasUserAutoData()){ + Log.d("저장소에 있는","아이디 비번 없음") + binding.apply { + SophubUserAuthStorage.saveUserId(this@SignInActivity,etId.text.toString()) + SophubUserAuthStorage.saveUserPwd(this@SignInActivity,etPwd.text.toString()) + } + } + } + else { + Toast.makeText( + this@SignInActivity, + response.body()?.status.toString(), + Toast.LENGTH_SHORT + ).show() + Log.d("서버통신 상태", response.body()?.status.toString()) + } + } + + override fun onFailure(call: retrofit2.Call, t: Throwable) { + Log.d("로그인통신 실패","실패임") + } + }) + } + + private fun searchSopthubUserStoage(){ + if(hasUserAutoData()){ + val requsetLoginData = RequsetLoginData( + email = binding.etId.text.toString(), + password = binding.etPwd.text.toString() + ) + + ServiceCreater.service.postLogin(requsetLoginData) + Log.d("자동 로그인","성공") + IntentUtil.moveActivity(this, HomeActivity::class.java) + + } + + } + + private fun hasUserAutoData() = SophubUserAuthStorage.getUserId(this).isNotEmpty() && + SophubUserAuthStorage.getUserPwd(this).isNotEmpty() +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt new file mode 100644 index 0000000..56f14c0 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/ui/view/sigin/view/SignUpActivity.kt @@ -0,0 +1,81 @@ +package com.example.a29th_first_semina.ui.view.sigin.view + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import com.example.a29th_first_semina.databinding.ActivitySignUpBinding +import com.example.a29th_first_semina.ui.view.sigin.di.ServiceCreater +import com.example.a29th_first_semina.ui.view.sigin.data.RequsetSignUpdata +import com.example.a29th_first_semina.ui.view.sigin.data.ResponseSignUpData +import com.example.a29th_first_semina.util.ToastUtil.makeToast +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response + +class SignUpActivity : AppCompatActivity() { + private lateinit var binding: ActivitySignUpBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySignUpBinding.inflate(layoutInflater) + setContentView(binding.root) + initButtonClick() + } + + private fun initButtonClick() { + clickSignUpEvent() + } + + private fun clickSignUpEvent() { + + binding.apply { + val userName = etName.text + val userId = etId.text + val userPwd = etPwd.text + + btnSignup.setOnClickListener { + if (userName.isEmpty() || userId.isEmpty() || userPwd.isEmpty() ){ + makeToast("입력되지 않은 정보가 있습니다") + } + else { + initNetwork() + } + } + } + + + } + + private fun initNetwork() { + val requsetSignupData = RequsetSignUpdata( + email = binding.etId.text.toString(), + password = binding.etPwd.toString(), + name = binding.etName.toString() + ) + + val call : Call = ServiceCreater.service.postSignup(requsetSignupData) + + call.enqueue(object : Callback{ + override fun onResponse( + call: Call, + response: Response + ) { + if(response.isSuccessful){ + val data = response.body()?.data + Log.d("서버통신 상태", response.body()?.status.toString()) + finish() + } + + else{ + Log.d("서버통신 상태", response.body()?.status.toString()) + } + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("서버통신 상태", "실패") + } + }) + + + } +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/util/IntentUtil.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/util/IntentUtil.kt new file mode 100644 index 0000000..4ec31ed --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/util/IntentUtil.kt @@ -0,0 +1,12 @@ +package com.example.a29th_first_semina.util +import android.content.Context +import android.content.Intent + +object IntentUtil { + fun moveActivity(context: Context?, activity: Class<*>){ + val intent = Intent(context,activity) + context?.startActivity(intent) + + } + +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/util/ToastUtil.kt b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/util/ToastUtil.kt new file mode 100644 index 0000000..0d81f05 --- /dev/null +++ b/29th_first_semina/app/src/main/java/com/example/a29th_first_semina/util/ToastUtil.kt @@ -0,0 +1,11 @@ +package com.example.a29th_first_semina.util + +import android.content.Context +import android.widget.Toast + +object ToastUtil { + + fun Context.makeToast(message : String){ + Toast.makeText(this,message,Toast.LENGTH_SHORT).show() + } +} \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/drawable/ic_main_back.xml b/29th_first_semina/app/src/main/res/drawable/ic_main_back.xml new file mode 100644 index 0000000..77ffb2d --- /dev/null +++ b/29th_first_semina/app/src/main/res/drawable/ic_main_back.xml @@ -0,0 +1,13 @@ + + + diff --git a/29th_first_semina/app/src/main/res/drawable/ic_settings_div_grey.xml b/29th_first_semina/app/src/main/res/drawable/ic_settings_div_grey.xml new file mode 100644 index 0000000..a798659 --- /dev/null +++ b/29th_first_semina/app/src/main/res/drawable/ic_settings_div_grey.xml @@ -0,0 +1,9 @@ + + + diff --git a/29th_first_semina/app/src/main/res/layout/activity_onboarding.xml b/29th_first_semina/app/src/main/res/layout/activity_onboarding.xml new file mode 100644 index 0000000..590c969 --- /dev/null +++ b/29th_first_semina/app/src/main/res/layout/activity_onboarding.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/layout/activity_setting.xml b/29th_first_semina/app/src/main/res/layout/activity_setting.xml new file mode 100644 index 0000000..43184f0 --- /dev/null +++ b/29th_first_semina/app/src/main/res/layout/activity_setting.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml b/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml index f39715a..a33cdcb 100644 --- a/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml +++ b/29th_first_semina/app/src/main/res/layout/activity_sign_up.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" - tools:context=".ui.view.sigin.SignUpActivity"> + tools:context=".ui.view.sigin.view.SignUpActivity"> + tools:context=".ui.view.sigin.view.SignInActivity"> + + + + + + + + + \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/layout/fragment_onboarding2.xml b/29th_first_semina/app/src/main/res/layout/fragment_onboarding2.xml new file mode 100644 index 0000000..fddeecf --- /dev/null +++ b/29th_first_semina/app/src/main/res/layout/fragment_onboarding2.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/layout/fragment_onbording3.xml b/29th_first_semina/app/src/main/res/layout/fragment_onbording3.xml new file mode 100644 index 0000000..af0ddbd --- /dev/null +++ b/29th_first_semina/app/src/main/res/layout/fragment_onbording3.xml @@ -0,0 +1,47 @@ + + + + + + + + + + \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/navigation/nav_onboarding.xml b/29th_first_semina/app/src/main/res/navigation/nav_onboarding.xml new file mode 100644 index 0000000..25653e1 --- /dev/null +++ b/29th_first_semina/app/src/main/res/navigation/nav_onboarding.xml @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/29th_first_semina/app/src/main/res/values/strings.xml b/29th_first_semina/app/src/main/res/values/strings.xml index a71a836..5fddd14 100644 --- a/29th_first_semina/app/src/main/res/values/strings.xml +++ b/29th_first_semina/app/src/main/res/values/strings.xml @@ -39,6 +39,19 @@ 팔로잉 팔로워 준비 중입니다 + + + + 온보딩 + 다음으로 + SOPTHub에 오신걸\n환영합니다! + SOPTHub에서 즐거운 시간\n보내시길 바랍니다! + SOPTHub를\n시작해볼까요? + 시작하기 + + + 로그아웃 + 세팅 Hello blank fragment