Skip to content

Commit 3f279c7

Browse files
Merge pull request #1804 from session-foundation/fix/dialog-instance-params
Fix/dialog instance params
2 parents fd05c7b + a38410d commit 3f279c7

18 files changed

Lines changed: 462 additions & 242 deletions

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companio
133133
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_REPLY
134134
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_RESEND
135135
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_SAVE
136-
import org.thoughtcrime.securesms.conversation.v2.dialogs.LinkPreviewDialog
137136
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton
138137
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarDelegate
139138
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarRecordingViewDelegate
@@ -399,6 +398,8 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
399398
},
400399
downloadPendingAttachment = viewModel::downloadPendingAttachment,
401400
retryFailedAttachments = viewModel::retryFailedAttachments,
401+
confirmCommunityJoin = viewModel::confirmCommunityJoin,
402+
confirmAttachmentDownload = viewModel::confirmAttachmentDownload,
402403
glide = glide,
403404
threadRecipientProvider = viewModel::recipient,
404405
messageDB = mmsSmsDb,
@@ -1294,13 +1295,14 @@ class ConversationActivityV2 : ScreenLockActionBarActivity(), InputBarDelegate,
12941295
if (textSecurePreferences.isLinkPreviewsEnabled()) {
12951296
linkPreviewViewModel.onTextChanged(this, inputBarText, 0, 0)
12961297
}
1297-
if (LinkPreviewUtil.findWhitelistedUrls(newContent.toString()).isNotEmpty()
1298-
&& !textSecurePreferences.isLinkPreviewsEnabled() && !textSecurePreferences.hasSeenLinkPreviewSuggestionDialog()) {
1299-
LinkPreviewDialog {
1298+
if ( !textSecurePreferences.isLinkPreviewsEnabled() && !textSecurePreferences.hasSeenLinkPreviewSuggestionDialog()
1299+
&& LinkPreviewUtil.findWhitelistedUrls(newContent.toString()).isNotEmpty()) {
1300+
viewModel.showLinkDownloadDialog {
1301+
textSecurePreferences.setLinkPreviewsEnabled(true)
13001302
setUpLinkPreviewObserver()
13011303
linkPreviewViewModel.onEnabled()
13021304
linkPreviewViewModel.onTextChanged(this, inputBarText, 0, 0)
1303-
}.show(supportFragmentManager, "Link Preview Dialog")
1305+
}
13041306
textSecurePreferences.setHasSeenLinkPreviewSuggestionDialog()
13051307
}
13061308

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapter.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.view.ViewGroup
88
import androidx.recyclerview.widget.RecyclerView.ViewHolder
99
import com.bumptech.glide.RequestManager
1010
import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment
11+
import org.session.libsession.utilities.Address
1112
import org.session.libsession.utilities.recipients.Recipient
1213
import org.thoughtcrime.securesms.conversation.v2.messages.ControlMessageView
1314
import org.thoughtcrime.securesms.conversation.v2.messages.VisibleMessageView
@@ -30,6 +31,8 @@ class ConversationAdapter(
3031
private val onDeselect: (MessageRecord) -> Unit,
3132
private val downloadPendingAttachment: (DatabaseAttachment) -> Unit,
3233
private val retryFailedAttachments: (List<DatabaseAttachment>) -> Unit,
34+
private val confirmCommunityJoin: (url: String, name: String) -> Unit,
35+
private val confirmAttachmentDownload: (DatabaseAttachment)->Unit,
3336
private val glide: RequestManager,
3437
private val threadRecipientProvider: () -> Recipient,
3538
val messageDB: MmsSmsDatabase,
@@ -106,6 +109,8 @@ class ConversationAdapter(
106109
delegate = visibleMessageViewDelegate,
107110
downloadPendingAttachment = downloadPendingAttachment,
108111
retryFailedAttachments = retryFailedAttachments,
112+
confirmCommunityJoin = confirmCommunityJoin,
113+
confirmAttachmentDownload = confirmAttachmentDownload,
109114
isTextExpanded = isExpanded,
110115
onTextExpanded = { messageId ->
111116
expandedMessageIds.add(messageId)

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationV2Dialogs.kt

Lines changed: 95 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,20 @@ import androidx.compose.runtime.mutableStateOf
1111
import androidx.compose.runtime.remember
1212
import androidx.compose.runtime.setValue
1313
import androidx.compose.ui.Modifier
14+
import androidx.compose.ui.platform.LocalContext
1415
import androidx.compose.ui.res.pluralStringResource
1516
import androidx.compose.ui.res.stringResource
1617
import androidx.compose.ui.text.style.TextAlign
1718
import androidx.compose.ui.tooling.preview.Preview
1819
import com.squareup.phrase.Phrase
1920
import network.loki.messenger.R
21+
import org.session.libsession.utilities.StringSubstitutionConstants.COMMUNITY_NAME_KEY
22+
import org.session.libsession.utilities.StringSubstitutionConstants.CONVERSATION_NAME_KEY
2023
import org.session.libsession.utilities.StringSubstitutionConstants.EMOJI_KEY
24+
import org.session.libsession.utilities.recipients.displayName
2125
import org.thoughtcrime.securesms.InputBarDialogs
2226
import 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.*
3128
import org.thoughtcrime.securesms.home.startconversation.group.CreateGroupScreen
3229
import org.thoughtcrime.securesms.ui.AlertDialog
3330
import org.thoughtcrime.securesms.ui.DialogButtonData
@@ -36,11 +33,13 @@ import org.thoughtcrime.securesms.ui.OpenURLAlertDialog
3633
import org.thoughtcrime.securesms.ui.RadioOption
3734
import org.thoughtcrime.securesms.ui.UserProfileModal
3835
import org.thoughtcrime.securesms.ui.components.DialogTitledRadioButton
36+
import org.thoughtcrime.securesms.ui.components.annotatedStringResource
3937
import org.thoughtcrime.securesms.ui.theme.LocalColors
4038
import org.thoughtcrime.securesms.ui.theme.LocalDimensions
4139
import org.thoughtcrime.securesms.ui.theme.LocalType
4240
import org.thoughtcrime.securesms.ui.theme.PreviewTheme
4341
import 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

Comments
 (0)