Init model module

This commit is contained in:
dab246
2021-07-27 12:51:15 +07:00
committed by Dat H. Pham
parent 5b0a8f6fb2
commit c235fcdecd
12 changed files with 374 additions and 0 deletions
+124
View File
@@ -0,0 +1,124 @@
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# Visual Studio Code related
.classpath
.project
.settings/
.vscode/
# Flutter repo-specific
/bin/cache/
/bin/mingit/
/dev/benchmarks/mega_gallery/
/dev/bots/.recipe_deps
/dev/bots/android_tools/
/dev/devicelab/ABresults*.json
/dev/docs/doc/
/dev/docs/flutter.docs.zip
/dev/docs/lib/
/dev/docs/pubspec.yaml
/dev/integration_tests/**/xcuserdata
/dev/integration_tests/**/Pods
/packages/flutter/coverage/
version
analysis_benchmark.json
# packages file containing multi-root paths
.packages.generated
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
**/generated_plugin_registrant.dart
.packages
.pub-cache/
.pub/
build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds
# Android related
**/android/.gradle
**/android/captures/
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
*.jks
# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/.last_build_id
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
# macOS
**/macos/Flutter/GeneratedPluginRegistrant.swift
**/macos/Flutter/Flutter-Debug.xcconfig
**/macos/Flutter/Flutter-Release.xcconfig
**/macos/Flutter/Flutter-Profile.xcconfig
# Coverage
coverage/
# Symbols
app.*.symbols
# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
!/dev/ci/**/Gemfile.lock
#generated file
*.g.dart
messages_all.dart
messages_en.dart
messages_fr.dart
messages_messages.dart
messages_ru.dart
messages_vi.dart
+10
View File
@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: d79295af24c3ed621c33713ecda14ad196fd9c31
channel: stable
project_type: module
+11
View File
@@ -0,0 +1,11 @@
# model
A model module contains entities
## Getting Started
For help getting started with Flutter, view our online
[documentation](https://flutter.dev/).
For instructions integrating Flutter modules to your existing applications,
see the [add-to-app documentation](https://flutter.dev/docs/development/add-to-app).
+10
View File
@@ -0,0 +1,10 @@
import 'package:equatable/equatable.dart';
class Password with EquatableMixin {
final String value;
Password(this.value);
@override
List<Object> get props => [value];
}
+10
View File
@@ -0,0 +1,10 @@
import 'package:equatable/equatable.dart';
class UserName with EquatableMixin {
final String userName;
UserName(this.userName);
@override
List<Object> get props => [userName];
}
+1
View File
@@ -0,0 +1 @@
enum ExpandMode { COLLAPSE, EXPAND }
@@ -0,0 +1,63 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_rights.dart';
import 'package:model/mailbox/select_mode.dart';
class PresentationMailbox with EquatableMixin {
final MailboxId id;
final MailboxName? name;
final MailboxId? parentId;
final Role? role;
final SortOrder? sortOrder;
final TotalEmails? totalEmails;
final UnreadEmails? unreadEmails;
final TotalThreads? totalThreads;
final UnreadThreads? unreadThreads;
final MailboxRights? myRights;
final IsSubscribed? isSubscribed;
final SelectMode selectMode;
PresentationMailbox(
this.id,
{
this.name,
this.parentId,
this.role,
this.sortOrder,
this.totalEmails,
this.unreadEmails,
this.totalThreads,
this.unreadThreads,
this.myRights,
this.isSubscribed,
this.selectMode = SelectMode.INACTIVE
}
);
bool hasParentId() => parentId != null && parentId!.id.value.isNotEmpty;
bool hasRole() => role != null && role!.value.isNotEmpty;
String getCountUnReadEmails() {
if (unreadEmails == null) {
return '';
} else {
if (unreadEmails!.value.value <= 0) {
return '';
} else {
return unreadEmails!.value.value <= 999
? '${unreadEmails!.value.value}'
: '999+';
}
}
}
@override
List<Object?> get props => [
id,
name,
parentId,
role
];
}
+1
View File
@@ -0,0 +1 @@
enum SelectMode { ACTIVE, INACTIVE }
+13
View File
@@ -0,0 +1,13 @@
library model;
// Account
export 'account/user_name.dart';
export 'account/password.dart';
// User
export 'user/user_id.dart';
export 'user/user.dart';
// Mailbox
export 'mailbox/presentation_mailbox.dart';
export 'mailbox/select_mode.dart';
export 'mailbox/expand_mode.dart';
+22
View File
@@ -0,0 +1,22 @@
import 'package:equatable/equatable.dart';
import 'package:model/user/user_id.dart';
class User with EquatableMixin {
final UserId userId;
final String firstName;
final String lastName;
User(
this.userId,
this.firstName,
this.lastName,
);
@override
List<Object> get props => [
userId,
firstName,
lastName,
];
}
+10
View File
@@ -0,0 +1,10 @@
import 'package:equatable/equatable.dart';
class UserId with EquatableMixin {
final String id;
UserId(this.id);
@override
List<Object?> get props => [id];
}
+99
View File
@@ -0,0 +1,99 @@
name: model
description: A model module contains entities
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
#
# This version is used _only_ for the Runner app, which is used if you just do
# a `flutter run` or a `flutter make-host-app-editable`. It has no impact
# on any other native host app that you embed your Flutter project into.
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
# equatable
equatable: 2.0.3
# quiver
quiver: 3.0.1
# jmap_dart_client
jmap_dart_client:
git:
url: git://github.com/hoangdat/jmap-dart-client.git
ref: serialize
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: 2.0.5
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add Flutter specific assets to your application, add an assets section,
# like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add Flutter specific custom fonts to your application, add a fonts
# section here, in this "flutter" section. Each entry in this list should
# have a "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
# This section identifies your Flutter project as a module meant for
# embedding in a native host app. These identifiers should _not_ ordinarily
# be changed after generation - they are used to ensure that the tooling can
# maintain consistency when adding or modifying assets and plugins.
# They also do not have any bearing on your native host application's
# identifiers, which may be completely independent or the same as these.
module:
androidX: true
androidPackage: com.linagora.android.tmail.model
iosBundleIdentifier: com.linagora.android.tmail.model