diff --git a/src/app/global/feature_flags.nim b/src/app/global/feature_flags.nim index 1f38995487f..f97ad33f9e6 100644 --- a/src/app/global/feature_flags.nim +++ b/src/app/global/feature_flags.nim @@ -23,7 +23,7 @@ const DEFAULT_FLAG_SIMPLE_SEND_ENABLED = true const DEFAULT_FLAG_MARKET_ENABLED = true const DEFAULT_FLAG_HOMEPAGE_ENABLED = false const DEFAULT_FLAG_LOCAL_BACKUP_ENABLED = true -const DEFAULT_FLAG_PRIVACY_MODE_FEATURE_ENABLED = false +const DEFAULT_FLAG_PRIVACY_MODE_FEATURE_ENABLED = true # Compile time feature flags const DEFAULT_FLAG_DAPPS_ENABLED = true diff --git a/storybook/pages/StatusNavBarTabButtonPage.qml b/storybook/pages/StatusNavBarTabButtonPage.qml index eda7d0b7bb4..71e54860c6c 100644 --- a/storybook/pages/StatusNavBarTabButtonPage.qml +++ b/storybook/pages/StatusNavBarTabButtonPage.qml @@ -23,7 +23,7 @@ SplitView { SplitView.fillWidth: true SplitView.fillHeight: true - color: thirdpartyServicesCtrl.checked ? Theme.palette.statusAppNavBar.backgroundColor: Theme.palette.privacyModeColors.navBarColor + color: thirdpartyServicesCtrl.checked ? Theme.palette.statusAppNavBar.backgroundColor: Theme.palette.privacyColors.primary Column { id: column diff --git a/ui/StatusQ/include/StatusQ/themepalette.h b/ui/StatusQ/include/StatusQ/themepalette.h index 250a64cd08c..bed63b7aebd 100644 --- a/ui/StatusQ/include/StatusQ/themepalette.h +++ b/ui/StatusQ/include/StatusQ/themepalette.h @@ -148,23 +148,15 @@ class CustomisationColors { camel, magenta, yinYang, purple2; }; -class PrivacyModeColors { - Q_GADGET - Q_PROPERTY(QColor navBarColor MEMBER navBarColor CONSTANT) - Q_PROPERTY(QColor navButtonColor MEMBER navButtonColor CONSTANT) - Q_PROPERTY(QColor navButtonHighlightedColor MEMBER navButtonHighlightedColor CONSTANT) -public: - QColor navBarColor, navButtonColor, navButtonHighlightedColor; -}; - class PrivacyColors { Q_GADGET Q_PROPERTY(QColor primary MEMBER primary CONSTANT) Q_PROPERTY(QColor secondary MEMBER secondary CONSTANT) Q_PROPERTY(QColor tertiary MEMBER tertiary CONSTANT) Q_PROPERTY(QColor tertiaryOpaque MEMBER tertiaryOpaque CONSTANT) + Q_PROPERTY(QColor iconColor MEMBER iconColor CONSTANT) public: - QColor primary, secondary, tertiary, tertiaryOpaque; + QColor primary, secondary, tertiary, tertiaryOpaque, iconColor; }; // Main ThemePalette class @@ -288,7 +280,7 @@ class ThemePalette : public QObject { Q_PROPERTY(StatusSelect statusSelect MEMBER statusSelect CONSTANT) Q_PROPERTY(StatusMessage statusMessage MEMBER statusMessage CONSTANT) Q_PROPERTY(CustomisationColors customisationColors MEMBER customisationColors CONSTANT) - Q_PROPERTY(PrivacyModeColors privacyModeColors MEMBER privacyModeColors CONSTANT) + Q_PROPERTY(PrivacyColors privacyColors MEMBER privacyColors CONSTANT) public: explicit ThemePalette(QObject* parent = nullptr); @@ -346,7 +338,6 @@ class ThemePalette : public QObject { StatusSelect statusSelect; StatusMessage statusMessage; CustomisationColors customisationColors; - PrivacyModeColors privacyModeColors; PrivacyColors privacyColors; }; diff --git a/ui/StatusQ/src/StatusQ/Controls/StatusNavBarTabButton.qml b/ui/StatusQ/src/StatusQ/Controls/StatusNavBarTabButton.qml index 1b89f91042c..dace8a6f132 100644 --- a/ui/StatusQ/src/StatusQ/Controls/StatusNavBarTabButton.qml +++ b/ui/StatusQ/src/StatusQ/Controls/StatusNavBarTabButton.qml @@ -18,10 +18,10 @@ StatusIconTabButton { identicon.asset.color: (statusNavBarTabButton.hovered || highlighted || statusNavBarTabButton.checked) ? statusNavBarTabButton.thirdpartyServicesEnabled ? Theme.palette.primaryColor1 : - Theme.palette.privacyModeColors.navButtonHighlightedColor : + Theme.palette.privacyColors.tertiary : statusNavBarTabButton.thirdpartyServicesEnabled ? Theme.palette.baseColor1 : - Theme.palette.privacyModeColors.navButtonColor + Theme.palette.privacyColors.iconColor StatusToolTip { id: statusTooltip diff --git a/ui/StatusQ/src/StatusQ/Layout/StatusAppNavBar.qml b/ui/StatusQ/src/StatusQ/Layout/StatusAppNavBar.qml index 73328c5227b..761bc80f10f 100644 --- a/ui/StatusQ/src/StatusQ/Layout/StatusAppNavBar.qml +++ b/ui/StatusQ/src/StatusQ/Layout/StatusAppNavBar.qml @@ -30,7 +30,7 @@ Rectangle { implicitWidth: 78 color: root.thirdpartyServicesEnabled ? Theme.palette.statusAppNavBar.backgroundColor : - Theme.palette.privacyModeColors.navBarColor + Theme.palette.privacyColors.primary QtObject { id: d diff --git a/ui/StatusQ/src/assets/png/browser/placeholders/browser-dark.png b/ui/StatusQ/src/assets/png/browser/placeholders/browser-dark.png index cff6ed76fed..9ef774be10a 100644 Binary files a/ui/StatusQ/src/assets/png/browser/placeholders/browser-dark.png and b/ui/StatusQ/src/assets/png/browser/placeholders/browser-dark.png differ diff --git a/ui/StatusQ/src/assets/png/browser/placeholders/browser-light.png b/ui/StatusQ/src/assets/png/browser/placeholders/browser-light.png index ba425a21f1e..19617c7fc44 100644 Binary files a/ui/StatusQ/src/assets/png/browser/placeholders/browser-light.png and b/ui/StatusQ/src/assets/png/browser/placeholders/browser-light.png differ diff --git a/ui/StatusQ/src/themepalette.cpp b/ui/StatusQ/src/themepalette.cpp index be6f1408cb4..aa22fa9ac9d 100644 --- a/ui/StatusQ/src/themepalette.cpp +++ b/ui/StatusQ/src/themepalette.cpp @@ -212,10 +212,12 @@ std::unique_ptr createDarkThemePalette(QObject* parent) t->statusMessage.emojiReactionBackgroundHovered = t->primaryColor3; t->statusMessage.emojiReactionBorderHovered = t->primaryColor2; - // Privacy mode colors - t->privacyModeColors.navBarColor = QColor(0x5A, 0x33, 0xCA); // #5A33CA - t->privacyModeColors.navButtonColor = alpha(StatusColors::white, 0.4); - t->privacyModeColors.navButtonHighlightedColor = StatusColors::white; + // Privacy colors + t->privacyColors.primary = QColor(0x34, 0x1D, 0x65); + t->privacyColors.secondary = QColor(0x5B, 0x43, 0x8E); + t->privacyColors.tertiary = StatusColors::white; + t->privacyColors.tertiaryOpaque = alpha(StatusColors::white, 0.3); + t->privacyColors.iconColor = alpha(StatusColors::white, 0.5); // Customisation colors t->customisationColors.blue = QColor(0x22, 0x3B, 0xC4); // #223BC4 @@ -406,10 +408,12 @@ std::unique_ptr createLightThemePalette(QObject* parent) t->statusMessage.emojiReactionBackgroundHovered = t->primaryColor2; t->statusMessage.emojiReactionBorderHovered = t->primaryColor3; - // Privacy mode colors - t->privacyModeColors.navBarColor = QColor(0x5A, 0x33, 0xCA); // #5A33CA - t->privacyModeColors.navButtonColor = alpha(StatusColors::white, 0.4); - t->privacyModeColors.navButtonHighlightedColor = StatusColors::white; + // Privacy colors + t->privacyColors.primary = QColor(0xBE, 0xBB, 0xF9); + t->privacyColors.secondary = QColor(0xD6, 0xD7, 0xF7); + t->privacyColors.tertiary = QColor(0x20, 0x1C, 0x76); + t->privacyColors.tertiaryOpaque = alpha(QColor(0x20, 0x1C, 0x76), 0.3); + t->privacyColors.iconColor = QColor(0x64, 0x70, 0x84); // Customisation colors t->customisationColors.blue = QColor(0x2A, 0x4A, 0xF5); // #2A4AF5 @@ -461,7 +465,7 @@ void registerThemePaletteType() qmlRegisterUncreatableType("StatusQ.Core.Theme", 1, 0, "StatusSelect", ""); qmlRegisterUncreatableType("StatusQ.Core.Theme", 1, 0, "StatusMessage", ""); qmlRegisterUncreatableType("StatusQ.Core.Theme", 1, 0, "CustomisationColors", ""); - qmlRegisterUncreatableType("StatusQ.Core.Theme", 1, 0, "PrivacyModeColors", ""); + qmlRegisterUncreatableType("StatusQ.Core.Theme", 1, 0, "PrivacyColors", ""); qmlRegisterUncreatableType("StatusQ.Core.Theme", 1, 0, "ThemePalette", ""); } diff --git a/ui/app/mainui/AppMain.qml b/ui/app/mainui/AppMain.qml index 2d2898e9ef2..986c9fbd6a3 100644 --- a/ui/app/mainui/AppMain.qml +++ b/ui/app/mainui/AppMain.qml @@ -831,7 +831,9 @@ Item { id: d readonly property int activeSectionType: appMain.rootStore.activeSectionType - readonly property bool isBrowserEnabled: appMain.featureFlagsStore.browserEnabled && localAccountSensitiveSettings.isBrowserEnabled + readonly property bool isBrowserEnabled: appMain.featureFlagsStore.browserEnabled && + localAccountSensitiveSettings.isBrowserEnabled && + appMain.rootStore.thirdpartyServicesEnabled function openHomePage() { appMain.rootStore.setActiveSectionBySectionType(Constants.appSection.homePage) @@ -854,7 +856,8 @@ Item { } function openLinkInBrowser(link: string) { - if (!appMain.rootStore.openLinksInStatus || !d.isBrowserEnabled) { + if (!appMain.rootStore.openLinksInStatus || + !d.isBrowserEnabled) { Qt.openUrlExternally(link) return } diff --git a/ui/i18n/qml_base_en.ts b/ui/i18n/qml_base_en.ts index 4349d87bc8d..092060b8da8 100644 --- a/ui/i18n/qml_base_en.ts +++ b/ui/i18n/qml_base_en.ts @@ -17342,6 +17342,18 @@ access to your webcam Enable third-party services + + Browser (browse web-pages, connect dApps) + + + + Sync with NTP (Network Time Protocol) servers + + + + Missed messages if your device time isn’t synced to network time + + ThumbnailsDropdownContent diff --git a/ui/i18n/qml_base_lokalise_en.ts b/ui/i18n/qml_base_lokalise_en.ts index b79f4ca87bb..b6c1f71e2ab 100644 --- a/ui/i18n/qml_base_lokalise_en.ts +++ b/ui/i18n/qml_base_lokalise_en.ts @@ -21096,6 +21096,21 @@ ThirdpartyServicesPopup Enable third-party services + + Browser (browse web-pages, connect dApps) + ThirdpartyServicesPopup + Browser (browse web-pages, connect dApps) + + + Sync with NTP (Network Time Protocol) servers + ThirdpartyServicesPopup + Sync with NTP (Network Time Protocol) servers + + + Missed messages if your device time isn’t synced to network time + ThirdpartyServicesPopup + Missed messages if your device time isn’t synced to network time + ThumbnailsDropdownContent diff --git a/ui/i18n/qml_cs.ts b/ui/i18n/qml_cs.ts index a2124269a70..144066f9fe9 100644 --- a/ui/i18n/qml_cs.ts +++ b/ui/i18n/qml_cs.ts @@ -17463,6 +17463,18 @@ přístup k vaší webkameře Enable third-party services Povolit služby třetích stran + + Browser (browse web-pages, connect dApps) + + + + Sync with NTP (Network Time Protocol) servers + + + + Missed messages if your device time isn’t synced to network time + + ThumbnailsDropdownContent diff --git a/ui/i18n/qml_es.ts b/ui/i18n/qml_es.ts index d01143e87db..6539f2caf5d 100644 --- a/ui/i18n/qml_es.ts +++ b/ui/i18n/qml_es.ts @@ -17367,6 +17367,18 @@ acceso a tu cámara web Close Cerrar + + Browser (browse web-pages, connect dApps) + + + + Sync with NTP (Network Time Protocol) servers + + + + Missed messages if your device time isn’t synced to network time + + ThumbnailsDropdownContent diff --git a/ui/i18n/qml_ko.ts b/ui/i18n/qml_ko.ts index 367749fd143..731094cf420 100644 --- a/ui/i18n/qml_ko.ts +++ b/ui/i18n/qml_ko.ts @@ -17311,6 +17311,18 @@ access to your webcam Enable services and restart the app 서비스 활성화 및 앱 재시작 + + Browser (browse web-pages, connect dApps) + + + + Sync with NTP (Network Time Protocol) servers + + + + Missed messages if your device time isn’t synced to network time + + ThumbnailsDropdownContent diff --git a/ui/imports/shared/panels/PrivacyWallCarousel.qml b/ui/imports/shared/panels/PrivacyWallCarousel.qml index 204e091f1c7..d7d9cde20f9 100644 --- a/ui/imports/shared/panels/PrivacyWallCarousel.qml +++ b/ui/imports/shared/panels/PrivacyWallCarousel.qml @@ -31,7 +31,7 @@ Control { function getImagePath(currentIndex) { const imageName = root.model.get(currentIndex).image const platformPostfix = isSmallPortraitScreen ? "-small": "" - const imagePath = "%1-%2%3".arg(imageName).arg(Theme.palette.name).arg(platformPostfix) + const imagePath = "%1-%2%3".arg(imageName).arg(root.Theme.palette.name).arg(platformPostfix) return Assets.png(imagePath) } } @@ -103,6 +103,7 @@ Control { fillMode: Image.PreserveAspectFit asynchronous: true + source: d.getImagePath(pageIndicator.currentIndex) // cross-fade sequence SequentialAnimation { @@ -124,8 +125,12 @@ Control { } Component.onCompleted: { - placeholderImage.source = d.getImagePath(pageIndicator.currentIndex) - initialized = true + /* In case there is only one image in the list no animation + handling needed and default boinding will do the job */ + if(pageIndicator.count > 1) { + placeholderImage.source = d.getImagePath(pageIndicator.currentIndex) + initialized = true + } } } @@ -153,8 +158,8 @@ Control { Layout.alignment: Qt.AlignHCenter type: StatusBaseButton.Type.Primary - normalColor: Theme.palette.privacyModeColors.navBarColor - textColor: StatusColors.white + normalColor: Theme.palette.privacyColors.primary + textColor: Theme.palette.privacyColors.tertiary text: qsTr("Enable third-party services") diff --git a/ui/imports/shared/popups/ThirdpartyServicesPopup.qml b/ui/imports/shared/popups/ThirdpartyServicesPopup.qml index 5cf8c1f7781..f414cfc92d0 100644 --- a/ui/imports/shared/popups/ThirdpartyServicesPopup.qml +++ b/ui/imports/shared/popups/ThirdpartyServicesPopup.qml @@ -67,8 +67,10 @@ StatusDialog { model: ListModel { ListElement { text: qsTr("Wallet (Swap, Send, Token data, etc.)") } ListElement { text: qsTr("Market (Token data, prices, and news, etc.)") } + ListElement { text: qsTr("Browser (browse web-pages, connect dApps)") } ListElement { text: qsTr("Token-gated communities and admin tools") } ListElement { text: qsTr("Status news, etc.") } + ListElement { text: qsTr("Sync with NTP (Network Time Protocol) servers") } } } @@ -83,6 +85,7 @@ StatusDialog { model: ListModel { ListElement { text: qsTr("Missing or invalid data") } ListElement { text: qsTr("Errors and unexpected behavior") } + ListElement { text: qsTr("Missed messages if your device time isn’t synced to network time") } } } } @@ -124,8 +127,8 @@ StatusDialog { rightButtons: ObjectModel { StatusButton { type: StatusBaseButton.Type.Primary - normalColor: Theme.palette.privacyModeColors.navBarColor - textColor: StatusColors.white + normalColor: Theme.palette.privacyColors.primary + textColor: Theme.palette.privacyColors.tertiary text: { if(root.thirdPartyServicesEnabled) { if(root.isOnboardingFlow) { diff --git a/vendor/status-go b/vendor/status-go index 0fc843266f7..61a49352363 160000 --- a/vendor/status-go +++ b/vendor/status-go @@ -1 +1 @@ -Subproject commit 0fc843266f74c4ce90c7230d89bdd8ef75b0a2f1 +Subproject commit 61a4935236300ce3ace6426dac855fb03c2a70a4