From a4027e3e8e63ae21b11b6331dce793e9782f3b0c Mon Sep 17 00:00:00 2001 From: YoneyamaShunpei Date: Mon, 27 Jan 2020 01:08:50 +0900 Subject: [PATCH] add process when disconnected on communication view --- .../offline/chat/CommunicationScreenTest.kt | 25 ++++++++++++--- .../offline/chat/MenuScreenTransitionTest.kt | 2 +- .../komeyama/offline/chat/di/AppComponent.kt | 14 ++++----- .../offline/chat/nearbyclient/NearbyClient.kt | 23 ++++++++++++-- .../komeyama/offline/chat/ui/MainActivity.kt | 6 ++-- .../komeyama/offline/chat/ui/MainViewModel.kt | 1 + .../{ => dialog}/ConfirmAcceptanceDialog.kt | 6 ++-- .../ui/{ => dialog}/ConfirmRequestDialog.kt | 6 ++-- .../ui/dialog/DisconnectedMessageDialog.kt | 29 +++++++++++++++++ .../ui/{ => dialog}/InitialSettingDialog.kt | 3 +- .../CommunicableUserListFragment.kt | 31 +++++++++++-------- .../CommunicationFragment.kt | 28 ++++++++++++++--- .../CommunicationHistoryListFragment.kt | 2 +- .../{setting => fragment}/SettingFragment.kt | 3 +- .../com/komeyama/offline/chat/util/Util.kt | 7 ----- app/src/main/res/layout/active_user_item.xml | 2 +- app/src/main/res/layout/activity_main.xml | 2 +- .../fragment_communicable_user_list.xml | 2 +- .../main/res/navigation/navigation_main.xml | 25 ++++++++++----- app/src/main/res/values/strings.xml | 1 + .../com/komeyama/offline/chat/UtilUnitTest.kt | 1 - 21 files changed, 157 insertions(+), 62 deletions(-) rename app/src/main/java/com/komeyama/offline/chat/ui/{ => dialog}/ConfirmAcceptanceDialog.kt (92%) rename app/src/main/java/com/komeyama/offline/chat/ui/{ => dialog}/ConfirmRequestDialog.kt (91%) create mode 100644 app/src/main/java/com/komeyama/offline/chat/ui/dialog/DisconnectedMessageDialog.kt rename app/src/main/java/com/komeyama/offline/chat/ui/{ => dialog}/InitialSettingDialog.kt (95%) rename app/src/main/java/com/komeyama/offline/chat/ui/{communicableuserlist => fragment}/CommunicableUserListFragment.kt (82%) rename app/src/main/java/com/komeyama/offline/chat/ui/{communication => fragment}/CommunicationFragment.kt (78%) rename app/src/main/java/com/komeyama/offline/chat/ui/{communicationhistorylist => fragment}/CommunicationHistoryListFragment.kt (94%) rename app/src/main/java/com/komeyama/offline/chat/ui/{setting => fragment}/SettingFragment.kt (93%) diff --git a/app/src/androidTest/java/com/komeyama/offline/chat/CommunicationScreenTest.kt b/app/src/androidTest/java/com/komeyama/offline/chat/CommunicationScreenTest.kt index f02ea7f..3118d68 100644 --- a/app/src/androidTest/java/com/komeyama/offline/chat/CommunicationScreenTest.kt +++ b/app/src/androidTest/java/com/komeyama/offline/chat/CommunicationScreenTest.kt @@ -14,10 +14,11 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.ActivityTestRule import com.komeyama.offline.chat.domain.ActiveUser +import com.komeyama.offline.chat.nearbyclient.ConnectingStatus import com.komeyama.offline.chat.nearbyclient.NearbyClient import com.komeyama.offline.chat.nearbyclient.NearbyCommunicationContent +import com.komeyama.offline.chat.nearbyclient.RequestResult import com.komeyama.offline.chat.ui.MainActivity -import com.komeyama.offline.chat.util.RequestResult import com.komeyama.offline.chat.util.toDateString import org.junit.After import org.junit.Before @@ -43,6 +44,7 @@ class CommunicationScreenTest { @Inject lateinit var nearbyClient: NearbyClient private lateinit var aroundEndpointInfo: MutableLiveData> private lateinit var requestResult: MutableLiveData + private lateinit var connectingStatus: MutableLiveData @Before fun setUp() { @@ -55,9 +57,13 @@ class CommunicationScreenTest { aroundEndpointInfoFiled.isAccessible = true aroundEndpointInfo = aroundEndpointInfoFiled.get(nearbyClient) as MutableLiveData> - val requestedEndpointInfoFiled = NearbyClient::class.java.getDeclaredField("_requestResult") - requestedEndpointInfoFiled.isAccessible = true - requestResult = requestedEndpointInfoFiled.get(nearbyClient) as MutableLiveData + val requestedResultFiled = NearbyClient::class.java.getDeclaredField("_requestResult") + requestedResultFiled.isAccessible = true + requestResult = requestedResultFiled.get(nearbyClient) as MutableLiveData + + val connectingStatusFiled = NearbyClient::class.java.getDeclaredField("_connectingStatus") + connectingStatusFiled.isAccessible = true + connectingStatus = connectingStatusFiled.get(nearbyClient) as MutableLiveData ActivityScenario.launch(MainActivity::class.java) } @@ -84,17 +90,26 @@ class CommunicationScreenTest { )) waitNextProcess(1) Espresso.onView(ViewMatchers.withId(android.R.id.button1)).perform(ViewActions.click()) + countingTaskExecutorRule.drainTasks(3, TimeUnit.SECONDS) requestResult.postValue(RequestResult.SUCCESS) countingTaskExecutorRule.drainTasks(3, TimeUnit.SECONDS) + requestResult.postValue(RequestResult.UNREQUEST) + countingTaskExecutorRule.drainTasks(3, TimeUnit.SECONDS) waitNextProcess(3) nearbyClient.receiveContent.onNext( NearbyCommunicationContent("dummySenderID_0", "dummySenderName_0", "dummyReceiverID", "dummyReceiverName", Date().toDateString(), "Hello") ) + countingTaskExecutorRule.drainTasks(3, TimeUnit.SECONDS) waitNextProcess(3) nearbyClient.receiveContent.onNext( NearbyCommunicationContent("dummySenderID_1", "dummySenderName_1", "dummyReceiverID", "dummyReceiverName", Date().toDateString(), "Hello!") ) - waitNextProcess(10) + countingTaskExecutorRule.drainTasks(3, TimeUnit.SECONDS) + waitNextProcess(3) + connectingStatus.postValue(ConnectingStatus.LOST) + Espresso.onView(ViewMatchers.withId(android.R.id.button1)).perform(ViewActions.click()) + countingTaskExecutorRule.drainTasks(3, TimeUnit.SECONDS) + waitNextProcess(5) } @After diff --git a/app/src/androidTest/java/com/komeyama/offline/chat/MenuScreenTransitionTest.kt b/app/src/androidTest/java/com/komeyama/offline/chat/MenuScreenTransitionTest.kt index 2ba1bdb..d0d5dc7 100644 --- a/app/src/androidTest/java/com/komeyama/offline/chat/MenuScreenTransitionTest.kt +++ b/app/src/androidTest/java/com/komeyama/offline/chat/MenuScreenTransitionTest.kt @@ -24,7 +24,7 @@ import androidx.test.espresso.matcher.ViewMatchers.isRoot import androidx.test.rule.ActivityTestRule import com.google.android.material.bottomnavigation.BottomNavigationView import com.komeyama.offline.chat.nearbyclient.ConnectionType -import com.komeyama.offline.chat.util.RequestResult +import com.komeyama.offline.chat.nearbyclient.RequestResult import org.junit.After import org.junit.Rule import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/com/komeyama/offline/chat/di/AppComponent.kt b/app/src/main/java/com/komeyama/offline/chat/di/AppComponent.kt index ca04363..f66be2d 100644 --- a/app/src/main/java/com/komeyama/offline/chat/di/AppComponent.kt +++ b/app/src/main/java/com/komeyama/offline/chat/di/AppComponent.kt @@ -1,14 +1,14 @@ package com.komeyama.offline.chat.di import android.app.Application -import com.komeyama.offline.chat.ui.communicableuserlist.CommunicableUserListFragment -import com.komeyama.offline.chat.ui.communicationhistorylist.CommunicationHistoryListFragment +import com.komeyama.offline.chat.ui.fragment.CommunicableUserListFragment +import com.komeyama.offline.chat.ui.fragment.CommunicationHistoryListFragment import com.komeyama.offline.chat.ui.MainActivity -import com.komeyama.offline.chat.ui.ConfirmAcceptanceDialog -import com.komeyama.offline.chat.ui.ConfirmRequestDialog -import com.komeyama.offline.chat.ui.InitialSettingDialog -import com.komeyama.offline.chat.ui.communication.CommunicationFragment -import com.komeyama.offline.chat.ui.setting.SettingFragment +import com.komeyama.offline.chat.ui.dialog.ConfirmAcceptanceDialog +import com.komeyama.offline.chat.ui.dialog.ConfirmRequestDialog +import com.komeyama.offline.chat.ui.dialog.InitialSettingDialog +import com.komeyama.offline.chat.ui.fragment.CommunicationFragment +import com.komeyama.offline.chat.ui.fragment.SettingFragment import dagger.BindsInstance import dagger.Component import javax.inject.Singleton diff --git a/app/src/main/java/com/komeyama/offline/chat/nearbyclient/NearbyClient.kt b/app/src/main/java/com/komeyama/offline/chat/nearbyclient/NearbyClient.kt index 5a1b50f..ee7c2a5 100644 --- a/app/src/main/java/com/komeyama/offline/chat/nearbyclient/NearbyClient.kt +++ b/app/src/main/java/com/komeyama/offline/chat/nearbyclient/NearbyClient.kt @@ -10,7 +10,6 @@ import com.google.android.gms.nearby.connection.Strategy.P2P_POINT_TO_POINT import com.komeyama.offline.chat.domain.ActiveUser import com.komeyama.offline.chat.domain.CommunicationContent import com.komeyama.offline.chat.domain.asNearbyMessage -import com.komeyama.offline.chat.util.RequestResult import com.komeyama.offline.chat.util.splitUserIdAndName import com.squareup.moshi.Moshi import io.reactivex.processors.PublishProcessor @@ -23,6 +22,19 @@ enum class ConnectionType{ RECEIVER } +enum class RequestResult{ + UNREQUEST, + LOADING, + SUCCESS, + CANCELED, + INTERRUPTED +} + +enum class ConnectingStatus{ + CONNECTING, + LOST +} + class NearbyClient @Inject constructor( val application: Application, val moshi: Moshi @@ -46,6 +58,9 @@ class NearbyClient @Inject constructor( private val _requestResult: MutableLiveData = MutableLiveData() val requestResult: LiveData get() = _requestResult + private val _connectingStatus: MutableLiveData = MutableLiveData() + val connectingStatus: LiveData + get() = _connectingStatus fun startNearbyClient(userIdAndName: String) { currentUserIdAndName = userIdAndName @@ -69,6 +84,7 @@ class NearbyClient @Inject constructor( fun acceptConnection(acceptEndpointId: String) { Timber.d("acceptConnection: %s", acceptEndpointId) + _connectingStatus.postValue(ConnectingStatus.CONNECTING) connectedEndpointId = acceptEndpointId connectionsClient.acceptConnection(acceptEndpointId, payloadCallback) } @@ -86,6 +102,7 @@ class NearbyClient @Inject constructor( Timber.d("success requestConnection! :%s", requestEndpointId) connectionsClient.acceptConnection(requestEndpointId, payloadCallback) _requestResult.postValue(RequestResult.SUCCESS) + _connectingStatus.postValue(ConnectingStatus.CONNECTING) }.addOnFailureListener { Timber.d("failure requestConnection!") _requestResult.postValue(RequestResult.CANCELED) @@ -159,7 +176,6 @@ class NearbyClient @Inject constructor( when(result.status) { Status.RESULT_SUCCESS -> { connectedEndpointId = endpointId - _requestResult.postValue(RequestResult.SUCCESS) } Status.RESULT_CANCELED -> { _requestResult.postValue(RequestResult.CANCELED) @@ -172,6 +188,9 @@ class NearbyClient @Inject constructor( override fun onDisconnected(endpointId: String) { Timber.d("onDisconnected: %s", endpointId) + _requestResult.postValue(RequestResult.UNREQUEST) + _connectingStatus.postValue(ConnectingStatus.LOST) + reStartNearbyClient() } } diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/MainActivity.kt b/app/src/main/java/com/komeyama/offline/chat/ui/MainActivity.kt index 4333efd..d07b4be 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/MainActivity.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/MainActivity.kt @@ -16,9 +16,9 @@ import com.komeyama.offline.chat.databinding.ActivityMainBinding import com.komeyama.offline.chat.di.MainViewModelFactory import com.komeyama.offline.chat.domain.ActiveUser import com.komeyama.offline.chat.nearbyclient.ConnectionType -import com.komeyama.offline.chat.ui.communicableuserlist.CommunicableUserListFragmentDirections -import com.komeyama.offline.chat.ui.communicationhistorylist.CommunicationHistoryListFragmentDirections -import com.komeyama.offline.chat.ui.setting.SettingFragmentDirections +import com.komeyama.offline.chat.ui.fragment.CommunicableUserListFragmentDirections +import com.komeyama.offline.chat.ui.fragment.CommunicationHistoryListFragmentDirections +import com.komeyama.offline.chat.ui.fragment.SettingFragmentDirections import kotlinx.android.synthetic.main.activity_main.* import permissions.dispatcher.NeedsPermission import permissions.dispatcher.RuntimePermissions diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/MainViewModel.kt b/app/src/main/java/com/komeyama/offline/chat/ui/MainViewModel.kt index bda7cc1..d9d65d9 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/MainViewModel.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/MainViewModel.kt @@ -25,6 +25,7 @@ class MainViewModel @Inject constructor( val activeUserList = nearbyClient.aroundEndpointInfo val invitedInfo = nearbyClient.inviteEndpointInfo val requestResult = nearbyClient.requestResult + val connectingStatus = nearbyClient.connectingStatus private val _isExistUserInformation: MutableLiveData = MutableLiveData() val isExistUserInformation:LiveData get() = _isExistUserInformation diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/ConfirmAcceptanceDialog.kt b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/ConfirmAcceptanceDialog.kt similarity index 92% rename from app/src/main/java/com/komeyama/offline/chat/ui/ConfirmAcceptanceDialog.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/dialog/ConfirmAcceptanceDialog.kt index c0443e8..1b1dfab 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/ConfirmAcceptanceDialog.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/ConfirmAcceptanceDialog.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui +package com.komeyama.offline.chat.ui.dialog import android.app.Dialog import android.os.Bundle @@ -12,6 +12,7 @@ import androidx.navigation.fragment.findNavController import com.komeyama.offline.chat.MainApplication import com.komeyama.offline.chat.R import com.komeyama.offline.chat.di.MainViewModelFactory +import com.komeyama.offline.chat.ui.MainViewModel import timber.log.Timber import javax.inject.Inject @@ -23,7 +24,8 @@ class ConfirmAcceptanceDialog : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val args = ConfirmAcceptanceDialogArgs.fromBundle(arguments!!) + val args = + ConfirmAcceptanceDialogArgs.fromBundle(arguments!!) val message: String = getString(R.string.confirm_acceptance_dialog_message) + " " + args.userName return AlertDialog.Builder(requireActivity()) .setTitle(R.string.confirm_acceptance_dialog_title) diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/ConfirmRequestDialog.kt b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/ConfirmRequestDialog.kt similarity index 91% rename from app/src/main/java/com/komeyama/offline/chat/ui/ConfirmRequestDialog.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/dialog/ConfirmRequestDialog.kt index 6ee6d2b..792c60b 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/ConfirmRequestDialog.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/ConfirmRequestDialog.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui +package com.komeyama.offline.chat.ui.dialog import android.app.Dialog import android.os.Bundle @@ -11,6 +11,7 @@ import androidx.lifecycle.ViewModelProviders import com.komeyama.offline.chat.MainApplication import com.komeyama.offline.chat.R import com.komeyama.offline.chat.di.MainViewModelFactory +import com.komeyama.offline.chat.ui.MainViewModel import timber.log.Timber import javax.inject.Inject @@ -22,7 +23,8 @@ class ConfirmRequestDialog : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - val args = ConfirmAcceptanceDialogArgs.fromBundle(arguments!!) + val args = + ConfirmAcceptanceDialogArgs.fromBundle(arguments!!) val message: String = getString(R.string.confirm_request_dialog_message) + " " + args.userName + " ?" return AlertDialog.Builder(requireActivity()) .setTitle(R.string.confirm_request_dialog_title) diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/dialog/DisconnectedMessageDialog.kt b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/DisconnectedMessageDialog.kt new file mode 100644 index 0000000..507a69f --- /dev/null +++ b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/DisconnectedMessageDialog.kt @@ -0,0 +1,29 @@ +package com.komeyama.offline.chat.ui.dialog + +import android.app.Dialog +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment +import androidx.navigation.fragment.findNavController +import com.komeyama.offline.chat.R +import timber.log.Timber + +class DisconnectedMessageDialog: DialogFragment() { + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + + val dialog = AlertDialog.Builder(requireActivity()) + .setMessage(R.string.disconnected_message_dialog_message) + .setPositiveButton(R.string.confirm_request_dialog_ok) { _, _ -> + Timber.d("dialog disconnected message fragment ok") + findNavController().navigate(R.id.action_disconnectedMessageDialog_to_CommunicableUserListFragment) + } + .create() + dialog.setCanceledOnTouchOutside(false) + + return dialog + } +} \ No newline at end of file diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/InitialSettingDialog.kt b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/InitialSettingDialog.kt similarity index 95% rename from app/src/main/java/com/komeyama/offline/chat/ui/InitialSettingDialog.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/dialog/InitialSettingDialog.kt index 0c7a3fd..54ebf04 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/InitialSettingDialog.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/dialog/InitialSettingDialog.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui +package com.komeyama.offline.chat.ui.dialog import android.app.Dialog import android.os.Bundle @@ -14,6 +14,7 @@ import com.komeyama.offline.chat.MainApplication import com.komeyama.offline.chat.R import com.komeyama.offline.chat.databinding.FragmentInitialBinding import com.komeyama.offline.chat.di.MainViewModelFactory +import com.komeyama.offline.chat.ui.MainViewModel import javax.inject.Inject class InitialSettingDialog : DialogFragment(){ diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/communicableuserlist/CommunicableUserListFragment.kt b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicableUserListFragment.kt similarity index 82% rename from app/src/main/java/com/komeyama/offline/chat/ui/communicableuserlist/CommunicableUserListFragment.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicableUserListFragment.kt index 880d49f..1ec587a 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/communicableuserlist/CommunicableUserListFragment.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicableUserListFragment.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui.communicableuserlist +package com.komeyama.offline.chat.ui.fragment import android.os.Bundle import android.view.LayoutInflater @@ -18,8 +18,8 @@ import com.komeyama.offline.chat.databinding.ActiveUserItemBinding import com.komeyama.offline.chat.databinding.FragmentCommunicableUserListBinding import com.komeyama.offline.chat.di.MainViewModelFactory import com.komeyama.offline.chat.domain.ActiveUser +import com.komeyama.offline.chat.nearbyclient.RequestResult import com.komeyama.offline.chat.ui.MainViewModel -import com.komeyama.offline.chat.util.RequestResult import timber.log.Timber import javax.inject.Inject @@ -45,17 +45,22 @@ class CommunicableUserListFragment :Fragment(){ binding.lifecycleOwner = viewLifecycleOwner binding.viewModel = viewModel - viewModelAdapter = CommunicableUserListAdapter(ActiveUserClick { - communicationOpponentInfo = CommunicationOpponentInfo(it.id, it.name, it.endPointId) - findNavController().navigate( - CommunicableUserListFragmentDirections. - actionCommunicableUserListFragmentToConfirmRequestDialog( + viewModelAdapter = + CommunicableUserListAdapter(ActiveUserClick { + communicationOpponentInfo = + CommunicationOpponentInfo( + it.id, + it.name, + it.endPointId + ) + findNavController().navigate( + CommunicableUserListFragmentDirections.actionCommunicableUserListFragmentToConfirmRequestDialog( id = it.id, userName = it.name, endPointId = it.endPointId ) - ) - }) + ) + }) binding.recyclerView.findViewById(R.id.recycler_view).apply { layoutManager = LinearLayoutManager(context) @@ -76,10 +81,10 @@ class CommunicableUserListFragment :Fragment(){ when(it) { RequestResult.SUCCESS -> { findNavController().navigate( - CommunicableUserListFragmentDirections. - actionCommunicableUserListFragmentToCommunicationFragment( - communicationOpponentId = communicationOpponentInfo.id, - communicationOpponentName = communicationOpponentInfo.name) + CommunicableUserListFragmentDirections.actionCommunicableUserListFragmentToCommunicationFragment( + communicationOpponentId = communicationOpponentInfo.id, + communicationOpponentName = communicationOpponentInfo.name + ) ) } else -> { diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/communication/CommunicationFragment.kt b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicationFragment.kt similarity index 78% rename from app/src/main/java/com/komeyama/offline/chat/ui/communication/CommunicationFragment.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicationFragment.kt index b201c71..21e1f2a 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/communication/CommunicationFragment.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicationFragment.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui.communication +package com.komeyama.offline.chat.ui.fragment import android.os.Bundle import android.view.LayoutInflater @@ -7,9 +7,11 @@ import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders +import androidx.navigation.fragment.findNavController import com.komeyama.offline.chat.MainApplication import com.komeyama.offline.chat.R import com.komeyama.offline.chat.di.MainViewModelFactory +import com.komeyama.offline.chat.nearbyclient.ConnectingStatus import com.komeyama.offline.chat.ui.MainViewModel import com.komeyama.offline.chat.util.toDate import com.stfalcon.chatkit.commons.models.IMessage @@ -34,7 +36,10 @@ class CommunicationFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val args = CommunicationFragmentArgs.fromBundle(arguments!!) + val args = + CommunicationFragmentArgs.fromBundle( + arguments!! + ) communicationOpponentId = args.communicationOpponentId communicationOpponentName = args.communicationOpponentName @@ -60,9 +65,14 @@ class CommunicationFragment : Fragment() { adapter.addToStart( Message( index.toString(), - Author(value.sendUserId, value.sendUserName,""), + Author( + value.sendUserId, + value.sendUserName, + "" + ), value.sendTime.toDate(), - value.content),true + value.content + ),true ) } } @@ -74,10 +84,18 @@ class CommunicationFragment : Fragment() { viewModel.sendMessage( it.toString(), communicationOpponentId, - communicationOpponentName) + communicationOpponentName + ) true } + viewModel.connectingStatus.observe(viewLifecycleOwner, Observer { + Timber.d("connectingStatus:%s", it) + if (it == ConnectingStatus.LOST) { + findNavController().navigate(R.id.action_CommunicationFragment_to_disconnectedMessageDialog) + } + }) + } } diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/communicationhistorylist/CommunicationHistoryListFragment.kt b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicationHistoryListFragment.kt similarity index 94% rename from app/src/main/java/com/komeyama/offline/chat/ui/communicationhistorylist/CommunicationHistoryListFragment.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicationHistoryListFragment.kt index cbbbabd..ddea3e0 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/communicationhistorylist/CommunicationHistoryListFragment.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/CommunicationHistoryListFragment.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui.communicationhistorylist +package com.komeyama.offline.chat.ui.fragment import android.os.Bundle import android.view.LayoutInflater diff --git a/app/src/main/java/com/komeyama/offline/chat/ui/setting/SettingFragment.kt b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/SettingFragment.kt similarity index 93% rename from app/src/main/java/com/komeyama/offline/chat/ui/setting/SettingFragment.kt rename to app/src/main/java/com/komeyama/offline/chat/ui/fragment/SettingFragment.kt index f2b8c4d..77697cf 100644 --- a/app/src/main/java/com/komeyama/offline/chat/ui/setting/SettingFragment.kt +++ b/app/src/main/java/com/komeyama/offline/chat/ui/fragment/SettingFragment.kt @@ -1,4 +1,4 @@ -package com.komeyama.offline.chat.ui.setting +package com.komeyama.offline.chat.ui.fragment import android.os.Bundle import android.view.LayoutInflater @@ -10,7 +10,6 @@ import com.komeyama.offline.chat.MainApplication import com.komeyama.offline.chat.R import com.komeyama.offline.chat.di.MainViewModelFactory import com.komeyama.offline.chat.ui.MainViewModel -import timber.log.Timber import javax.inject.Inject class SettingFragment :Fragment(){ diff --git a/app/src/main/java/com/komeyama/offline/chat/util/Util.kt b/app/src/main/java/com/komeyama/offline/chat/util/Util.kt index ef7f18d..9746549 100644 --- a/app/src/main/java/com/komeyama/offline/chat/util/Util.kt +++ b/app/src/main/java/com/komeyama/offline/chat/util/Util.kt @@ -26,11 +26,4 @@ fun userIdGenerator(): String { filter { it != ':' }. shuffled().subList(0, 10). joinToString("") -} - -enum class RequestResult{ - LOADING, - SUCCESS, - CANCELED, - INTERRUPTED } \ No newline at end of file diff --git a/app/src/main/res/layout/active_user_item.xml b/app/src/main/res/layout/active_user_item.xml index a746a63..1186464 100644 --- a/app/src/main/res/layout/active_user_item.xml +++ b/app/src/main/res/layout/active_user_item.xml @@ -10,7 +10,7 @@ + type="com.komeyama.offline.chat.ui.fragment.ActiveUserClick" /> - + + tools:context=".ui.fragment.CommunicableUserListFragment"> + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 04bb6c5..5e127a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -9,6 +9,7 @@ Do you want to call Yes No + Lost connection with opponent device! Please enter your name on this form.\n※You can change it later your name OK diff --git a/app/src/test/java/com/komeyama/offline/chat/UtilUnitTest.kt b/app/src/test/java/com/komeyama/offline/chat/UtilUnitTest.kt index 6ec776c..8a13f47 100644 --- a/app/src/test/java/com/komeyama/offline/chat/UtilUnitTest.kt +++ b/app/src/test/java/com/komeyama/offline/chat/UtilUnitTest.kt @@ -7,7 +7,6 @@ import com.komeyama.offline.chat.util.userIdGenerator import org.junit.Test import org.junit.Assert.* -import java.util.* /** * Example local unit test, which will execute on the development machine (host).