rebrand: Workavia Mail (tier 1+2+3+4)
Build Docker images with Sentry / Build release image with Sentry (push) Failing after 1m59s
Release / Release (android, ubuntu-latest) (push) Failing after 38m31s
Release / Release (ios, macos-14) (push) Has been cancelled
Integration tests / Run integration tests for mobile apps (push) Failing after 15s
Build dev binaries / Build app (ios, macos-14) (push) Waiting to run
Build dev binaries / Build app (android, ubuntu-latest) (push) Failing after 34m13s
Build Docker images with Sentry / Build release image with Sentry (push) Failing after 1m59s
Release / Release (android, ubuntu-latest) (push) Failing after 38m31s
Release / Release (ios, macos-14) (push) Has been cancelled
Integration tests / Run integration tests for mobile apps (push) Failing after 15s
Build dev binaries / Build app (ios, macos-14) (push) Waiting to run
Build dev binaries / Build app (android, ubuntu-latest) (push) Failing after 34m13s
Tier 1+2 - web/UI user-facing:
- Replace all visible "Twake Mail" / "Linagora" with "Workavia Mail"
- Swap 3 logo SVGs (icon kept, wordmark replaced via SVG <text>)
- Splash: replace icon_twp.png with HTML <div>Workavia</div>
- Remove power_by_linagora.svg, replace with AGPL SourceLinkWidget
- Patch web/index.html, manifest.json, login/logout-callback HTMLs
- Patch all 16 ARB locales + scribe ARB + app_localizations.dart
- Patch 4 web/i18n/*.json (FR/EN/DE/VI smart banner titles)
- App grid reduced to "Mail" + "Calendar"
- User-Agent: Twake-Mail -> Workavia-Mail
Tier 3+4 - mobile native:
- Bundle ID: com.linagora.{android,ios}.teammail -> com.workavia.mail
- URL schemes consolidated: teammail.mobile/twakemail.mobile -> workaviamail.mobile
- Android: applicationId, namespace, AndroidManifest, strings.xml
- Android: move Kotlin sources com.linagora.android.tmail -> com.workavia.mail
- Android: empty branding.xml + android12branding.xml (vector text not patchable)
- iOS: Info.plist (CFBundleDisplayName/Name, schemes), Runner.entitlements
- iOS: TwakeMailNSE + TeamMailShareExtension entitlements + Info.plist
- iOS: Runner.xcodeproj (12x PRODUCT_BUNDLE_IDENTIFIER, 9x APP_GROUP_ID)
- iOS: TokenRefreshManager.swift redirect URLs
- iOS: fastlane Appfile + Matchfile
- Dart: oidc_constant, app_config keychain, notification MethodChannel
Known follow-ups (require user action):
- Apple Team ID KUT463DS29 (still Linagora) -> needs Workavia team for App Store
- Android branding.xml emptied: need PNG/path-converted wordmark for splash
- iOS sub-bundle paths (TwakeMailNSE/, TeamMailShareExtension/) on disk unchanged
- iOS App Store URL emptied; Play Store ID points to com.workavia.mail
This commit is contained in:
@@ -2,17 +2,17 @@ import 'package:core/utils/platform_info.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||
|
||||
class OIDCConstant {
|
||||
static String get mobileOidcClientId => 'teammail-mobile';
|
||||
static String get mobileOidcClientId => 'workaviamail-mobile';
|
||||
static List<String> get oidcScope => ['openid', 'profile', 'email', 'offline_access'];
|
||||
static const String keyAuthorityOidc = 'KEY_AUTHORITY_OIDC';
|
||||
static const String authResponseKey = "auth_info";
|
||||
static const String twakeWorkplaceUrlScheme = 'twakemail.mobile';
|
||||
static const String twakeWorkplaceUrlScheme = 'workaviamail.mobile';
|
||||
static const String twakeWorkplaceRedirectUrl = '$twakeWorkplaceUrlScheme://redirect';
|
||||
static const String appParameter = 'tmail';
|
||||
static const String postRegisteredRedirectUrlPathParams = 'post_registered_redirect_url';
|
||||
static const String postLoginRedirectUrlPathParams = 'post_login_redirect_url';
|
||||
static const String endSessionFailedCode = 'end_session_failed';
|
||||
static const String redirectOidcMobile = 'teammail.mobile://oauthredirect';
|
||||
static const String redirectOidcMobile = 'workaviamail.mobile://oauthredirect';
|
||||
static const String loginRedirectOidcWeb = 'login-callback.html';
|
||||
static const String logoutRedirectOidcWeb = 'logout-callback.html';
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import 'package:tmail_ui_user/features/base/widget/application_version_widget.da
|
||||
import 'package:tmail_ui_user/features/login/presentation/base_login_view.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/login_form_type.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/privacy_link_widget.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/source_link_widget.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/widgets/login_message_widget.dart';
|
||||
import 'package:tmail_ui_user/features/login/presentation/widgets/try_again_button.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
@@ -78,15 +79,11 @@ class LoginView extends BaseLoginView {
|
||||
],
|
||||
)
|
||||
),
|
||||
Positioned.fill(
|
||||
const Positioned.fill(
|
||||
bottom: 24,
|
||||
child: Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: SvgPicture.asset(
|
||||
controller.imagePaths.icPowerByLinagora,
|
||||
width: 97,
|
||||
height: 44,
|
||||
fit: BoxFit.fill)))
|
||||
child: SourceLinkWidget()))
|
||||
],
|
||||
);
|
||||
}
|
||||
@@ -246,9 +243,9 @@ class LoginView extends BaseLoginView {
|
||||
],
|
||||
)
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 44, bottom: 10),
|
||||
child: SvgPicture.asset(controller.imagePaths.icPowerByLinagora, width: 97, height: 44, fit: BoxFit.fill)
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 44, bottom: 10),
|
||||
child: SourceLinkWidget()
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class SourceLinkWidget extends StatelessWidget {
|
||||
static const String _sourceUrl = 'https://github.com/linagora/tmail-flutter';
|
||||
|
||||
const SourceLinkWidget({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final baseStyle = ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
color: AppColor.colorTextBody,
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
);
|
||||
return RichText(
|
||||
text: TextSpan(
|
||||
style: baseStyle,
|
||||
children: [
|
||||
const TextSpan(text: 'Open source · AGPL-3.0 · '),
|
||||
TextSpan(
|
||||
text: 'source',
|
||||
style: baseStyle.copyWith(
|
||||
color: AppColor.loginTextFieldFocusedBorder,
|
||||
decoration: TextDecoration.underline,
|
||||
),
|
||||
recognizer: TapGestureRecognizer()..onTap = () => AppUtils.launchLink(_sourceUrl),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user