diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index f5c26958a5..137a72f929 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -5,6 +5,10 @@ on:
name: Build dev binaries
+env:
+ FLUTTER_VERSION: 3.16.0
+ XCODE_VERSION: ^15.0.1
+
jobs:
build-app:
name: Build app
@@ -15,7 +19,7 @@ jobs:
- os: android
runner: ubuntu-latest
- os: ios
- runner: macos-latest
+ runner: macos-13
environment: dev
steps:
@@ -25,7 +29,7 @@ jobs:
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
- flutter-version: "3.16.0"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
channel: "stable"
cache: true
cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
@@ -50,6 +54,12 @@ jobs:
distribution: "temurin"
java-version: "11"
+ - name: Select Xcode version
+ if: matrix.os == 'ios'
+ uses: maxim-lobanov/setup-xcode@v1
+ with:
+ xcode-version: ${{ env.XCODE_VERSION }}
+
- name: Setup iOS environment
if: matrix.os == 'ios'
run: ../scripts/setup-ios.sh
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 6276525469..571577c298 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -5,6 +5,10 @@ on:
name: Release
+env:
+ FLUTTER_VERSION: 3.16.0
+ XCODE_VERSION: ^15.0.1
+
jobs:
release:
name: Release
@@ -16,7 +20,7 @@ jobs:
- os: android
runner: ubuntu-latest
- os: ios
- runner: macos-latest
+ runner: macos-13
fail-fast: false
environment: prod
@@ -28,7 +32,7 @@ jobs:
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
- flutter-version: "3.16.0"
+ flutter-version: ${{ env.FLUTTER_VERSION }}
channel: "stable"
cache: true
cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
@@ -53,6 +57,12 @@ jobs:
distribution: "temurin"
java-version: "11"
+ - name: Select Xcode version
+ if: matrix.os == 'ios'
+ uses: maxim-lobanov/setup-xcode@v1
+ with:
+ xcode-version: ${{ env.XCODE_VERSION }}
+
- name: Setup Android environment
if: matrix.os == 'android'
env:
diff --git a/contact/pubspec.lock b/contact/pubspec.lock
index 1e8ce88765..1d54914a08 100644
--- a/contact/pubspec.lock
+++ b/contact/pubspec.lock
@@ -280,6 +280,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
+ fk_user_agent:
+ dependency: transitive
+ description:
+ name: fk_user_agent
+ sha256: fd6c94e120786985a292d12f61422a581f4e851148d5940af38b819357b8ad0d
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.0"
flex_color_picker:
dependency: transitive
description:
@@ -532,7 +540,7 @@ packages:
description:
path: "."
ref: cnb_support
- resolved-ref: "351a1bf0fef48f59d771d3a485cbada950f2ed0a"
+ resolved-ref: "10f5838aa1c6c4bffc5690f46d05d0cc4e489e1c"
url: "https://github.com/linagora/jmap-dart-client.git"
source: git
version: "0.0.1"
@@ -639,6 +647,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
+ package_info_plus:
+ dependency: transitive
+ description:
+ name: package_info_plus
+ sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.2.0"
+ package_info_plus_platform_interface:
+ dependency: transitive
+ description:
+ name: package_info_plus_platform_interface
+ sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.1"
path:
dependency: transitive
description:
diff --git a/core/analysis_options.yaml b/core/analysis_options.yaml
index 0f32754d37..86e04bf28d 100644
--- a/core/analysis_options.yaml
+++ b/core/analysis_options.yaml
@@ -13,4 +13,5 @@ linter:
rules:
constant_identifier_names: false
non_constant_identifier_names: false
- unnecessary_string_escapes: false
\ No newline at end of file
+ unnecessary_string_escapes: false
+ avoid_web_libraries_in_flutter: false
\ No newline at end of file
diff --git a/core/lib/core.dart b/core/lib/core.dart
index 596285f9c5..9bc6ca3923 100644
--- a/core/lib/core.dart
+++ b/core/lib/core.dart
@@ -45,6 +45,9 @@ export 'utils/file_utils.dart';
export 'utils/option_param_mixin.dart';
export 'utils/print_utils.dart';
export 'utils/broadcast_channel/broadcast_channel.dart';
+export 'utils/list_utils.dart';
+export 'utils/mail/domain.dart';
+export 'utils/mail/mail_address.dart';
// Views
export 'presentation/views/text/slogan_builder.dart';
diff --git a/core/lib/data/constants/constant.dart b/core/lib/data/constants/constant.dart
index 8ec6a6caa4..59626bd61b 100644
--- a/core/lib/data/constants/constant.dart
+++ b/core/lib/data/constants/constant.dart
@@ -2,5 +2,6 @@ class Constant {
static const acceptHeaderDefault = 'application/json';
static const contentTypeHeaderDefault = 'application/json';
static const pdfMimeType = 'application/pdf';
+ static const base64Charset = 'base64';
static const textHtmlMimeType = 'text/html';
}
\ No newline at end of file
diff --git a/core/lib/data/network/download/download_client.dart b/core/lib/data/network/download/download_client.dart
index 781eeab111..8686739f1c 100644
--- a/core/lib/data/network/download/download_client.dart
+++ b/core/lib/data/network/download/download_client.dart
@@ -63,7 +63,8 @@ class DownloadClient {
'bytesData': bytesData,
'mimeType': 'image/$fileExtension',
'cid': cid,
- 'fileName': fileName
+ 'fileName': fileName,
+ 'maxWidth': maxWidth
});
return base64Uri;
@@ -77,7 +78,8 @@ class DownloadClient {
'bytesData': bytesDataCompressed,
'mimeType': 'image/$fileExtension',
'cid': cid,
- 'fileName': fileName
+ 'fileName': fileName,
+ 'maxWidth': maxWidth
});
return base64Uri;
@@ -86,7 +88,8 @@ class DownloadClient {
'bytesData': bytesData,
'mimeType': 'image/$fileExtension',
'cid': cid,
- 'fileName': fileName
+ 'fileName': fileName,
+ 'maxWidth': maxWidth
});
return base64Uri;
@@ -103,11 +106,14 @@ class DownloadClient {
var mimeType = entryParam['mimeType'];
final cid = entryParam['cid'];
var fileName = entryParam['fileName'];
+ var maxWidth = entryParam['maxWidth'] != null
+ ? '${entryParam['maxWidth']}px'
+ : '100%';
final base64Data = base64Encode(bytesData);
if (fileName.contains('.')) {
fileName = fileName.split('.').first;
}
- final base64Uri = '';
+ final base64Uri = '';
return base64Uri;
}
}
\ No newline at end of file
diff --git a/core/lib/domain/exceptions/address_exception.dart b/core/lib/domain/exceptions/address_exception.dart
new file mode 100644
index 0000000000..51889bbf76
--- /dev/null
+++ b/core/lib/domain/exceptions/address_exception.dart
@@ -0,0 +1,13 @@
+import 'package:equatable/equatable.dart';
+
+class AddressException with EquatableMixin implements Exception {
+ final String message;
+
+ AddressException(this.message);
+
+ @override
+ String toString() => message;
+
+ @override
+ List