Skip to content

Commit e6919c9

Browse files
authored
Merge pull request #449 from team-mohaeng/develop
Release 1.0.0v
2 parents 237bb16 + 7617dfc commit e6919c9

32 files changed

+147
-128
lines changed

.idea/misc.xml

+3-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ android {
1919
applicationId "org.journey.android"
2020
minSdkVersion 23
2121
targetSdkVersion 31
22-
versionCode 4
22+
versionCode 7
2323
versionName "1.0"
2424

2525
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

app/src/main/AndroidManifest.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<meta-data
2424
android:name="com.google.firebase.messaging.default_notification_color"
2525
android:resource="@android:color/holo_orange_light" />
26+
<!-- Set color used with incoming notification messages (알림 채널 메타 데이터 추가) -->
2627
<meta-data
2728
android:name="com.google.firebase.messaging.default_notification_channel_id"
2829
android:value="@string/default_notification_channel_id" />
@@ -33,9 +34,8 @@
3334
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
3435
</intent-filter>
3536
</service>
36-
3737
<activity
38-
android:name="org.journey.android.splash.frame.EntryActivity"
38+
android:name="org.journey.android.EntryActivity"
3939
android:exported="true">
4040
</activity>
4141
<activity

app/src/main/java/org/journey/android/splash/frame/EntryActivity.kt app/src/main/java/org/journey/android/EntryActivity.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
package org.journey.android.splash.frame
1+
package org.journey.android
22

33
import android.content.pm.PackageManager
4-
import androidx.appcompat.app.AppCompatActivity
54
import android.os.Bundle
65
import android.util.Base64
76
import android.util.Log
7+
import androidx.appcompat.app.AppCompatActivity
88
import androidx.navigation.NavController
99
import androidx.navigation.fragment.NavHostFragment
1010
import com.kakao.sdk.common.util.Utility
1111
import dagger.hilt.android.AndroidEntryPoint
12-
import org.journey.android.R
1312
import org.journey.android.databinding.ActivityEntryBinding
1413
import org.journey.android.util.TedRxKeyboardObserver
1514
import java.security.MessageDigest
@@ -52,4 +51,5 @@ class EntryActivity : AppCompatActivity() {
5251
Log.e("name not found", e.toString())
5352
}
5453
}
54+
5555
}

app/src/main/java/org/journey/android/community/ui/fragment/CommunityDetailFragment.kt

+57-21
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import android.view.View
1313
import android.view.ViewGroup
1414
import android.widget.Button
1515
import android.widget.ImageButton
16+
import android.widget.TextView
1617
import android.widget.Toast
1718
import androidx.core.content.ContextCompat
1819
import androidx.fragment.app.Fragment
@@ -129,30 +130,65 @@ class CommunityDetailFragment : Fragment() {
129130
val reportBtn = view.findViewById<Button>(R.id.button_dialog_report)
130131

131132
reportBtn.setOnClickListener {
132-
val call: Call<Unit> = FeedRequestToServer.writeService
133-
.reportDiary(
134-
feedDetail.get("id") as Int,
135-
"application/json",
136-
viewModel.getJWT()
137-
)
138-
call.enqueue(object : Callback<Unit> {
139-
override fun onResponse(call: Call<Unit>, response: Response<Unit>) {
140-
if (response.isSuccessful) {
141-
Toast.makeText(requireContext(), "신고했습니다.", Toast.LENGTH_SHORT).show()
142-
reportDialog?.dismiss()
143-
} else {
144-
if(response.code() == 404 || response.code() == 401){
145-
Toast.makeText(requireContext(), response.message(), Toast.LENGTH_SHORT).show()
133+
reportDialog?.dismiss()
134+
135+
val reportCheckDialog = activity?.let { it1 -> Dialog(it1) }
136+
val reportCheckDialogInflater: LayoutInflater = LayoutInflater.from(activity)
137+
val mView: View =
138+
reportCheckDialogInflater.inflate(R.layout.dialog_detail_delete, null)
139+
val reportBtn: Button = mView.findViewById(R.id.button_dialog_delete)
140+
val closeBtn: Button = mView.findViewById(R.id.button_dialog_close)
141+
val window = reportCheckDialog?.window
142+
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
143+
144+
val reportTitle: TextView = mView.findViewById(R.id.textview_dialog_delete)
145+
val reportContent: TextView = mView.findViewById(R.id. textview_delete_content)
146+
reportTitle.text = "신고하기"
147+
reportContent.text = "10회 이상 신고될 경우 \n게시물이 삭제되고 계정이 차단 조치돼"
148+
reportBtn.text = "신고"
149+
150+
151+
if (reportCheckDialog != null) {
152+
reportCheckDialog.setContentView(mView)
153+
reportCheckDialog.create()
154+
reportCheckDialog.show()
155+
}
156+
closeBtn.setOnClickListener {
157+
if (reportCheckDialog != null) {
158+
reportCheckDialog.dismiss()
159+
reportCheckDialog.cancel()
160+
}
161+
}
162+
reportBtn.setOnClickListener {
163+
val call: Call<Unit> = FeedRequestToServer.writeService
164+
.reportDiary(
165+
feedDetail.get("id") as Int,
166+
"application/json",
167+
viewModel.getJWT()
168+
)
169+
call.enqueue(object : Callback<Unit> {
170+
override fun onResponse(call: Call<Unit>, response: Response<Unit>) {
171+
if (response.isSuccessful) {
172+
Toast.makeText(requireContext(), "신고했습니다.", Toast.LENGTH_SHORT)
173+
.show()
174+
reportDialog?.dismiss()
175+
} else {
176+
if (response.code() == 404 || response.code() == 401) {
177+
Toast.makeText(
178+
requireContext(),
179+
"이미 신고한 게시물입니다.",
180+
Toast.LENGTH_SHORT
181+
).show()
182+
}
146183
}
147-
// Toast.makeText(requireContext(), response.toString(), Toast.LENGTH_SHORT).show()
184+
reportCheckDialog?.dismiss()
148185
}
149-
}
150186

151-
override fun onFailure(call: Call<Unit>, t: Throwable) {
152-
Log.d("Report Diary NT Error", "Report Error!")
153-
}
154-
})
155-
reportDialog?.dismiss()
187+
override fun onFailure(call: Call<Unit>, t: Throwable) {
188+
Log.d("Report Diary NT Error", "Report Error!")
189+
}
190+
})
191+
}
156192
}
157193

158194
reportDialog?.setContentView(view)

app/src/main/java/org/journey/android/di/NetworkModule.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ object NetworkModule {
3838
@UnAuthOkHttp
3939
fun provideAuthOkHttpClientBuilder(): OkHttpClient {
4040
return OkHttpClient.Builder()
41-
.connectTimeout(30, TimeUnit.SECONDS)
42-
.writeTimeout(30, TimeUnit.SECONDS)
43-
.readTimeout(30, TimeUnit.SECONDS)
41+
.connectTimeout(60, TimeUnit.SECONDS)
42+
.writeTimeout(60, TimeUnit.SECONDS)
43+
.readTimeout(60, TimeUnit.SECONDS)
4444
.addInterceptor(loggingInterceptor)
4545
.build()
4646
}

app/src/main/java/org/journey/android/mypage/ui/fragment/EditNickNameFragment.kt

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class EditNickNameFragment : Fragment() {
3838
super.onViewCreated(view, savedInstanceState)
3939
binding.viewModel = viewModel
4040
binding.lifecycleOwner = viewLifecycleOwner
41+
binding.edittextEditNickname.hint = viewModel.getNickName()
4142
setButtonVisible()
4243
popBackStack()
4344
changeNickName()

app/src/main/java/org/journey/android/network/RetrofitInterface.kt

+5
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ import org.journey.android.main.dto.ResponseHomeDTO
2323
import org.journey.android.mypage.data.dto.response.ResponseCheckMyPageDTO
2424
import org.journey.android.mypage.data.dto.response.ResponseCompleteCourseDTO
2525
import org.journey.android.pushalarm.data.response.ResponsePushAlarmDTO
26+
import org.journey.android.signup.data.request.RequestBlockUserDTO
2627
import org.journey.android.signup.data.request.RequestChangeNickNameDTO
2728
import org.journey.android.signup.data.request.RequestSignupDTO
2829
import org.journey.android.signup.data.request.RequestSocialSignUpDTO
30+
import org.journey.android.signup.data.response.ResponseBlockUserDTO
2931
import org.journey.android.signup.data.response.ResponseChangeNickNameDTO
3032
import org.journey.android.signup.data.response.ResponseSignupDTO
3133
import org.journey.android.signup.data.response.ResponseSocialSignUpDTO
@@ -124,4 +126,7 @@ interface RetrofitInterface {
124126
@Part image: MultipartBody.Part?
125127
): Single<ResponsePostCommunityDTO>
126128

129+
@POST("/api/block")
130+
fun blockUser(@Body requestBlockUserDTO: RequestBlockUserDTO) : Single<ResponseBlockUserDTO>
131+
127132
}

app/src/main/java/org/journey/android/onboarding/OnboardingActivity.kt

+29
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
package org.journey.android.onboarding
22

3+
import android.content.Intent
34
import android.os.Bundle
45
import android.util.Log
56
import androidx.appcompat.app.AppCompatActivity
67
import androidx.navigation.NavController
78
import androidx.navigation.fragment.NavHostFragment
89
import com.kakao.sdk.common.util.Utility
910
import dagger.hilt.android.AndroidEntryPoint
11+
import io.reactivex.rxjava3.disposables.CompositeDisposable
12+
import org.journey.android.EntryActivity
1013
import org.journey.android.R
1114
import org.journey.android.databinding.ActivityOnboardingBinding
15+
import org.journey.android.frame.MainActivity
16+
import org.journey.android.preference.UserPreferenceManager
17+
import javax.inject.Inject
1218

1319
@AndroidEntryPoint
1420
class OnboardingActivity : AppCompatActivity() {
1521
private lateinit var binding : ActivityOnboardingBinding
1622
private lateinit var navController: NavController
23+
@Inject lateinit var userPreferenceManager: UserPreferenceManager
24+
private val disposable = CompositeDisposable()
1725

1826
override fun onCreate(savedInstanceState: Bundle?) {
1927
super.onCreate(savedInstanceState)
@@ -28,6 +36,27 @@ class OnboardingActivity : AppCompatActivity() {
2836
val navHostFragment =
2937
supportFragmentManager.findFragmentById(R.id.navigation_host_fragment) as NavHostFragment
3038
navController = navHostFragment.navController
39+
40+
}
41+
42+
private fun handleFlow() {
43+
val isAlreadyLogin = userPreferenceManager.fetchIsAlreadyLogIn()
44+
Log.e("isAlready", "$isAlreadyLogin")
45+
when {
46+
isAlreadyLogin -> {
47+
startActivity(Intent(this, MainActivity::class.java))
48+
finish()
49+
}
50+
else -> {
51+
startActivity(Intent(this, OnboardingActivity::class.java))
52+
finish()
53+
}
54+
}
55+
}
56+
57+
override fun onDestroy() {
58+
super.onDestroy()
59+
disposable.clear()
3160
}
3261

3362
}

app/src/main/java/org/journey/android/onboarding/ui/fragment/OnboardingFirstFragment.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,14 @@ import dagger.hilt.android.AndroidEntryPoint
1414
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
1515
import io.reactivex.rxjava3.core.Observable
1616
import io.reactivex.rxjava3.schedulers.Schedulers
17+
import org.journey.android.EntryActivity
1718
import org.journey.android.R
1819
import org.journey.android.databinding.FragmentOnboardingFirstBinding
19-
import org.journey.android.splash.frame.EntryActivity
2020
import org.journey.android.frame.MainActivity
2121
import org.journey.android.onboarding.viewmodel.OnboardingViewModel
2222
import org.journey.android.preference.UserPreferenceManager
2323
import org.journey.android.util.AutoClearedValue
2424
import org.journey.android.util.Extensions.applyVisibilityAnimation
25-
import java.util.*
2625
import java.util.concurrent.TimeUnit
2726
import javax.inject.Inject
2827

app/src/main/java/org/journey/android/onboarding/ui/fragment/OnboardingSixthFragment.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import androidx.fragment.app.Fragment
1010
import dagger.hilt.android.AndroidEntryPoint
1111
import org.journey.android.R
1212
import org.journey.android.databinding.FragmentOnboardingSixthBinding
13-
import org.journey.android.splash.frame.EntryActivity
13+
import org.journey.android.EntryActivity
1414
import org.journey.android.util.AutoClearedValue
1515

1616
@AndroidEntryPoint

app/src/main/java/org/journey/android/preference/UserPreferenceManager.kt

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.journey.android.preference
22

3-
43
class UserPreferenceManager(private val sharedPreferencesManager: SharedPreferencesManager) {
54
fun saveUserFcmDeviceToken(token: String?) = sharedPreferencesManager.putSharedPref(FCM_DEVICE_TOKEN, token)
65
fun fetchUserFcmDeviceToken(): String = sharedPreferencesManager.getSharedPrefs(FCM_DEVICE_TOKEN, "")
@@ -26,7 +25,6 @@ class UserPreferenceManager(private val sharedPreferencesManager: SharedPreferen
2625
fun saveIsAlreadyLogIn(isAlreadyLogIn: Boolean) = sharedPreferencesManager.putSharedPref(IS_ALREADY_LOGIN, isAlreadyLogIn)
2726
fun fetchIsAlreadyLogIn(): Boolean = sharedPreferencesManager.getSharedPrefs(IS_ALREADY_LOGIN, false)
2827

29-
3028
fun saveCheckEmail(checkEmail: String) { sharedPreferencesManager.putSharedPref(CHECK_EMAIL, checkEmail) }
3129
fun fetchCheckEmail(): String { return sharedPreferencesManager.getSharedPrefs(CHECK_EMAIL, "") }
3230

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package org.journey.android.signup.data.request
2+
3+
data class RequestBlockUserDTO(
4+
val nickname : String
5+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.journey.android.signup.data.response
2+
3+
data class ResponseBlockUserDTO(
4+
val status : Int,
5+
val message : String
6+
)

app/src/main/java/org/journey/android/signup/ui/SetNickNameFragment.kt

+8-8
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import androidx.fragment.app.viewModels
1313
import androidx.navigation.fragment.findNavController
1414
import dagger.hilt.android.AndroidEntryPoint
1515
import org.journey.android.databinding.FragmentSetNickNameBinding
16-
import org.journey.android.frame.MainActivity
16+
import org.journey.android.EntryActivity
1717
import org.journey.android.preference.UserPreferenceManager
1818
import org.journey.android.signup.viewmodel.NickNameViewModel
1919
import org.journey.android.util.AutoClearedValue
@@ -47,27 +47,29 @@ class SetNickNameFragment : Fragment() {
4747
}
4848
private fun initMain() {
4949
binding.buttonSetNickname.setOnClickListener {
50-
viewModel.setNickName()
5150
if(userPreferenceManager.fetchUserSnsType().isNullOrEmpty()){
5251
viewModel.signUpEmail()
53-
viewModel.signUpSuccess.observe(viewLifecycleOwner) { successed ->
52+
viewModel.saveEmailSignUpInformation()
53+
userPreferenceManager.saveUserSnsType("")
54+
viewModel.emailSignUpSuccess.observe(viewLifecycleOwner) { successed ->
5455
if(successed) {
55-
val intent = Intent(context, MainActivity::class.java)
56+
val intent = Intent(context, EntryActivity::class.java)
5657
startActivity(intent)
5758
}
5859
}
5960
} else{
6061
viewModel.setNickName()
6162
}
6263
}
63-
// userPreferenceManager.saveUserSnsType("")
64+
userPreferenceManager.saveUserEmail(viewModel.getEmail())
65+
userPreferenceManager.saveUserPassword(viewModel.getCheckPassword())
66+
userPreferenceManager.saveUserSnsType("")
6467
}
6568
private fun checkNickName(){
6669
viewModel.nickname.observe(viewLifecycleOwner){
6770
viewModel.checkNickNameAvailable()
6871
}
6972
}
70-
7173
private fun setButtonVisible(){
7274
binding.edittextSetNickname.addTextChangedListener(object : TextWatcher {
7375
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
@@ -80,6 +82,4 @@ class SetNickNameFragment : Fragment() {
8082
override fun afterTextChanged(p0: Editable?) {}
8183
})
8284
}
83-
84-
8585
}

0 commit comments

Comments
 (0)