@@ -11,23 +11,20 @@ import androidx.compose.runtime.mutableStateOf
1111import androidx.compose.runtime.remember
1212import androidx.compose.runtime.setValue
1313import androidx.compose.ui.Modifier
14+ import androidx.compose.ui.platform.LocalContext
1415import androidx.compose.ui.res.pluralStringResource
1516import androidx.compose.ui.res.stringResource
1617import androidx.compose.ui.text.style.TextAlign
1718import androidx.compose.ui.tooling.preview.Preview
1819import com.squareup.phrase.Phrase
1920import network.loki.messenger.R
21+ import org.session.libsession.utilities.StringSubstitutionConstants.COMMUNITY_NAME_KEY
22+ import org.session.libsession.utilities.StringSubstitutionConstants.CONVERSATION_NAME_KEY
2023import org.session.libsession.utilities.StringSubstitutionConstants.EMOJI_KEY
24+ import org.session.libsession.utilities.recipients.displayName
2125import org.thoughtcrime.securesms.InputBarDialogs
2226import org.thoughtcrime.securesms.InputbarViewModel
23- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.ClearEmoji
24- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.ConfirmRecreateGroup
25- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.HideClearEmoji
26- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.HideDeleteEveryoneDialog
27- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.HideRecreateGroupConfirm
28- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.MarkAsDeletedForEveryone
29- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.MarkAsDeletedLocally
30- import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.ShowOpenUrlDialog
27+ import org.thoughtcrime.securesms.conversation.v2.ConversationViewModel.Commands.*
3128import org.thoughtcrime.securesms.home.startconversation.group.CreateGroupScreen
3229import org.thoughtcrime.securesms.ui.AlertDialog
3330import org.thoughtcrime.securesms.ui.DialogButtonData
@@ -36,11 +33,13 @@ import org.thoughtcrime.securesms.ui.OpenURLAlertDialog
3633import org.thoughtcrime.securesms.ui.RadioOption
3734import org.thoughtcrime.securesms.ui.UserProfileModal
3835import org.thoughtcrime.securesms.ui.components.DialogTitledRadioButton
36+ import org.thoughtcrime.securesms.ui.components.annotatedStringResource
3937import org.thoughtcrime.securesms.ui.theme.LocalColors
4038import org.thoughtcrime.securesms.ui.theme.LocalDimensions
4139import org.thoughtcrime.securesms.ui.theme.LocalType
4240import org.thoughtcrime.securesms.ui.theme.PreviewTheme
4341import org.thoughtcrime.securesms.ui.theme.SessionMaterialTheme
42+ import kotlin.text.format
4443
4544@OptIn(ExperimentalMaterial3Api ::class )
4645@Composable
@@ -52,6 +51,42 @@ fun ConversationV2Dialogs(
5251 onPostUserProfileModalAction : () -> Unit // a function called in the User Profile Modal once an action has been taken
5352){
5453 SessionMaterialTheme {
54+ // Simple dialogs
55+ if (dialogsState.showSimpleDialog != null ) {
56+ val buttons = mutableListOf<DialogButtonData >()
57+ if (dialogsState.showSimpleDialog.positiveText != null ) {
58+ buttons.add(
59+ DialogButtonData (
60+ text = GetString (dialogsState.showSimpleDialog.positiveText),
61+ color = if (dialogsState.showSimpleDialog.positiveStyleDanger) LocalColors .current.danger
62+ else LocalColors .current.text,
63+ qaTag = dialogsState.showSimpleDialog.positiveQaTag,
64+ onClick = dialogsState.showSimpleDialog.onPositive
65+ )
66+ )
67+ }
68+ if (dialogsState.showSimpleDialog.negativeText != null ){
69+ buttons.add(
70+ DialogButtonData (
71+ text = GetString (dialogsState.showSimpleDialog.negativeText),
72+ qaTag = dialogsState.showSimpleDialog.negativeQaTag,
73+ onClick = dialogsState.showSimpleDialog.onNegative
74+ )
75+ )
76+ }
77+
78+ AlertDialog (
79+ onDismissRequest = {
80+ // hide dialog
81+ sendCommand(HideSimpleDialog )
82+ },
83+ title = annotatedStringResource(dialogsState.showSimpleDialog.title),
84+ text = annotatedStringResource(dialogsState.showSimpleDialog.message),
85+ showCloseButton = dialogsState.showSimpleDialog.showXIcon,
86+ buttons = buttons
87+ )
88+ }
89+
5590 // inputbar dialogs
5691 InputBarDialogs (
5792 inputBarDialogsState = inputBarDialogsState,
@@ -237,6 +272,58 @@ fun ConversationV2Dialogs(
237272 onPostAction = onPostUserProfileModalAction
238273 )
239274 }
275+
276+ // Join community
277+ if (dialogsState.joinCommunity != null ){
278+ AlertDialog (
279+ onDismissRequest = {
280+ // hide dialog
281+ sendCommand(HideJoinCommunityDialog )
282+ },
283+ title = stringResource(R .string.communityJoin),
284+ text = Phrase .from(LocalContext .current, R .string.communityJoinDescription)
285+ .put(COMMUNITY_NAME_KEY , dialogsState.joinCommunity.communityName).format().toString(),
286+ buttons = listOf (
287+ DialogButtonData (
288+ text = GetString (stringResource(id = R .string.join)),
289+ onClick = {
290+ sendCommand(JoinCommunity (dialogsState.joinCommunity.communityUrl))
291+ }
292+ ),
293+ DialogButtonData (
294+ GetString (stringResource(R .string.cancel))
295+ )
296+ )
297+ )
298+ }
299+
300+ // Attachment downloads
301+ if (dialogsState.attachmentDownload != null ){
302+ AlertDialog (
303+ onDismissRequest = {
304+ // hide dialog
305+ sendCommand(HideAttachmentDownloadDialog )
306+ },
307+ title = annotatedStringResource(R .string.attachmentsAutoDownloadModalTitle),
308+ text = annotatedStringResource(
309+ Phrase .from(LocalContext .current, R .string.attachmentsAutoDownloadModalDescription)
310+ .put(CONVERSATION_NAME_KEY , dialogsState.attachmentDownload.conversationName)
311+ .format()),
312+ buttons = listOf (
313+ DialogButtonData (
314+ text = GetString (stringResource(id = R .string.download)),
315+ onClick = {
316+ sendCommand(
317+ DownloadAttachments (attachment = dialogsState.attachmentDownload.attachment)
318+ )
319+ }
320+ ),
321+ DialogButtonData (
322+ GetString (stringResource(R .string.cancel))
323+ )
324+ )
325+ )
326+ }
240327 }
241328}
242329
0 commit comments