Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/src/main/java/com/fitmate/fitmate/ChatActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.util.Log
import androidx.navigation.NavArgument
import androidx.navigation.NavController
import androidx.navigation.NavGraph
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.navArgs
import androidx.security.crypto.EncryptedSharedPreferences
Expand Down Expand Up @@ -42,7 +43,6 @@ class ChatActivity : AppCompatActivity() {




// Retrieve intent extras
val fitGroupId = intent.getIntExtra("fitGroupId", -1)
// Create a bundle with the retrieved extras
Expand Down
26 changes: 15 additions & 11 deletions app/src/main/java/com/fitmate/fitmate/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ import android.animation.ObjectAnimator
import android.content.Context
import android.content.SharedPreferences
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.navigation.NavController
import androidx.navigation.NavOptions
Expand All @@ -22,19 +21,20 @@ import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKey
import com.fitmate.fitmate.databinding.ActivityMainBinding
import com.fitmate.fitmate.presentation.ui.login.LoginFragment
import com.fitmate.fitmate.presentation.viewmodel.LoginViewModel
import com.fitmate.fitmate.presentation.viewmodel.MainActivityViewModel
import com.fitmate.fitmate.util.ControlActivityInterface
import com.fitmate.fitmate.util.PendingTokenValue
import com.fitmate.fitmate.util.customGetSerializable
import dagger.hilt.android.AndroidEntryPoint
import java.util.UUID

@AndroidEntryPoint
class MainActivity : AppCompatActivity(), ControlActivityInterface {
private lateinit var binding: ActivityMainBinding
private lateinit var navController: NavController
private var pendingToken: PendingTokenValue? = null
var selecedMenuId: Int = -1
private val viewModel: MainActivityViewModel by viewModels()
private val loginModel: LoginViewModel by viewModels()
private val sharedPreferences: SharedPreferences by lazy {
val masterKeyAlies = MasterKey
.Builder(applicationContext, MasterKey.DEFAULT_MASTER_KEY_ALIAS)
Expand Down Expand Up @@ -72,18 +72,21 @@ class MainActivity : AppCompatActivity(), ControlActivityInterface {
observeOnboardingState()
//온보딩 조회 여부 확인
viewModel.loadOnBoardingStateInPref()
//펜딩 인텐트로 날아오는 토킅 값 가져오기

pendingToken = intent.customGetSerializable("pendingToken", PendingTokenValue::class.java)

if (intent.getStringExtra("navigateTo") == "certificateFragment") navController.navigate(R.id.certificateFragment)

binding.bottomNavigationViewMainActivity.setOnItemSelectedListener { item ->
//if (intent.getStringExtra("navigateTo") == "certificateFragment") navController.navigate(R.id.certificateFragment)

/* binding.bottomNavigationViewMainActivity.setOnItemSelectedListener { item ->
val positionId = item.itemId
Log.d("testtt","item.itemId: $positionId // selecedMenuId: $selecedMenuId")
if (positionId == selecedMenuId) return@setOnItemSelectedListener false
when (positionId) {
R.id.homeFragment -> {
selecedMenuId = R.id.homeFragment
navigateWithoutBackStack(R.id.homeFragment, true)
navigateWithoutBackStack(R.id.homeFragment, false)
true
}

Expand Down Expand Up @@ -113,7 +116,7 @@ class MainActivity : AppCompatActivity(), ControlActivityInterface {

else -> false
}
}
}*/
}

private fun navigateWithoutBackStack(destinationId: Int, clearBackStack: Boolean) {
Expand All @@ -135,19 +138,20 @@ class MainActivity : AppCompatActivity(), ControlActivityInterface {
var state = UUID.randomUUID().toString()
val redirectUrl = "https://fitmate.com/oauth"
if(platform == "naver") {
showWebViewFragment("https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=${LoginFragment.naverClientId}&redirect_uri=$packageName&state=$state")
showWebViewFragment("https://nid.naver.com/oauth2.0/authorize?response_type=code&client_id=${LoginFragment.naverClientId}&redirect_uri=$packageName&state=$state",pendingToken)
} else {
showWebViewFragment("https://kauth.kakao.com/oauth/authorize?client_id=${LoginFragment.kakaoRestAPIKey}&redirect_uri=${redirectUrl}&response_type=code&state=$state")
showWebViewFragment("https://kauth.kakao.com/oauth/authorize?client_id=${LoginFragment.kakaoRestAPIKey}&redirect_uri=${redirectUrl}&response_type=code&state=$state",pendingToken)
}
} else {
navController.navigate(R.id.action_homeFragment_to_onboardingContainerFragment)
}
}
}

private fun showWebViewFragment(loginUrl: String) {
private fun showWebViewFragment(loginUrl: String, pendingToken:PendingTokenValue?) {
val bundle = Bundle().apply {
putString("loginUrl", loginUrl)
putSerializable("pendingToken", pendingToken)
}
navController.navigate(R.id.loginWebViewFragment, bundle)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.navigation.NavDeepLinkBuilder
import com.fitmate.fitmate.MainActivity
import com.fitmate.fitmate.R
import com.fitmate.fitmate.domain.usecase.DbCertificationUseCase
import com.fitmate.fitmate.util.PendingTokenValue
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -61,16 +62,20 @@ class StopWatchService : Service() {
super.onCreate()
createNotificationChannel()

pendingIntent = NavDeepLinkBuilder(baseContext)
val intent = Intent(this,MainActivity::class.java)
intent.putExtra("pendingToken",PendingTokenValue.CERTIFICATION)
val test = PendingIntent.getActivity(this,1,intent,
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE)
/* pendingIntent = NavDeepLinkBuilder(baseContext)
.setComponentName(MainActivity::class.java)
.setGraph(R.navigation.nav_main_graph)
.setDestination(R.id.certificateFragment)
.createPendingIntent()
.createPendingIntent()*/

contentView = RemoteViews(packageName, R.layout.certificatiion_custom_notification)
contentView.setTextViewText(R.id.textViewNotificationTitle, "피트메이트 인증 진행중")
contentView.setTextViewText(R.id.textViewStopWatch, formatTime())
notificationBuilder = notificationBuilder(contentView).setContentIntent(pendingIntent)
notificationBuilder = notificationBuilder(contentView).setContentIntent(test)

startForeground(NOTIFICATION_ID, notificationBuilder.build())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,8 @@ class ChattingFragment : Fragment(R.layout.fragment_chatting) {
bundle.putInt("groupId", fitGroupId)
findNavController().navigate(fragmentId, bundle)
} else {
Toast.makeText(context, "추후 업데이트 예정입니다.", Toast.LENGTH_SHORT).show()
findNavController().navigate(fragmentId)
//Toast.makeText(context, "추후 업데이트 예정입니다.", Toast.LENGTH_SHORT).show()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ import com.fitmate.fitmate.domain.model.VoteItem
import com.fitmate.fitmate.presentation.ui.home.list.adapter.CarouselAdapter
import com.fitmate.fitmate.presentation.ui.home.list.adapter.VoteAdapter
import com.fitmate.fitmate.presentation.viewmodel.VoteViewModel
import com.fitmate.fitmate.util.PendingTokenValue
import com.fitmate.fitmate.util.customGetSerializable
import com.google.android.material.carousel.CarouselLayoutManager
import com.google.android.material.carousel.MultiBrowseCarouselStrategy
import dagger.hilt.android.AndroidEntryPoint
Expand All @@ -27,6 +29,7 @@ class HomeFragment : Fragment(R.layout.fragment_home) {

private lateinit var binding: FragmentHomeBinding
private lateinit var recyclerView: RecyclerView
private var pendingTokenValue: PendingTokenValue? = null
private val viewModel: VoteViewModel by viewModels()
private var userId: Int = -1
private var accessToken: String = ""
Expand All @@ -36,6 +39,17 @@ class HomeFragment : Fragment(R.layout.fragment_home) {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
it.customGetSerializable<PendingTokenValue>("pendingToken")?.let {
pendingTokenValue = it
}
}
when(pendingTokenValue){
PendingTokenValue.CERTIFICATION -> {
findNavController().navigate(R.id.action_homeFragment_to_certificateFragment)
}
else -> {}
}
loadUserPreference()
}

Expand All @@ -46,6 +60,7 @@ class HomeFragment : Fragment(R.layout.fragment_home) {
initView(view)
setCarousel()
observeViewModel()

}

override fun onResume() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import com.fitmate.fitmate.MainActivity
import com.fitmate.fitmate.R
import com.fitmate.fitmate.databinding.FragmentLoginWebviewBinding
import com.fitmate.fitmate.presentation.viewmodel.LoginViewModel
import com.fitmate.fitmate.util.PendingTokenValue
import com.fitmate.fitmate.util.customGetSerializable
import com.google.android.gms.tasks.OnCompleteListener
import com.google.android.material.snackbar.Snackbar
import com.google.firebase.messaging.FirebaseMessaging
Expand All @@ -25,6 +27,7 @@ class LoginWebViewFragment : Fragment(R.layout.fragment_login_webview) {

private lateinit var binding: FragmentLoginWebviewBinding
private var loginUrl: String? = null
private var pendingTokenValue: PendingTokenValue? = null
private val viewModel: LoginViewModel by viewModels()
private val TAG = "LoginWebViewFragment"
private val defaultProfile = "https://firebasestorage.googleapis.com/v0/b/fitmate-e2b03.appspot.com/o/user_profile%2Fdefault_profile.png?alt=media&token=a4b124d6-0ba1-4585-a259-61d13c608b07"
Expand All @@ -33,7 +36,9 @@ class LoginWebViewFragment : Fragment(R.layout.fragment_login_webview) {
super.onCreate(savedInstanceState)
arguments?.let {
loginUrl = it.getString("loginUrl")
pendingTokenValue = it.customGetSerializable<PendingTokenValue>("pendingToken")
}

}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Expand Down Expand Up @@ -98,7 +103,10 @@ class LoginWebViewFragment : Fragment(R.layout.fragment_login_webview) {
(activity as MainActivity).saveUserPreference(accessToken, refreshToken, userId, platform!!, createdAt)

if(newUser == 0) {
findNavController().navigate(R.id.action_loginWebViewFragment_to_homeMainFragment)
val bundle = Bundle().apply {
putSerializable("pendingToken", pendingTokenValue)
}
findNavController().navigate(R.id.action_loginWebViewFragment_to_homeMainFragment, bundle)
Snackbar.make(binding.root, "로그인을 성공했습니다. [USERID ${userId}]", Snackbar.LENGTH_SHORT).show()
} else if(newUser == 1) {
val bundle = Bundle()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,14 @@ class MyGroupFragment: Fragment(R.layout.fragment_my_group) {
controlActivityInterface.viewNavigationBar()

adapter = MyFitGroupAdapter { fitGroup ->
val intent = Intent(requireContext(), ChatActivity::class.java).apply {
val bundle = Bundle().apply {
putInt("fitGroupId", fitGroup.fitGroupId)
}
findNavController().navigate(R.id.chatActivity,bundle)
/*val intent = Intent(requireContext(), ChatActivity::class.java).apply {
putExtra("fitGroupId", fitGroup.fitGroupId)
}
startActivity(intent)
startActivity(intent)*/
}
return binding.root
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.fitmate.fitmate.util

import java.io.Serializable

enum class PendingTokenValue(val value:String, val code:Int): Serializable {
CERTIFICATION("certification" ,1)
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.fitmate.fitmate.util

import android.content.Intent
import android.os.Build
import android.os.Bundle
import java.io.Serializable
Expand All @@ -12,3 +13,11 @@ inline fun <reified T : Serializable> Bundle.customGetSerializable(key: String):
getSerializable(key) as? T
}
}
@Suppress("DEPRECATION")
inline fun <reified T : Serializable> Intent.customGetSerializable(key: String, clazz: Class<T>): T? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
this.getSerializableExtra(key, clazz)
} else {
this.getSerializableExtra(key) as T?
}
}
46 changes: 46 additions & 0 deletions app/src/main/res/layout/chatting_extra_item_certification.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>
<variable
name="fragment"
type="com.fitmate.fitmate.presentation.ui.chatting.ChattingFragment" />

<variable
name="textViewString"
type="java.lang.String" />

<variable
name="icon"
type="android.graphics.drawable.Drawable" />

</data>

<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_height="wrap_content">

<Button
android:id="@+id/chattingExtraFunctionButton"
style="?attr/materialIconButtonFilledStyle"
app:icon="@drawable/ic_baseline_timer_24"
android:backgroundTint="#8771FA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>


<TextView
android:id="@+id/textViewButtonGuide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="sadfsadf"
android:text="@{textViewString}"
android:textColor="@color/white"
android:layout_marginTop="5dp"
android:textAppearance="@style/Font.regular16" />
</LinearLayout>
</layout>
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<Button
android:id="@+id/chattingExtraFunctionButton"
style="?attr/materialIconButtonFilledStyle"
app:icon="@drawable/icon_group_fit_situation"
app:icon="@drawable/person_icon"
android:backgroundTint="#8771FA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/res/layout/fragment_chatting.xml
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,16 @@
app:layout_constraintEnd_toEndOf="@+id/containerFitOffSituation"
app:textViewString="@{@string/chatting_scr_fit_group_point}" />

<include
android:id="@+id/containerCertification"
layout="@layout/chatting_extra_item_certification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@+id/containerFitOffApply"
app:layout_constraintStart_toStartOf="@+id/containerFitOffApply"
app:textViewString="@{@string/chatting_scr_fit_certification}" />


</androidx.constraintlayout.widget.ConstraintLayout>

Expand Down
8 changes: 1 addition & 7 deletions app/src/main/res/navigation/nav_chat_graph.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@
<action
android:id="@+id/action_chattingFragment_to_groupProgressFragment"
app:destination="@id/groupProgressFragment" />
<action
android:id="@+id/action_chattingFragment_to_certificateFragment2"
app:destination="@id/certificateFragment2" />
</fragment>
<fragment
android:id="@+id/groupFineFragment"
Expand All @@ -49,10 +46,7 @@
android:id="@+id/groupVoteFragment"
android:name="com.fitmate.fitmate.presentation.ui.chatting.GroupVoteFragment"
android:label="@string/group_vote_scr_toolbar" />
<fragment
android:id="@+id/certificateFragment2"
android:name="com.fitmate.fitmate.presentation.ui.certificate.CertificateFragment"
android:label="@string/certificate_scr_toolbar" />

<fragment
android:id="@+id/myGroupFragment2"
android:name="com.fitmate.fitmate.presentation.ui.mygroup.MyGroupFragment"
Expand Down
Loading