Refactor conversation.start

This commit is contained in:
Andrew 2024-06-18 20:39:45 +09:30
parent 634ec8f86c
commit db0eae80eb
5 changed files with 99 additions and 87 deletions

View File

@ -18,6 +18,8 @@ import network.loki.messenger.R
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.modifyLayoutParams
import org.thoughtcrime.securesms.conversation.new.NewMessageFragment
import org.thoughtcrime.securesms.conversation.start.home.NewConversationHomeFragment
import org.thoughtcrime.securesms.conversation.start.invitefriend.InviteFriendFragment
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
import org.thoughtcrime.securesms.groups.CreateGroupFragment
import org.thoughtcrime.securesms.groups.JoinCommunityFragment

View File

@ -1,9 +1,5 @@
package org.thoughtcrime.securesms.conversation.start
package org.thoughtcrime.securesms.conversation.start.home
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
@ -15,18 +11,15 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.fragment.app.Fragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.MutableStateFlow
import network.loki.messenger.R
import org.session.libsession.utilities.TextSecurePreferences
import org.thoughtcrime.securesms.conversation.start.NewConversationDelegate
import org.thoughtcrime.securesms.conversation.start.NullNewConversationDelegate
import org.thoughtcrime.securesms.ui.Divider
import org.thoughtcrime.securesms.ui.ItemButton
import org.thoughtcrime.securesms.ui.LocalDimensions
@ -37,46 +30,11 @@ import org.thoughtcrime.securesms.ui.color.LocalColors
import org.thoughtcrime.securesms.ui.components.AppBar
import org.thoughtcrime.securesms.ui.components.QrImage
import org.thoughtcrime.securesms.ui.contentDescription
import org.thoughtcrime.securesms.ui.createThemedComposeView
import org.thoughtcrime.securesms.ui.small
import org.thoughtcrime.securesms.ui.xl
import javax.inject.Inject
@AndroidEntryPoint
class NewConversationHomeFragment : Fragment() {
@Inject
lateinit var textSecurePreferences: TextSecurePreferences
var delegate = MutableStateFlow<NewConversationDelegate>(NullNewConversationDelegate)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View = createThemedComposeView {
NewConversationScreen(
accountId = TextSecurePreferences.getLocalNumber(requireContext())!!,
delegate = delegate.collectAsState().value
)
}
}
@Preview
@Composable
private fun PreviewNewConversationScreen(
@PreviewParameter(SessionColorsParameterProvider::class) colors: Colors
) {
PreviewTheme(colors) {
NewConversationScreen(
accountId = "059287129387123",
NullNewConversationDelegate
)
}
}
@Composable
private fun NewConversationScreen(
internal fun NewConversationScreen(
accountId: String,
delegate: NewConversationDelegate
) {
@ -109,7 +67,8 @@ private fun ColumnScope.Items(
Divider(startIndent = LocalDimensions.current.dividerIndent)
ItemButton(textId = R.string.dialog_join_community_title, icon = R.drawable.ic_globe, onClick = delegate::onJoinCommunitySelected)
Divider(startIndent = LocalDimensions.current.dividerIndent)
ItemButton(textId = R.string.activity_settings_invite_button_title, icon = R.drawable.ic_invite_friend, Modifier.contentDescription(R.string.AccessibilityId_invite_friend_button), onClick = delegate::onInviteFriend)
ItemButton(textId = R.string.activity_settings_invite_button_title, icon = R.drawable.ic_invite_friend, Modifier.contentDescription(
R.string.AccessibilityId_invite_friend_button), onClick = delegate::onInviteFriend)
Column(
modifier = Modifier
.padding(horizontal = LocalDimensions.current.marginMedium)
@ -125,4 +84,17 @@ private fun ColumnScope.Items(
Spacer(modifier = Modifier.height(LocalDimensions.current.itemSpacingSmall))
QrImage(string = accountId, Modifier.contentDescription(R.string.AccessibilityId_qr_code))
}
}
}
@Preview
@Composable
private fun PreviewNewConversationScreen(
@PreviewParameter(SessionColorsParameterProvider::class) colors: Colors
) {
PreviewTheme(colors) {
NewConversationScreen(
accountId = "059287129387123",
NullNewConversationDelegate
)
}
}

View File

@ -0,0 +1,35 @@
package org.thoughtcrime.securesms.conversation.start.home
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.runtime.collectAsState
import androidx.fragment.app.Fragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.MutableStateFlow
import org.session.libsession.utilities.TextSecurePreferences
import org.thoughtcrime.securesms.conversation.start.NewConversationDelegate
import org.thoughtcrime.securesms.conversation.start.NullNewConversationDelegate
import org.thoughtcrime.securesms.ui.createThemedComposeView
import javax.inject.Inject
@AndroidEntryPoint
class NewConversationHomeFragment : Fragment() {
@Inject
lateinit var textSecurePreferences: TextSecurePreferences
var delegate = MutableStateFlow<NewConversationDelegate>(NullNewConversationDelegate)
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View = createThemedComposeView {
NewConversationScreen(
accountId = TextSecurePreferences.getLocalNumber(requireContext())!!,
delegate = delegate.collectAsState().value
)
}
}

View File

@ -1,9 +1,5 @@
package org.thoughtcrime.securesms.conversation.start
package org.thoughtcrime.securesms.conversation.start.invitefriend
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement.Absolute.spacedBy
import androidx.compose.foundation.layout.Column
@ -15,16 +11,10 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.fragment.app.Fragment
import dagger.hilt.android.AndroidEntryPoint
import network.loki.messenger.R
import org.session.libsession.utilities.TextSecurePreferences
import org.thoughtcrime.securesms.preferences.copyPublicKey
import org.thoughtcrime.securesms.preferences.sendInvitationToUseSession
import org.thoughtcrime.securesms.ui.LocalDimensions
import org.thoughtcrime.securesms.ui.PreviewTheme
import org.thoughtcrime.securesms.ui.base
@ -34,37 +24,10 @@ import org.thoughtcrime.securesms.ui.components.SlimOutlineButton
import org.thoughtcrime.securesms.ui.components.SlimOutlineCopyButton
import org.thoughtcrime.securesms.ui.components.border
import org.thoughtcrime.securesms.ui.contentDescription
import org.thoughtcrime.securesms.ui.createThemedComposeView
import org.thoughtcrime.securesms.ui.small
@AndroidEntryPoint
class InviteFriendFragment : Fragment() {
lateinit var delegate: NewConversationDelegate
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View = createThemedComposeView {
InviteFriend(
TextSecurePreferences.getLocalNumber(LocalContext.current)!!,
onBack = { delegate.onDialogBackPressed() },
onClose = { delegate.onDialogClosePressed() },
copyPublicKey = requireContext()::copyPublicKey,
sendInvitation = requireContext()::sendInvitationToUseSession,
)
}
}
@Preview
@Composable
private fun PreviewInviteFriend() {
PreviewTheme {
InviteFriend("050000000")
}
}
@Composable
private fun InviteFriend(
internal fun InviteFriend(
accountId: String,
onBack: () -> Unit = {},
onClose: () -> Unit = {},
@ -116,3 +79,11 @@ private fun InviteFriend(
}
}
}
@Preview
@Composable
private fun PreviewInviteFriend() {
PreviewTheme {
InviteFriend("050000000")
}
}

View File

@ -0,0 +1,32 @@
package org.thoughtcrime.securesms.conversation.start.invitefriend
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.LocalContext
import androidx.fragment.app.Fragment
import dagger.hilt.android.AndroidEntryPoint
import org.session.libsession.utilities.TextSecurePreferences
import org.thoughtcrime.securesms.conversation.start.NewConversationDelegate
import org.thoughtcrime.securesms.preferences.copyPublicKey
import org.thoughtcrime.securesms.preferences.sendInvitationToUseSession
import org.thoughtcrime.securesms.ui.createThemedComposeView
@AndroidEntryPoint
class InviteFriendFragment : Fragment() {
lateinit var delegate: NewConversationDelegate
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View = createThemedComposeView {
InviteFriend(
TextSecurePreferences.getLocalNumber(LocalContext.current)!!,
onBack = { delegate.onDialogBackPressed() },
onClose = { delegate.onDialogClosePressed() },
copyPublicKey = requireContext()::copyPublicKey,
sendInvitation = requireContext()::sendInvitationToUseSession,
)
}
}