mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-16 06:28:27 +02:00
Merge branch 'release/v2.27.0'
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
Changes in BWI project 2.27.0 (2025-12-09)
|
||||
===================================================
|
||||
|
||||
Improvements 🙌:
|
||||
- MESSENGER-7554 prepare for upcoming migration announcement
|
||||
- MESSENGER-7861 add reset recovery key to MAS screen
|
||||
|
||||
Changes in BWI project 2.26.1 (2025-10-13)
|
||||
===================================================
|
||||
|
||||
|
||||
@@ -750,8 +750,11 @@
|
||||
// MARK: migration to new client
|
||||
// Banner
|
||||
"bwi_mobile_dialog_m_banner_title" = "Wechsel zum BundesMessengerX";
|
||||
"bwi_mobileMdialog_m1_banner_text" = "Das ist eine neue, technisch optimierte App vom BuM. Du kannst sie jetzt schon ausprobieren, bevor bald alle wechseln müssen.";
|
||||
"bwi_mobileMdialog_m1_banner_text_bold" = " Alle deine Kontakte und Nachrichten bleiben dabei erhalten.";
|
||||
"bwi_mobile_dialog_m1_banner_text" = "Das ist eine neue, technisch optimierte App vom BuM. Du kannst sie jetzt schon ausprobieren, bevor bald alle wechseln müssen.";
|
||||
"bwi_mobile_dialog_m1_banner_text_bold" = " Alle deine Kontakte und Nachrichten bleiben dabei erhalten.";
|
||||
"bwi_mobile_dialog_m2_banner_text_prefix" = "Das ist eine neue, technisch optimierte App vom BuM. Du hast nur noch";
|
||||
"bwi_mobile_dialog_m2_banner_text_bold" = " wenige Tage";
|
||||
"bwi_mobile_dialog_m2_banner_text_suffix" = " Zeit zu wechseln. Alle deine Kontakte und Nachrichten bleiben dabei erhalten.";
|
||||
"bwi_mobile_dialog_m_banner_button2" = "Erfahre mehr";
|
||||
"bwi_mobile_dialog_m_banner_button1" = "Später erinnern";
|
||||
|
||||
@@ -776,6 +779,9 @@
|
||||
|
||||
"bwi_a11y_close_button" = "Ansicht schließen";
|
||||
|
||||
// MARK owner handling
|
||||
// MARK: owner handling
|
||||
"room_member_power_level_owner_in" = "Inhaber von %@";
|
||||
"room_member_power_level_short_owner" = "Inhaber";
|
||||
|
||||
// MARK: call event
|
||||
"bwi_call_event_not_supported" = "Videomeetings werden in dieser App noch nicht unterstützt. Verwende den Webclient.";
|
||||
|
||||
@@ -663,8 +663,11 @@
|
||||
// MARK: migration to new client
|
||||
// Banner
|
||||
"bwi_mobile_dialog_m_banner_title" = "Change to BundesMessengerX";
|
||||
"bwi_mobileMdialog_m1_banner_text" = "This is a new technically optimized app from BuM. You can try it out now before everyone has to switch soon.";
|
||||
"bwi_mobileMdialog_m1_banner_text_bold" = " All your contacts and messages will be retained.";
|
||||
"bwi_mobile_dialog_m1_banner_text" = "This is a new technically optimized app from BuM. You can try it out now before everyone has to switch soon.";
|
||||
"bwi_mobile_dialog_m1_banner_text_bold" = " All your contacts and messages will be retained.";
|
||||
"bwi_mobile_dialog_m2_banner_text_prefix" = "This is a new technically optimized app from BuM. You only have";
|
||||
"bwi_mobile_dialog_m2_banner_text_bold" = " a few days";
|
||||
"bwi_mobile_dialog_m2_banner_text_suffix" = " to switch. All your contacts and messages will be retained.";
|
||||
"bwi_mobile_dialog_m_banner_button2" = "Learn more";
|
||||
"bwi_mobile_dialog_m_banner_button1" = "Remember later";
|
||||
|
||||
@@ -688,6 +691,10 @@
|
||||
|
||||
"bwi_a11y_close_button" = "Close window";
|
||||
|
||||
// MARK owner handling
|
||||
// MARK: owner handling
|
||||
"room_member_power_level_owner_in" = "Owner in %@";
|
||||
"room_member_power_level_short_owner" = "Owner";
|
||||
|
||||
// MARK: call event
|
||||
"bwi_call_event_not_supported" = "Video meetings are not yet supported in this app. Please use the web app.";
|
||||
|
||||
|
||||
@@ -26,6 +26,18 @@
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<p>
|
||||
<b>Version 2.27.0</b>
|
||||
</p>
|
||||
|
||||
<b>Verbesserungen</b>
|
||||
<ul>
|
||||
<li/>Wir erleichtern den Übergang zum neuen BundesMessengerX.
|
||||
<li/>Das Zurücksetzen des Wiederherstellungsschlüssels funktioniert nun auch bei Nutzung des MAS.
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<b>Version 2.26.0</b>
|
||||
|
||||
@@ -187,6 +187,10 @@ public class BWIL10n: NSObject {
|
||||
public static var bwiAuthRegisterButtonTitle: String {
|
||||
return BWIL10n.tr("Bwi", "bwi_auth_register_button_title")
|
||||
}
|
||||
/// Videomeetings werden in dieser App noch nicht unterstützt. Verwende den Webclient.
|
||||
public static var bwiCallEventNotSupported: String {
|
||||
return BWIL10n.tr("Bwi", "bwi_call_event_not_supported")
|
||||
}
|
||||
/// Zum App Store
|
||||
public static var bwiDeprecatedVersionAppstoreButton: String {
|
||||
return BWIL10n.tr("Bwi", "bwi_deprecated_version_appstore_button")
|
||||
|
||||
@@ -14,5 +14,8 @@ Please see LICENSE in the repository root for full details.
|
||||
|
||||
@interface WebViewViewController : MXKWebViewViewController
|
||||
|
||||
// bwi #7861 we need to enable javascript only for reauthentication
|
||||
- (void) enableJavascript:(BOOL)enable;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -86,4 +86,12 @@ Please see LICENSE in the repository root for full details.
|
||||
|
||||
[super setLocalHTMLFile:localHTMLFile];
|
||||
}
|
||||
|
||||
// bwi #7861 we need to enable javascript only for reauthentication
|
||||
- (void)enableJavascript:(BOOL)enable {
|
||||
if (webView) {
|
||||
webView.configuration.preferences.javaScriptEnabled = enable;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -53,6 +53,9 @@ NSString *FallBackViewControllerJavascriptOnLogin = @"window.matrixLogin.onLogin
|
||||
// the user agent to bypass the limitation of Google, as a quick fix (a proper solution will be to use the SSO SDK)
|
||||
webView.customUserAgent = @"Mozilla/5.0";
|
||||
|
||||
// bwi #7861 this webview needs javascript to function on MAS setups
|
||||
[self enableJavascript:YES];
|
||||
|
||||
[self clearCookies];
|
||||
}
|
||||
|
||||
|
||||
@@ -235,14 +235,17 @@ NSString *const kMXKWebViewViewControllerJavaScriptEnableLog =
|
||||
canGoBack = (![webView.URL.absoluteString isEqualToString:@"about:blank"]);
|
||||
}
|
||||
|
||||
if (canGoBack)
|
||||
{
|
||||
self.navigationItem.rightBarButtonItem = backButton;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Reset the original state
|
||||
self.navigationItem.rightBarButtonItems = originalRightBarButtonItems;
|
||||
// bwi #7861 don't overwrite other barbutton items here
|
||||
if (self.navigationItem.rightBarButtonItem == nil) {
|
||||
if (canGoBack)
|
||||
{
|
||||
self.navigationItem.rightBarButtonItem = backButton;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Reset the original state
|
||||
self.navigationItem.rightBarButtonItems = originalRightBarButtonItems;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,10 +53,16 @@ final class ReauthFallBackViewController: AuthFallBackViewController, Themable {
|
||||
}
|
||||
|
||||
private func setupNavigationBar() {
|
||||
// bwi #7861 change logic to both have a cancel and a close button. We don't need a back button here
|
||||
let doneBarButtonItem = MXKBarButtonItem(title: VectorL10n.close, style: .plain) { [weak self] in
|
||||
self?.didValidate?()
|
||||
}
|
||||
self.navigationItem.leftBarButtonItem = doneBarButtonItem
|
||||
self.navigationItem.rightBarButtonItem = doneBarButtonItem
|
||||
|
||||
let cancelBarButtonItem = MXKBarButtonItem(title: VectorL10n.cancel, style: .plain) { [weak self] in
|
||||
self?.didCancel?()
|
||||
}
|
||||
self.navigationItem.leftBarButtonItem = cancelBarButtonItem
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -141,19 +141,24 @@ final class ReauthenticationCoordinator: ReauthenticationCoordinatorType {
|
||||
// NOTE: Prefer use a callback and the same mechanism as SSOAuthentificationSession instead of using custom WKWebView
|
||||
let reauthFallbackViewController: ReauthFallBackViewController = ReauthFallBackViewController(url: authenticationURL.absoluteString)
|
||||
reauthFallbackViewController.title = self.parameters.title
|
||||
|
||||
|
||||
reauthFallbackViewController.enableJavascript(true)
|
||||
|
||||
reauthFallbackViewController.didCancel = { [weak self] in
|
||||
guard let self = self else {
|
||||
return
|
||||
}
|
||||
self.delegate?.reauthenticationCoordinatorDidCancel(self)
|
||||
|
||||
// bwi #7861 cancel buttons should close the view
|
||||
self.presentingViewController.dismiss(animated: true)
|
||||
}
|
||||
|
||||
reauthFallbackViewController.didValidate = { [weak self] in
|
||||
guard let self = self else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
guard let sessionId = authenticationSession.session else {
|
||||
self.delegate?.reauthenticationCoordinator(self, didFailWithError: ReauthenticationCoordinatorError.failToBuildPasswordParameters)
|
||||
return
|
||||
@@ -161,10 +166,13 @@ final class ReauthenticationCoordinator: ReauthenticationCoordinatorType {
|
||||
|
||||
let authenticationParameters = self.authenticationParametersBuilder.buildOAuthParameters(with: sessionId)
|
||||
self.delegate?.reauthenticationCoordinatorDidComplete(self, withAuthenticationParameters: authenticationParameters)
|
||||
|
||||
self.presentingViewController.dismiss(animated: true)
|
||||
}
|
||||
|
||||
let navigationController = RiotNavigationController(rootViewController: reauthFallbackViewController)
|
||||
|
||||
// bwi #7861 close buttons should close the view
|
||||
self.presentingViewController.present(navigationController, animated: true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
@@ -95,6 +95,9 @@
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="A3h-4o-nXF" firstAttribute="leading" secondItem="iQL-Bn-D9b" secondAttribute="trailing" constant="6" id="EJ7-V4-tar"/>
|
||||
<constraint firstItem="iQL-Bn-D9b" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="kdm-vj-rsY" secondAttribute="leading" constant="10" id="b6a-y2-NPP"/>
|
||||
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="A3h-4o-nXF" secondAttribute="trailing" constant="10" id="fGT-eM-hrd"/>
|
||||
<constraint firstAttribute="height" constant="20" id="xI1-oH-QU6"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
|
||||
@@ -23,7 +23,9 @@ class RoomMatrixRTCCallCell: RoomCallBaseCell {
|
||||
room.summary.setRoomAvatarImageIn(innerContentView.avatarImageView)
|
||||
innerContentView.avatarImageView.defaultBackgroundColor = .clear
|
||||
innerContentView.callerNameLabel.text = room.summary.displayName
|
||||
statusText = VectorL10n.callUnsupportedMatrixRtcCall
|
||||
// BWI #7954 use bwi text for call event
|
||||
statusText = BWIL10n.bwiCallEventNotSupported
|
||||
// BWI #7954 END
|
||||
bottomContentView = nil // Expands the size of the status stack.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,16 @@ protocol FeatureBannerDelegate {
|
||||
struct FeatureBannerView: View {
|
||||
var delegate: FeatureBannerDelegate?
|
||||
let darkmodeBackground = UIColor(rgb:0x2394A7)
|
||||
|
||||
let warningColor = UIColor(rgb:0xD51928)
|
||||
|
||||
var backgroundColor: Color {
|
||||
if BWIBuildSettings.shared.BuMXMigrationInfoLevel >= 2 {
|
||||
ThemeService.shared().isCurrentThemeDark() ? Color(uiColor: warningColor) : Color(ThemeService.shared().theme.warningColor)
|
||||
} else {
|
||||
ThemeService.shared().isCurrentThemeDark() ? Color(uiColor: darkmodeBackground) : Color(ThemeService.shared().theme.tintColor)
|
||||
}
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack(alignment: .center) {
|
||||
header
|
||||
@@ -124,7 +133,7 @@ struct FeatureBannerView: View {
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 12)
|
||||
.background(ThemeService.shared().isCurrentThemeDark() ? Color(uiColor: darkmodeBackground) : Color(ThemeService.shared().theme.tintColor))
|
||||
.background(backgroundColor)
|
||||
.cornerRadius(12)
|
||||
.padding(16)
|
||||
}
|
||||
@@ -145,9 +154,18 @@ struct FeatureBannerView: View {
|
||||
|
||||
var advertisementText: some View {
|
||||
VStack {
|
||||
Text(BWIL10n.bwiMobileMdialogM1BannerText) +
|
||||
Text(BWIL10n.bwiMobileMdialogM1BannerTextBold)
|
||||
.bold()
|
||||
VStack {
|
||||
if BWIBuildSettings.shared.BuMXMigrationInfoLevel == 1 {
|
||||
Text(BWIL10n.bwiMobileDialogM1BannerText) +
|
||||
Text(BWIL10n.bwiMobileDialogM1BannerTextBold)
|
||||
.bold()
|
||||
} else {
|
||||
Text(BWIL10n.bwiMobileDialogM2BannerTextPrefix) +
|
||||
Text(BWIL10n.bwiMobileDialogM2BannerTextBold)
|
||||
.bold() +
|
||||
Text(BWIL10n.bwiMobileDialogM2BannerTextSuffix)
|
||||
}
|
||||
}
|
||||
}
|
||||
.font(.system(size: 15))
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
Reference in New Issue
Block a user