diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart index 034ff38363..f0c08dcc0a 100644 --- a/lib/config/app_config.dart +++ b/lib/config/app_config.dart @@ -98,7 +98,8 @@ abstract class AppConfig { static const String sourceCodeUrl = 'https://github.com/linagora/twake-on-matrix'; static String supportUrl = 'https://twake.app/support'; - static String cozyExternalBridgeVersion = '0.16.1'; + static String cozyExternalBridgeVersion = '1.2.1'; + static List cozyExternalBridgeAllowlist = ['.twake.app', '.lin-saas.com','.lin-saas.dev']; static bool renderHtml = true; static bool hideRedactedEvents = false; static bool hideUnknownEvents = true; @@ -193,6 +194,11 @@ abstract class AppConfig { defaultValue: ConfigurationSaas.homeserver, ); + static const String _cozyExternalBridgeAllowlistEnv = String.fromEnvironment( + 'COZY_EXTERNAL_BRIDGE_ALLOWLIST', + defaultValue: '.twake.app,.lin-saas.com,.lin-saas.dev', + ); + static void loadEnvironment() { twakeWorkplaceHomeserver = _twakeWorkplaceHomeserverEnv; @@ -213,6 +219,14 @@ abstract class AppConfig { homeserver = _homeserverEnv; Logs().i('[Public Platform] AppConfig():: HOME_SERVER $_homeserverEnv'); + + cozyExternalBridgeAllowlist = _cozyExternalBridgeAllowlistEnv + .split(',') + .map((i) => i.trim()) + .where((i) => i.isNotEmpty) + .toList(); + + Logs().i('[Public Platform] AppConfig():: COZY_EXTERNAL_BRIDGE_ALLOWLIST $_cozyExternalBridgeAllowlistEnv'); } static bool get isSaasPlatForm => _platformEnv == 'saas'; @@ -302,5 +316,11 @@ abstract class AppConfig { json['cozy_external_bridge_version'].isNotEmpty) { cozyExternalBridgeVersion = json['cozy_external_bridge_version']; } + if (json['cozy_external_bridge_allowlist'] is List && + json['cozy_external_bridge_allowlist'].isNotEmpty) { + cozyExternalBridgeAllowlist = json['cozy_external_bridge_allowlist'] + .whereType() + .toList(); + } } } diff --git a/lib/main.dart b/lib/main.dart index 3b481a872a..6c0a181f2e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -67,7 +67,7 @@ void main() async { if (PlatformInfos.isWeb) { CozyConfigManager() .injectCozyScript(AppConfig.cozyExternalBridgeVersion) - .then((value) => CozyConfigManager().initialize()); + .then((value) => CozyConfigManager().initialize(validUrlSuffixes: AppConfig.cozyExternalBridgeAllowlist)); } // Started in foreground mode. diff --git a/lib/widgets/layouts/adaptive_layout/adaptive_scaffold_appbar.dart b/lib/widgets/layouts/adaptive_layout/adaptive_scaffold_appbar.dart index c59f662806..9df5e79dc5 100644 --- a/lib/widgets/layouts/adaptive_layout/adaptive_scaffold_appbar.dart +++ b/lib/widgets/layouts/adaptive_layout/adaptive_scaffold_appbar.dart @@ -50,14 +50,11 @@ class _AdaptiveScaffoldAppBarState extends State { }, ); - return FutureBuilder( - future: CozyConfigManager().isInsideCozy, - builder: (context, snapshot) { - if (!snapshot.hasData || !snapshot.data!) return child; + if(CozyConfigManager().isInContainer) { + return const SizedBox(); + } - return const SizedBox(); - }, - ); + return child; } } diff --git a/lib/widgets/local_notifications_extension.dart b/lib/widgets/local_notifications_extension.dart index a86cacf854..00c1eccbaa 100644 --- a/lib/widgets/local_notifications_extension.dart +++ b/lib/widgets/local_notifications_extension.dart @@ -67,9 +67,9 @@ extension LocalNotificationsExtension on MatrixState { method: ThumbnailMethod.crop, ); if (kIsWeb) { - final isInsideCozy = await CozyConfigManager().isInsideCozy; + final isInContainer = CozyConfigManager().isInContainer; _audioPlayer.play(); - if (isInsideCozy) { + if (isInContainer) { CozyConfigManager().sendNotification(title, body); return; } diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index c6393c0bd6..3a66d93e31 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -528,8 +528,8 @@ class MatrixState extends State Future _requestNotificationPermission() async { try { - final isInsideCozy = await CozyConfigManager().isInsideCozy; - if (isInsideCozy) { + final isInContainer = CozyConfigManager().isInContainer; + if (isInContainer) { CozyConfigManager().requestNotificationPermission(); } else { html.Notification.requestPermission(); diff --git a/pubspec.lock b/pubspec.lock index 96eb3b47cd..97d47c771e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1745,8 +1745,8 @@ packages: dependency: "direct main" description: path: "." - ref: master - resolved-ref: "66d09a271f20243badd92352a8bb5866b430020d" + ref: "feat/update-cozy-external-bridge-setup" + resolved-ref: "4331015b1f10c4b2033493e756ebf86398185d8d" url: "git@github.com:linagora/linagora-design-flutter.git" source: git version: "0.0.1" diff --git a/pubspec.yaml b/pubspec.yaml index 0b3064368f..92cbf07946 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,7 +20,7 @@ dependencies: linagora_design_flutter: git: url: git@github.com:linagora/linagora-design-flutter.git - ref: master + ref: feat/update-cozy-external-bridge-setup flutter_matrix_html: git: url: https://github.com/linagora/flutter_matrix_html.git @@ -327,6 +327,12 @@ dependency_overrides: git: url: https://github.com/linagora/overflow_view.git ref: master + + # Fix dependency conflict between flutter_emoji_mart and linagora_design_flutter + linagora_design_flutter: + git: + url: git@github.com:linagora/linagora-design-flutter.git + ref: feat/update-cozy-external-bridge-setup cider: link_template: