From 4d4901838e06d50e1607a4d1d957fc0143fd9ec6 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Fri, 9 Sep 2022 14:55:58 -0700 Subject: [PATCH] qrcode experiment; dont sent when doing antispam on enter --- lib/l10n/intl_cy.arb | 4 +++- lib/l10n/intl_da.arb | 4 +++- lib/l10n/intl_de.arb | 4 +++- lib/l10n/intl_el.arb | 4 +++- lib/l10n/intl_en.arb | 4 +++- lib/l10n/intl_es.arb | 4 +++- lib/l10n/intl_fr.arb | 4 +++- lib/l10n/intl_it.arb | 4 +++- lib/l10n/intl_lb.arb | 4 +++- lib/l10n/intl_no.arb | 4 +++- lib/l10n/intl_pl.arb | 4 +++- lib/l10n/intl_pt.arb | 4 +++- lib/l10n/intl_ro.arb | 4 +++- lib/l10n/intl_ru.arb | 4 +++- lib/settings.dart | 1 + lib/views/contactsview.dart | 21 ++++++++++++++++++--- lib/views/globalsettingsview.dart | 18 ++++++++++++++++++ lib/views/messageview.dart | 4 +++- 18 files changed, 82 insertions(+), 18 deletions(-) diff --git a/lib/l10n/intl_cy.arb b/lib/l10n/intl_cy.arb index b3c6a4d0..63f903f3 100644 --- a/lib/l10n/intl_cy.arb +++ b/lib/l10n/intl_cy.arb @@ -1,6 +1,8 @@ { "@@locale": "cy", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 857783a3..72fb2661 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -1,6 +1,8 @@ { "@@locale": "da", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 83ccfa09..fd5f1ce9 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,8 @@ { "@@locale": "de", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index abc79461..5a224ea5 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -1,6 +1,8 @@ { "@@locale": "el", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index e724e679..705f18a7 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1,6 +1,8 @@ { "@@locale": "en", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 831f9365..6f60cf98 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,8 @@ { "@@locale": "es", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "tooltipPinConversation": "Fija la conversación en la parte superior de \"Conversaciones\"", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 6f48f075..2431fe99 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,8 @@ { "@@locale": "fr", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index fdcacec0..30cb866c 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,6 +1,8 @@ { "@@locale": "it", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_lb.arb b/lib/l10n/intl_lb.arb index 79c444af..9ea37138 100644 --- a/lib/l10n/intl_lb.arb +++ b/lib/l10n/intl_lb.arb @@ -1,6 +1,8 @@ { "@@locale": "lb", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_no.arb b/lib/l10n/intl_no.arb index 1eebd14e..ffd05d43 100644 --- a/lib/l10n/intl_no.arb +++ b/lib/l10n/intl_no.arb @@ -1,6 +1,8 @@ { "@@locale": "no", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index a5ee1ed2..2fd714de 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,8 @@ { "@@locale": "pl", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index b14d0033..f10a306b 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,6 +1,8 @@ { "@@locale": "pt", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 4fe2e500..90aa65be 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,6 +1,8 @@ { "@@locale": "ro", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 5a6877ee..38d282b6 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,8 @@ { "@@locale": "ru", - "@@last_modified": "2022-09-09T22:56:43+02:00", + "@@last_modified": "2022-09-09T23:36:56+02:00", + "experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes", + "enableExperimentQRCode": "QR Codes", "shareMenuQRCode": "Show QR Code", "shareProfileMenuTooltop": "Share profile via...", "acquiredTicketsFromServer": "Antispam Challenge Complete", diff --git a/lib/settings.dart b/lib/settings.dart index 986cce4f..fee77c72 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -15,6 +15,7 @@ const FileSharingExperiment = "filesharing"; const ImagePreviewsExperiment = "filesharing-images"; const ClickableLinksExperiment = "clickable-links"; const FormattingExperiment = "message-formatting"; +const QRCodeExperiment = "qrcode-support"; enum DualpaneMode { Single, diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index 06283f36..19acccde 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -166,7 +166,8 @@ class _ContactsViewState extends State { actions.add(Tooltip(message: AppLocalizations.of(context)!.blockUnknownConnectionsEnabledDescription, child: Icon(CwtchIcons.block_unknown))); } - actions.add(PopupMenuButton( + if (Provider.of(context, listen: false).isExperimentEnabled(QRCodeExperiment)) { + actions.add(PopupMenuButton( icon: Icon(CwtchIcons.address_copy_2), tooltip: AppLocalizations.of(context)!.shareProfileMenuTooltop, splashRadius: Material.defaultSplashRadius / 2, @@ -196,8 +197,22 @@ class _ContactsViewState extends State { value: ShareMenu.qrcode, child: Text(AppLocalizations.of(context)!.shareMenuQRCode), ), - ], - )); + ], + )); + } else { + actions.add(IconButton( + icon: Icon(CwtchIcons.address_copy_2), + tooltip: AppLocalizations.of(context)!.copyAddress, + splashRadius: Material.defaultSplashRadius / 2, + onPressed: () { + Clipboard.setData(new ClipboardData(text: Provider + .of(context, listen: false) + .onion)); + final snackBar = SnackBar(content: Text(AppLocalizations.of(context)!.copiedToClipboardNotification)); + ScaffoldMessenger.of(context).showSnackBar(snackBar); + })); + } + // Manage known Servers if (Provider.of(context, listen: false).isExperimentEnabled(TapirGroupsExperiment) || Provider.of(context, listen: false).isExperimentEnabled(ServerManagementExperiment)) { diff --git a/lib/views/globalsettingsview.dart b/lib/views/globalsettingsview.dart index 6a0f353f..81366b01 100644 --- a/lib/views/globalsettingsview.dart +++ b/lib/views/globalsettingsview.dart @@ -468,6 +468,24 @@ class _GlobalSettingsViewState extends State { inactiveTrackColor: settings.theme.defaultButtonDisabledColor, secondary: Icon(Icons.link, color: settings.current().mainTextColor), )), + Visibility( + visible: settings.experimentsEnabled, + child: SwitchListTile( + title: Text(AppLocalizations.of(context)!.enableExperimentQRCode, style: TextStyle(color: settings.current().mainTextColor)), + subtitle: Text(AppLocalizations.of(context)!.experimentQRCodeDescription), + value: settings.isExperimentEnabled(QRCodeExperiment), + onChanged: (bool value) { + if (value) { + settings.enableExperiment(QRCodeExperiment); + } else { + settings.disableExperiment(QRCodeExperiment); + } + saveSettings(context); + }, + activeTrackColor: settings.theme.defaultButtonActiveColor, + inactiveTrackColor: settings.theme.defaultButtonDisabledColor, + secondary: Icon(Icons.qr_code, color: settings.current().mainTextColor), + )), AboutListTile( icon: appIcon, applicationIcon: Padding(padding: EdgeInsets.all(5), child: Icon(CwtchIcons.cwtch_knott)), diff --git a/lib/views/messageview.dart b/lib/views/messageview.dart index 8ec9b0e4..ef65c2dd 100644 --- a/lib/views/messageview.dart +++ b/lib/views/messageview.dart @@ -294,10 +294,12 @@ class _MessageViewState extends State { // Do this after we trim to preserve enter-behaviour... bool isOffline = Provider.of(context, listen: false).isOnline() == false; - if (isOffline) { + bool performingAntiSpam = Provider.of(context).antispamTickets == 0; + if (isOffline || performingAntiSpam) { return; } + var isGroup = Provider.of(context, listen: false).contactList.getContact(Provider.of(context, listen: false).selectedConversation!)!.isGroup; // peers and groups currently have different length constraints (servers can store less)...