From 7758c3faee350861bd6ce453172699f31ce4b654 Mon Sep 17 00:00:00 2001 From: Frank Rotermund Date: Mon, 18 Jul 2022 14:30:28 +0000 Subject: [PATCH] Feature/3323 bum build --- Config/AppIdentifiers.xcconfig | 2 +- Config/AppVersion.xcconfig | 4 +- .../BuM-Beta/AppIdentifiers-bum-beta.xcconfig | 39 ++ Config/BuM-Beta/BuildSettings.swift | 572 ++++++++++++++++++ Config/BuM/AppIdentifiers-bum.xcconfig | 39 ++ Config/copyBetaConfig.sh | 9 + Config/copyReleaseConfig.sh | 9 + Gemfile.lock | 64 +- Podfile | 22 + Riot/Generated/Strings.swift | 38 +- Riot/target-bum-beta.yml | 111 ++++ Riot/target-messenger.yml | 3 + RiotNSE/RiotNSE.entitlements | 2 - project.yml | 1 + 14 files changed, 873 insertions(+), 42 deletions(-) create mode 100644 Config/BuM-Beta/AppIdentifiers-bum-beta.xcconfig create mode 100644 Config/BuM-Beta/BuildSettings.swift create mode 100644 Config/BuM/AppIdentifiers-bum.xcconfig create mode 100755 Config/copyBetaConfig.sh create mode 100755 Config/copyReleaseConfig.sh create mode 100644 Riot/target-bum-beta.yml diff --git a/Config/AppIdentifiers.xcconfig b/Config/AppIdentifiers.xcconfig index 4dab6a522..51a353aee 100644 --- a/Config/AppIdentifiers.xcconfig +++ b/Config/AppIdentifiers.xcconfig @@ -22,7 +22,7 @@ APPLICATION_GROUP_IDENTIFIER = group.de.messenger APPLICATION_SCHEME = element // Team -DEVELOPMENT_TEAM = 7J4U792NQT +DEVELOPMENT_TEAM = Q111Q11QQ1 // Provisioning profiles diff --git a/Config/AppVersion.xcconfig b/Config/AppVersion.xcconfig index a56dabe63..5e3970da6 100644 --- a/Config/AppVersion.xcconfig +++ b/Config/AppVersion.xcconfig @@ -16,5 +16,5 @@ // // Version -MARKETING_VERSION = 1.22.0 -CURRENT_PROJECT_VERSION = 20220309075454 +MARKETING_VERSION = 1.23.0 +CURRENT_PROJECT_VERSION = 20220714163152 diff --git a/Config/BuM-Beta/AppIdentifiers-bum-beta.xcconfig b/Config/BuM-Beta/AppIdentifiers-bum-beta.xcconfig new file mode 100644 index 000000000..db5ab927c --- /dev/null +++ b/Config/BuM-Beta/AppIdentifiers-bum-beta.xcconfig @@ -0,0 +1,39 @@ +// +// Copyright 2021 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +// App identity +BUNDLE_DISPLAY_NAME = BuM-Beta +BASE_BUNDLE_IDENTIFIER = de.bwi.messenger-beta +APPLICATION_GROUP_IDENTIFIER = group.de.messenger-beta +APPLICATION_SCHEME = element + +// Team +DEVELOPMENT_TEAM = Q111Q11QQ1 + + +// Provisioning profiles +RIOT_PROVISIONING_PROFILE_SPECIFIER = Vector App Store +RIOT_PROVISIONING_PROFILE = 7579fa6f-9887-415e-90fc-2c7acd8812e6 + +NSE_PROVISIONING_PROFILE_SPECIFIER = "Vector NSE: App Store" +NSE_PROVISIONING_PROFILE = e73107b2-1bfe-4615-be3e-39fd4dcb2af0 + +SHARE_EXTENSION_PROVISIONING_PROFILE_SPECIFIER = "Vector Share Extension: App Store" +SHARE_EXTENSION_PROVISIONING_PROFILE = 8c797ca0-0440-49bd-be8d-11d761152995 + +SIRI_INTENTS_PROVISIONING_PROFILE_SPECIFIER = "Vector Siri Intents: App Store" +SIRI_INTENTS_PROVISIONING_PROFILE = 1690e81a-5ad3-4d99-b578-02693579be71 diff --git a/Config/BuM-Beta/BuildSettings.swift b/Config/BuM-Beta/BuildSettings.swift new file mode 100644 index 000000000..2e2581bba --- /dev/null +++ b/Config/BuM-Beta/BuildSettings.swift @@ -0,0 +1,572 @@ +// +// Copyright 2020 Vector Creations Ltd +// Copyright (c) 2021 BWI GmbH +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import Foundation + +#if LOCATION +import Keys +#endif + +/// BuildSettings provides settings computed at build time. +/// In future, it may be automatically generated from xcconfig files +@objcMembers +final class BuildSettings: NSObject { + + // MARK: - Bundle Settings + static var applicationGroupIdentifier: String { + guard let applicationGroupIdentifier = Bundle.app.object(forInfoDictionaryKey: "applicationGroupIdentifier") as? String else { + fatalError("applicationGroupIdentifier should be defined") + } + return applicationGroupIdentifier + } + + static var baseBundleIdentifier: String { + guard let baseBundleIdentifier = Bundle.app.object(forInfoDictionaryKey: "baseBundleIdentifier") as? String else { + fatalError("baseBundleIdentifier should be defined") + } + return baseBundleIdentifier + } + + static var keychainAccessGroup: String { + guard let keychainAccessGroup = Bundle.app.object(forInfoDictionaryKey: "keychainAccessGroup") as? String else { + fatalError("keychainAccessGroup should be defined") + } + return keychainAccessGroup + } + + static var applicationURLScheme: String? { + guard let urlTypes = Bundle.app.object(forInfoDictionaryKey: "CFBundleURLTypes") as? [AnyObject], + let urlTypeDictionary = urlTypes.first as? [String: AnyObject], + let urlSchemes = urlTypeDictionary["CFBundleURLSchemes"] as? [AnyObject], + let externalURLScheme = urlSchemes.first as? String else { + return nil + } + + return externalURLScheme + } + + static var pushKitAppIdProd: String { + return baseBundleIdentifier + ".ios.voip.prod" + } + + static var pushKitAppIdDev: String { + return baseBundleIdentifier + ".ios.voip.dev" + } + + static var pusherAppIdProd: String { + return baseBundleIdentifier + ".ios.prod" + } + + static var pusherAppIdDev: String { + return baseBundleIdentifier + ".ios.dev" + } + + static var pushKitAppId: String { + #if DEBUG + return pushKitAppIdDev + #else + return pushKitAppIdProd + #endif + } + + static var pusherAppId: String { + #if DEBUG + return pusherAppIdDev + #else + return pusherAppIdProd + #endif + } + + // Element-Web instance for the app + static let applicationWebAppUrlString = "" + + // MARK: - Localization + + /// Whether to allow the app to use a right to left layout or force left to right for all languages + static let disableRightToLeftLayout = true + + + // MARK: - Server configuration + + // Default servers proposed on the authentication screen + static let serverConfigDefaultHomeserverUrlString = "" + static let serverConfigDefaultIdentityServerUrlString = "" + + static let serverConfigPreSelections = ["":""] + + static let serverConfigSygnalAPIUrlString = "" + + // MARK: - Legal URLs + + // Note: Set empty strings to hide the related entry in application settings + static let applicationCopyrightUrlString = "https://element.io/copyright" + static let applicationPrivacyPolicyUrlString = "" + static let applicationTermsConditionsUrlString = "https://element.io/terms-of-service" + static let applicationHelpUrlString = "https://element.io/help" + + // MARk: - Matrix permalinks + // Paths for URLs that will considered as Matrix permalinks. Those permalinks are opened within the app + static let permalinkSupportedHosts: [String: [String]] = [:] + + // For use in clients that use a custom base url for permalinks rather than matrix.to. + // This baseURL is used to generate permalinks within the app (E.g. timeline message permalinks). + // Optional String that when set is used as permalink base, when nil matrix.to format is used. + // Example value would be "https://www.example.com", note there is no trailing '/'. + static let clientPermalinkBaseUrl: String? = "" + + // MARK: - VoIP + static var allowVoIPUsage: Bool { + #if canImport(JitsiMeetSDK) + return false + #else + return false + #endif + } + + static let stunServerFallbackUrlString: String? = "" + + // MARK: - Public rooms Directory + // List of homeservers for the public rooms directory + static let publicRoomsDirectoryServers = [ + "matrix.org", + "gitter.im" + ] + + // MARK: - Rooms Screen + static let roomsAllowToJoinPublicRooms: Bool = true + + // MARK: - Analytics + + // $$$ + static let analyticsServerUrl = URL(string: "") + static let analyticsAppId = "0" + + /// BWI: set host and key to nil to disable PostHog tracking + static let analyticsHost: String? = nil + static let analyticsKey: String? = nil + static let analyticsTermsURL = URL(string: "https://element.io/cookie-policy")! + static let bwiPresentAnalyticsPrompt = false + + static let bwiAnalyticsServerUrlString = "" + static let bwiAnalyticsAppId = "1" + + /// A type that represents how to set up the analytics module in the app. + /// + /// **Note:** Analytics are disabled by default for forks. + /// If you are maintaining a fork, set custom configurations. + struct AnalyticsConfiguration { + /// Whether or not analytics should be enabled. + let isEnabled: Bool + /// The host to use for PostHog analytics. + let host: String + /// The public key for submitting analytics. + let apiKey: String + /// The URL to open with more information about analytics terms. + let termsURL: URL + } + + /// The configuration to use for analytics during development. Set `isEnabled` to false to disable analytics in debug builds. + static let analyticsConfiguration = AnalyticsConfiguration(isEnabled: false, + host: "", + apiKey: "", + termsURL: URL(string: "https://element.io/cookie-policy")!) + + // MARK: - Bug report + static let bugReportEndpointUrlString = "" + // Use the name allocated by the bug report server + static let bugReportApplicationId = "riot-ios" + static let bugReportUISIId = "element-auto-uisi" + + // MARK: - Integrations + static let integrationsUiUrlString = "https://scalar.vector.im/" + static let integrationsRestApiUrlString = "https://scalar.vector.im/api" + // Widgets in those paths require a scalar token + static let integrationsScalarWidgetsPaths = [""] + // Jitsi server used outside integrations to create conference calls from the call button in the timeline + static let jitsiServerUrl: URL = URL(string: "https://enter.jitsi.url")! + + // MARK: - Features + + /// Max allowed time to continue using the app without prompting PIN + static let pinCodeGraceTimeInSeconds: TimeInterval = 180 + + + static let allowSendingStickers: Bool = false + + static let allowLocalContactsAccess: Bool = false + + static let allowInviteExernalUsers: Bool = true + + static let enableSideMenu: Bool = false + static let sideMenuShowInviteFriends: Bool = true + + /// Whether to read the `io.element.functional_members` state event and exclude any service members when computing a room's name and avatar. + static let supportFunctionalMembers: Bool = true + + // MARK: - Feature Specifics + + /// Not allowed pin codes. User won't be able to select one of the pin in the list. + static let notAllowedPINs: [String] = [ + "1234", + "1111", + "0000", + "1212", + "7777", + "1004", + "2000", + "4444", + "2222", + "6969", + "9999", + "3333", + "5555", + "6666", + "1122", + "1313", + "8888", + "4321", + "2001", + "1010", + "2580", + "4711", + "0815", + "0852" + ] + + /// Maximum number of allowed pin failures when unlocking, before force logging out the user. Defaults to `3` + static let maxAllowedNumberOfPinFailures: Int = 3 + + /// Maximum number of allowed biometrics failures when unlocking, before fallbacking the user to the pin if set or logging out the user. Defaults to `5` + static let maxAllowedNumberOfBiometricsFailures: Int = 5 + + static let allowLocalContactPresence: Bool = false + + /// Indicates should the app log out the user when number of PIN failures reaches `maxAllowedNumberOfPinFailures`. Defaults to `false` + static let logOutUserWhenPINFailuresExceeded: Bool = true + + /// Indicates should the app log out the user when number of biometrics failures reaches `maxAllowedNumberOfBiometricsFailures`. Defaults to `false` + static let logOutUserWhenBiometricsFailuresExceeded: Bool = true + + + /// If force is enabled the dialog for asking if reseting the key backup is not shown.. already asked before in mandatory verfication + static let forceResetBackupIfLost: Bool = true + + /// if skip is enabled the key backup dialogs are passed through + static let skipKeyBackupStep: Bool = true + + static let showNotificationsV2: Bool = true + + // MARK: - Main Tabs + + static let homeScreenShowHomeTab: Bool = false + static let homeScreenShowFavouritesTab: Bool = true + static let homeScreenShowPeopleTab: Bool = true + static let homeScreenShowRoomsTab: Bool = true + static let homeScreenShowCommunitiesTab: Bool = false + + // MARK: - General Settings Screen + + static let settingsScreenShowUserFirstName: Bool = false + static let settingsScreenShowUserSurname: Bool = false + static let settingsScreenAllowAddingLinkedEmails: Bool = false + static let settingsScreenAllowAddingPhoneNumbers: Bool = false + static let settingsScreenAllowAddingEmailThreepids: Bool = false + static let settingsScreenAllowAddingPhoneThreepids: Bool = false + static let settingsScreenShowThreepidExplanatory: Bool = false + static let settingsScreenShowDiscoverySettings: Bool = false + static let settingsScreenAllowIdentityServerConfig: Bool = false + static let settingsScreenShowConfirmMediaSize: Bool = false + static let settingsScreenShowAdvancedSettings: Bool = false + static let settingsScreenShowLabSettings: Bool = false + static let settingsScreenAllowChangingRageshakeSettings: Bool = false + static let settingsScreenAllowChangingCrashUsageDataSettings: Bool = false + static let settingsScreenAllowBugReportingManually: Bool = false + static let settingsScreenAllowDeactivatingAccount: Bool = false + static let settingsScreenEnableDecodedContentAndGlobalSettings: Bool = false + static let settingsScreenShowChangePassword:Bool = true + + static let settingsScreenShowLinkPreviews:Bool = false + static let settingsScreenShowInviteFriends:Bool = false + static let settingsScreenShowSettings:Bool = true + static let settingsScreenShowFeedback:Bool = false + static let settingsScreenShowHelp:Bool = false + + static let settingsScreenShowEnableStunServerFallback: Bool = true + static let settingsScreenShowNotificationDecodedContentOption: Bool = false + static let settingsScreenShowSystemSettingsOption: Bool = false + static let settingsScreenShowNsfwRoomsOption: Bool = false + static let settingsScreenShowTACSetting: Bool = false + static let settingsScreenShowSupportSetting: Bool = true + static let settingsSecurityScreenShowSessions:Bool = true + static let settingsSecurityScreenShowSetupBackup:Bool = true + static let settingsSecurityScreenShowRestoreBackup:Bool = true + static let settingsSecurityScreenShowDeleteBackup:Bool = true + /// A setting to enable the presence configuration settings section. + static let settingsScreenPresenceAllowConfiguration: Bool = false + + static let settingsSecurityScreenShowCryptographyInfo:Bool = false + static let settingsSecurityScreenShowCryptographyExport:Bool = false + static let settingsSecurityScreenShowAdvancedUnverifiedDevices:Bool = false + + // MARK: - Notification Settings + static let settingsNotificationsBWIDefaultSet:Bool = true + static let settingsNotificationsShowDefault:Bool = true + static let settingsNotificationsShowMentions:Bool = false + static let settingsNotificationsShowAdvanced:Bool = false + + // MARK: - Timeline settings + static let roomInputToolbarCompressionMode: MediaCompressionMode = .none + + enum MediaCompressionMode { + case prompt, small, medium, large, none + } + + // MARK: - Room Creation Screen + + static let roomCreationScreenAllowEncryptionConfiguration: Bool = false + static let roomCreationScreenRoomIsEncrypted: Bool = true + static let roomCreationScreenAllowRoomTypeConfiguration: Bool = true + static let roomCreationScreenRoomIsPublic: Bool = false + + // MARK: - Room Screen + + static let roomScreenAllowVoIPForDirectRoom: Bool = true + static let roomScreenAllowVoIPForNonDirectRoom: Bool = true + static let roomScreenAllowCameraAction: Bool = true + static let roomScreenAllowMediaLibraryAction: Bool = true + static let roomScreenAllowStickerAction: Bool = false + static let roomScreenAllowFilesAction: Bool = true + + // Timeline style + static let roomScreenAllowTimelineStyleConfiguration: Bool = true + static let roomScreenTimelineDefaultStyleIdentifier: RoomTimelineStyleIdentifier = .plain + static var isRoomScreenEnableMessageBubblesByDefault: Bool { + return self.roomScreenTimelineDefaultStyleIdentifier == .bubble + } + static let roomScreenUseOnlyLatestUserAvatarAndName: Bool = false + + /// Allow split view detail view stacking + static let allowSplitViewDetailsScreenStacking: Bool = true + + // MARK: - Room Contextual Menu + + static let roomContextualMenuShowMoreOptionForMessages: Bool = true + static let roomContextualMenuShowMoreOptionForStates: Bool = true + static let roomContextualMenuShowReportContentOption: Bool = true + static let roomContextualMenuShowEncryptionOption: Bool = false + + // MARK: - Room Info Screen + + static let roomInfoScreenShowIntegrations: Bool = false + + // MARK: - Room Settings Screen + + static let roomSettingsScreenShowLowPriorityOption: Bool = false + static let roomSettingsScreenShowDirectChatOption: Bool = false + static let roomSettingsScreenAllowChangingAccessSettings: Bool = false + static let roomSettingsScreenAllowChangingHistorySettings: Bool = false + static let roomSettingsScreenShowAddressSettings: Bool = false + static let roomSettingsScreenShowFlairSettings: Bool = false + static let roomSettingsScreenShowAdvancedSettings: Bool = false + + static let roomSettingsScreenShowAccessSettingsBW: Bool = true + static let roomSettingsScreenRemoveLeave: Bool = true + static let roomSettingsScreenShowIntegrations: Bool = false + static let roomSettingsScreenAdvancedShowEncryptToVerifiedOption: Bool = true + + static let roomSettingsScreenShowNotificationsV2: Bool = false + + // MARK: - Room Member Screen + static let roomMemberScreenShowIgnore: Bool = true + + // MARK: - Message + static let messageDetailsAllowShare: Bool = false + static let messageDetailsAllowPermalink: Bool = false + static let messageDetailsAllowViewSource: Bool = false + static let messageDetailsAllowSave: Bool = false + static let messageDetailsAllowCopyMedia: Bool = false + static let messageDetailsAllowPasteMedia: Bool = false + + // MARK: - Notifications + static let decryptNotificationsByDefault: Bool = true + + // MARK: - Authentication Screen + static let authScreenShowRegister = false + static let authScreenShowPhoneNumber = false + static let authScreenShowForgotPassword = false + static let authScreenShowCustomServerOptions = true + static let authScreenShowTestServerOptions = true + + // MARK: - Authentication Options + static let authEnableRefreshTokens = false + + // MARK: - Cross-signing (bwi=true) + static let disableSelfUserVerification = true + + // MARK: - Antivirus scan (bwi=true) + static let enableAntivirusScan = true + + // MARK: - Room Screen + static let enableRoomSearchItem = false + + // MARK: - Matomo Analytics (bwi=false) + static let enableMatomoAnalytics = false + + // MARK: Verification screen (bwi=false) + static let showDetailedVerificationElements : Bool = false + static let showRecoverWithKey : Bool = false + + // MARK: Unified search screen (bwi=false) + static let showUnifiedSearchViewMessagesTab : Bool = false + static let showUnifiedSearchViewFilesTab : Bool = false + + // MARK: - Onboarding + static let onboardingShowAccountPersonalization = false + static let onboardingEnableNewAuthenticationFlow = false + + // MARK: - Secrets Recovery + static let secretsRecoveryAllowReset = true + + // MARK: VoIP support (bwi=false) + static let enableVoIPSupport : Bool = false + // MARK: - UISI Autoreporting + static let cryptoUISIAutoReportingEnabled = false + + // MARK: - Polls + + // MARK: Last message timestamp support (bwi=false) + static let enableLastMessageTimestamp : Bool = false + + // MARK: Room chat alert screen (bwi=false) + static let enableViewEncryptionAction : Bool = false + + // MARK: JavaScript support in WKWebView (bwi=false) + static let enableJSInWebView : Bool = false + + // MARK: Secure pin code description (bwi=false) + static let settingsSettingsSecureShowPinCodeDescription : Bool = false + + // MARK: Invite friends in Direct Chat (bwi=false) + static let directChatShowInviteFriends : Bool = false + + // MARK: Last admin is not allowed to leave the room (bwi=true) + static let lastAdminIsNotAllowedToLeaveRoom : Bool = true + + // MARK: Room Member Details Screen (bwi=true) + static let roomMemberDetailsHideLeaveButton : Bool = true + + // MARK: Room create options (bwi=false) + static let enableShowInRoomDirectory : Bool = false + + // MARK: sticker in composer (bwi=false) + static let enableRoomComposerSticker : Bool = false + + // Mark: Unified Search (bwi=true) + static let unifiedSearchScreenShowPublicDirectory = true + + // MARK: Allows removal of uploaded avatar photos (bwi=true) + static let enableRemoveAvatarImage = true + + // MARK: Add a toggle button to the login screen to make the password visible + static let passwordIndicatorOnLogin : Bool = true + + // MARK: Displays the element base version on the settings screen + static let elementBaseVersion : String = "1.8.18" + + static let showElementBaseVersion : Bool = true + + // MARK: Bypasses the normal forgot password process by presenting the user an information alert + // (requires authScreenShowForgotPassword set to true) + static let forgotPasswordInformationAlert : Bool = true + + // MARK: Promote new feature within a banner below the navigation view + static let showTopBanner : Bool = false + + static let showCustomServerDisplayName : Bool = true + static let customServerDisplayName : String = "" + + // MARK BWI show/hide developer menu + static let bwiShowDeveloperSettings : Bool = true + + // MARK BWI personal notes room + static let bwiPersonalNotesRoom : Bool = true + static let bwiPersonalNotesRoomLeavable : Bool = false + static let bwiResetPersonalNotesAccountData : Bool = false + + // MARK BWI personal state + static let bwiPersonalState : Bool = true + + // MARK BWI personal notes room + static let bwiRollsAndRights : Bool = true + + // MARK: Timeline + static let settingsScreenShowSimpleTimeLineOptions : Bool = false + static let settingsScreenShowTimeStampOption : Bool = true + static let settingsScreenShowDeletedMessagesOption : Bool = false + static let settingsScreenShowNameChangeOption : Bool = false + static let settingsScreenShowChatEffectsOption : Bool = false + static let settingsScreenShowRoomAvatarChangeOption : Bool = false + static let settingsScreenShowUserAvatarChangeOption : Bool = true + static let settingsScreenShowEnterRoomOption : Bool = true + + static let bwiEnableVoiceMessages : Bool = true + + static let bwiLastAdminCanDowngradeHimself : Bool = false + + static let bwiEnableErrorTracking : Bool = false + + static let bwiEnableRegisterInfo : Bool = false + + static let bwiShowHappyBirthdayCampaign: Bool = false + static let bwiHappyBirthdayCampaignIdentifier: String = "one_year_anniversary" + static let bwiDisableSecuritySettingsUntrustedDevices: Bool = true + static let bwiShowMatomoInfoScreen = false + static let bwiShowMatomoSettings = false + static let bwiMatomoTrackingDefaultState = true + static let bwiShowNewFeatures = true + static let bwiSendMessageThreshold = 10.0 + + // MARK: - Polls + + static var pollsEnabled: Bool { + guard #available(iOS 14, *) else { + return false + } + + return true + } + + // MARK: - Location Sharing + + static let tileServerMapURL = "" + static let tileServerMapStyleURL = URL(string: "https://map.tyler.org")! + + static let locationSharingEnabled = false + + static var liveLocationSharingEnabled: Bool { + guard #available(iOS 14, *) else { + return false + } + + guard self.locationSharingEnabled else { + return false + } + + // Do not enable live location sharing atm + return false + } +} diff --git a/Config/BuM/AppIdentifiers-bum.xcconfig b/Config/BuM/AppIdentifiers-bum.xcconfig new file mode 100644 index 000000000..51a353aee --- /dev/null +++ b/Config/BuM/AppIdentifiers-bum.xcconfig @@ -0,0 +1,39 @@ +// +// Copyright 2021 Vector Creations Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +// App identity +BUNDLE_DISPLAY_NAME = BundesMessenger +BASE_BUNDLE_IDENTIFIER = de.bwi.messenger +APPLICATION_GROUP_IDENTIFIER = group.de.messenger +APPLICATION_SCHEME = element + +// Team +DEVELOPMENT_TEAM = Q111Q11QQ1 + + +// Provisioning profiles +RIOT_PROVISIONING_PROFILE_SPECIFIER = Vector App Store +RIOT_PROVISIONING_PROFILE = 7579fa6f-9887-415e-90fc-2c7acd8812e6 + +NSE_PROVISIONING_PROFILE_SPECIFIER = "Vector NSE: App Store" +NSE_PROVISIONING_PROFILE = e73107b2-1bfe-4615-be3e-39fd4dcb2af0 + +SHARE_EXTENSION_PROVISIONING_PROFILE_SPECIFIER = "Vector Share Extension: App Store" +SHARE_EXTENSION_PROVISIONING_PROFILE = 8c797ca0-0440-49bd-be8d-11d761152995 + +SIRI_INTENTS_PROVISIONING_PROFILE_SPECIFIER = "Vector Siri Intents: App Store" +SIRI_INTENTS_PROVISIONING_PROFILE = 1690e81a-5ad3-4d99-b578-02693579be71 diff --git a/Config/copyBetaConfig.sh b/Config/copyBetaConfig.sh new file mode 100755 index 000000000..91c082fd2 --- /dev/null +++ b/Config/copyBetaConfig.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# setConfig.sh +# Riot +# +# Created by Frank Rotermund on 25.03.21. +# Copyright © 2021 matrix.org. All rights reserved. + +cp -vf ../Config/BuM-Beta/AppIdentifiers-bum-beta.xcconfig ../Config/AppIdentifiers.xcconfig diff --git a/Config/copyReleaseConfig.sh b/Config/copyReleaseConfig.sh new file mode 100755 index 000000000..39247086d --- /dev/null +++ b/Config/copyReleaseConfig.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# setConfig.sh +# Riot +# +# Created by Frank Rotermund on 25.03.21. +# Copyright © 2021 matrix.org. All rights reserved. + +cp -vf ../Config/BuM/AppIdentifiers-bum.xcconfig ../Config/AppIdentifiers.xcconfig diff --git a/Gemfile.lock b/Gemfile.lock index a9f8b4d36..157defa20 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -20,20 +20,20 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.568.0) - aws-sdk-core (3.130.0) + aws-partitions (1.605.0) + aws-sdk-core (3.131.2) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) - jmespath (~> 1.0) - aws-sdk-kms (1.55.0) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.57.0) aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.113.0) + aws-sdk-s3 (1.114.0) aws-sdk-core (~> 3, >= 3.127.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.4.0) + aws-sigv4 (1.5.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.0.3) @@ -92,7 +92,7 @@ GEM escape (0.0.4) ethon (0.15.0) ffi (>= 1.15.0) - excon (0.92.1) + excon (0.92.3) faraday (1.10.0) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -112,8 +112,8 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.3) - multipart-post (>= 1.2, < 3) + faraday-multipart (1.0.4) + multipart-post (~> 2) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) @@ -122,7 +122,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.6) - fastlane (2.205.0) + fastlane (2.207.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -171,9 +171,9 @@ GEM fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.16.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-core (0.4.2) + google-apis-androidpublisher_v3 (0.25.0) + google-apis-core (>= 0.7, < 2.a) + google-apis-core (0.7.0) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -182,19 +182,19 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.10.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-playcustomapp_v1 (0.7.0) - google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.11.0) - google-apis-core (>= 0.4, < 2.a) + google-apis-iamcredentials_v1 (0.13.0) + google-apis-core (>= 0.7, < 2.a) + google-apis-playcustomapp_v1 (0.10.0) + google-apis-core (>= 0.7, < 2.a) + google-apis-storage_v1 (0.18.0) + google-apis-core (>= 0.7, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.5.0) - faraday (>= 0.17.3, < 2.0) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) google-cloud-errors (1.2.0) - google-cloud-storage (1.36.1) + google-cloud-storage (1.37.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) @@ -202,7 +202,7 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.1.2) + googleauth (1.2.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -211,14 +211,14 @@ GEM signet (>= 0.16, < 2.a) highline (2.0.3) http-accept (1.7.0) - http-cookie (1.0.4) + http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) i18n (1.10.0) concurrent-ruby (~> 1.0) jmespath (1.6.1) - json (2.6.1) - jwt (2.3.0) + json (2.6.2) + jwt (2.4.1) memoist (0.16.2) mime-types (3.4.1) mime-types-data (~> 3.2015) @@ -238,9 +238,9 @@ GEM osx_keychain (1.0.2) RubyInline (~> 3) plist (3.6.0) - public_suffix (4.0.6) + public_suffix (4.0.7) rake (13.0.6) - representable (3.1.1) + representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) @@ -256,9 +256,9 @@ GEM ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.16.1) + signet (0.17.0) addressable (~> 2.8) - faraday (>= 0.17.5, < 3.0) + faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) simctl (1.6.8) @@ -279,14 +279,14 @@ GEM uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.8.1) + unf_ext (0.0.8.2) unicode-display_width (1.8.0) webrick (1.7.0) word_wrap (1.0.0) xcode-install (2.8.0) claide (>= 0.9.1, < 1.1.0) fastlane (>= 2.1.0, < 3.0.0) - xcodeproj (1.21.0) + xcodeproj (1.22.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) diff --git a/Podfile b/Podfile index 92ea1314e..77a296c46 100644 --- a/Podfile +++ b/Podfile @@ -139,6 +139,28 @@ abstract_target 'RiotPods' do pod 'FLEX', '~> 4.5.0', :configurations => ['Debug'] end + + target "BuM-Beta" do + import_MatrixSDK + import_MatrixKit_pods + + import_SwiftUI_pods + + pod 'DGCollectionViewLeftAlignFlowLayout', '~> 1.0.4' + pod 'UICollectionViewRightAlignedLayout', '~> 0.0.3' + pod 'KTCenterFlowLayout', '~> 1.3.1' + pod 'ZXingObjC', '~> 3.6.5' + pod 'FlowCommoniOS', '~> 1.12.0' + pod 'DTTJailbreakDetection', '~> 0.4.0' + pod 'ReadMoreTextView', '~> 3.0.1' + pod 'SwiftBase32', '~> 0.9.0' + pod 'SwiftJWT', '~> 3.6.200' + pod 'SideMenu', '~> 6.5' + pod 'DSWaveformImage', '~> 6.1.1' + pod 'ffmpeg-kit-ios-audio', '4.5.1' + + pod 'FLEX', '~> 4.5.0', :configurations => ['Debug'] + end target "RiotShareExtension" do import_MatrixSDK diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index bd0f08c92..5b06d86cf 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -663,10 +663,18 @@ public class VectorL10n: NSObject { public static var bwiEditPersonalStateMyState: String { return VectorL10n.tr("Vector", "bwi_edit_personal_state_my_state") } - /// Not available + /// Remote public static var bwiEditPersonalStateOptionHomeoffice: String { return VectorL10n.tr("Vector", "bwi_edit_personal_state_option_homeoffice") } + /// Not available + public static var bwiEditPersonalStateOptionNotAvailable: String { + return VectorL10n.tr("Vector", "bwi_edit_personal_state_option_not_available") + } + /// Delete message + public static var bwiEditPersonalStateOptionReset: String { + return VectorL10n.tr("Vector", "bwi_edit_personal_state_option_reset") + } /// Office public static var bwiEditPersonalStateOptionWork: String { return VectorL10n.tr("Vector", "bwi_edit_personal_state_option_work") @@ -6359,7 +6367,7 @@ public class VectorL10n: NSObject { public static var secretsRecoveryWithPassphraseTitle: String { return VectorL10n.tr("Vector", "secrets_recovery_with_passphrase_title") } - /// Enter your account password to confirm + /// Confirm with your password! public static var secretsResetAuthenticationMessage: String { return VectorL10n.tr("Vector", "secrets_reset_authentication_message") } @@ -6391,7 +6399,7 @@ public class VectorL10n: NSObject { public static var secretsSetupRecoveryKeyExportAction: String { return VectorL10n.tr("Vector", "secrets_setup_recovery_key_export_action") } - /// Completed!\n\nYour chats have een successfully decrypted. + /// Completed!\nYour recovery key has been set successfully. public static var secretsSetupRecoveryKeyInformation: String { return VectorL10n.tr("Vector", "secrets_setup_recovery_key_information") } @@ -6411,7 +6419,7 @@ public class VectorL10n: NSObject { public static var secretsSetupRecoveryKeyTitle: String { return VectorL10n.tr("Vector", "secrets_setup_recovery_key_title") } - /// ⚠️ Do not use your account password. + /// ⚠️ Do not use your password. public static var secretsSetupRecoveryPassphraseAdditionalInformation: String { return VectorL10n.tr("Vector", "secrets_setup_recovery_passphrase_additional_information") } @@ -6771,7 +6779,7 @@ public class VectorL10n: NSObject { public static func settingsCallsStunServerFallbackDescription(_ p1: String) -> String { return VectorL10n.tr("Vector", "settings_calls_stun_server_fallback_description", p1) } - /// Change Matrix account password + /// Change password public static var settingsChangePassword: String { return VectorL10n.tr("Vector", "settings_change_password") } @@ -7303,6 +7311,26 @@ public class VectorL10n: NSObject { public static var settingsPasswordCondition: String { return VectorL10n.tr("Vector", "settings_password_condition") } + /// The password must include at least one digit + public static var settingsPasswordHasNoDigit: String { + return VectorL10n.tr("Vector", "settings_password_has_no_digit") + } + /// The password must include at least one lowercase letter + public static var settingsPasswordHasNoLowercaseLetter: String { + return VectorL10n.tr("Vector", "settings_password_has_no_lowercase_letter") + } + /// The password must include at least one symbol + public static var settingsPasswordHasNoSymbol: String { + return VectorL10n.tr("Vector", "settings_password_has_no_symbol") + } + /// The password must include at least one uppercase letter + public static var settingsPasswordHasNoUppercaseLetter: String { + return VectorL10n.tr("Vector", "settings_password_has_no_uppercase_letter") + } + /// The password must be at least 8 characters long + public static var settingsPasswordTooShortMessage: String { + return VectorL10n.tr("Vector", "settings_password_too_short_message") + } /// Your password has been updated public static var settingsPasswordUpdated: String { return VectorL10n.tr("Vector", "settings_password_updated") diff --git a/Riot/target-bum-beta.yml b/Riot/target-bum-beta.yml new file mode 100644 index 000000000..b0e8406cc --- /dev/null +++ b/Riot/target-bum-beta.yml @@ -0,0 +1,111 @@ +name: BuM-Beta + +schemes: + BuM-Beta: + analyze: + config: Debug + archive: + config: Release + build: + targets: + BuM-Beta: + - running + - testing + - profiling + - analyzing + - archiving + profile: + config: Release + run: + config: Debug + disableMainThreadChecker: true + test: + config: Debug + disableMainThreadChecker: true + gatherCoverageData: true + language: "de" + region: "DE" + environmentVariables: + username: + defaultpin: + defaultpassphrase: + defaultpassword: + targets: + - RiotTests + +targets: + BuM-Beta: + type: application + platform: iOS + + dependencies: + - target: RiotShareExtension + - target: RiotNSE + - target: DesignKit + - target: CommonKit + - package: OrderedCollections + + configFiles: + Debug: Debug.xcconfig + Release: Release.xcconfig + + preBuildScripts: + - name: ⚠️ SwiftLint + runOnlyWhenInstalling: false + shell: /bin/sh + script: "${PODS_ROOT}/SwiftLint/swiftlint\n" + - name: 🛠 SwiftGen + runOnlyWhenInstalling: false + shell: /bin/sh + script: "${PODS_ROOT}/SwiftGen/bin/swiftgen config run --config Tools/SwiftGen/swiftgen-config.yml\n" + + sources: + - path: ../RiotSwiftUI/Modules + # Riot will provide it's own LocaleProviderType so exclude. + # Riot will provide it's own LocaleProviderType so exclude. + excludes: + - "Common/Locale/LocaleProvider.swift" + - "**/Test/**" + - "Room/LocationSharing/*" + - "Room/StaticLocationSharingViewer/*" + - "Room/LiveLocationSharingViewer/*" + - path: ../Tools + excludes: + - "Logs" + - "Release" + - "Templates/*.sh" + - path: ../Config + excludes: + - "AppIdentifiers.xcconfig" + - "BuildSettings.swift" + - "BuM" + - "*.sh" + - path: . + excludes: + - "Modules/Room/EmojiPicker/Data/EmojiMart/EmojiJSONStore.swift" + - "Modules/Analytics/Test/Unit/BWIAnalyticsTests.swift" + - "**/*.strings" # Exclude all strings files + - "Modules/Room/TimelineCells/Styles/Plain/Cells/Location/*" + - "Modules/Room/TimelineCells/Styles/Bubble/Cells/Location/*" + - "Modules/Room/Location/*" + - "Modules/Room/LocationSharing/*" + - "Modules/Room/Views/BubbleCells/Location/*" + - "Modules/Room/Views/BubbleCells/Styles/Bubble/Cells/Location/*" + - "Modules/LocationSharing/*" + - path: ../bwi + excludes: + - "Tests" + - path: ../RiotShareExtension/Shared + - path: Modules/MatrixKit + excludes: + - "**/*.md" # excludes all files with the .md extension + # Add separately localizable files + # Once a language has enough translations (>80%), it must be declared here + - path: Assets/en.lproj/InfoPlist.strings + - path: Assets/en.lproj/Localizable.strings + - path: Assets/en.lproj/Vector.strings + - path: Assets/en.lproj/Bwi.strings + - path: Assets/de.lproj/InfoPlist.strings + - path: Assets/de.lproj/Localizable.strings + - path: Assets/de.lproj/Vector.strings + - path: Assets/de.lproj/Bwi.strings diff --git a/Riot/target-messenger.yml b/Riot/target-messenger.yml index 48e11feeb..dccae4e1f 100644 --- a/Riot/target-messenger.yml +++ b/Riot/target-messenger.yml @@ -75,6 +75,9 @@ targets: - "Release" - "Templates/*.sh" - path: ../Config + excludes: + - "BuM-Beta" + - "*.sh" - path: . excludes: - "Modules/Room/EmojiPicker/Data/EmojiMart/EmojiJSONStore.swift" diff --git a/RiotNSE/RiotNSE.entitlements b/RiotNSE/RiotNSE.entitlements index cc9117647..ced577af8 100644 --- a/RiotNSE/RiotNSE.entitlements +++ b/RiotNSE/RiotNSE.entitlements @@ -10,7 +10,5 @@ $(KEYCHAIN_ACCESS_GROUP) - com.apple.developer.usernotifications.filtering - diff --git a/project.yml b/project.yml index e099a7037..acc2675a4 100644 --- a/project.yml +++ b/project.yml @@ -29,6 +29,7 @@ options: include: - path: Riot/target.yml - path: Riot/target-messenger.yml + - path: Riot/target-bum-beta.yml - path: RiotTests/target.yml - path: RiotShareExtension/target.yml - path: SiriIntents/target.yml