1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-07-01 14:13:29 +00:00

26 Commits
1.1.5 ... 1.1.8

Author SHA1 Message Date
45cd7f1481 Fix conflict 2021-07-13 18:08:19 +02:00
a076c08429 Fix navigability issue 2021-05-29 15:57:31 +02:00
fa8c1f46a1 Fix appearance issues 2021-05-29 15:48:51 +02:00
0b4306990a Updated dependencies 2021-05-29 15:40:47 +02:00
4e7950582a Fix copy operation 2021-05-08 11:19:42 +02:00
3c179d4b83 Remove Alpha channel on application icon 2021-05-05 19:15:09 +02:00
622c1a5abf Add #Forez build script 2021-05-05 19:13:31 +02:00
48eb525f18 Make push notifications work on iOS 2021-05-05 19:09:01 +02:00
acb24b0b36 Bump build number 2021-05-05 12:23:48 +02:00
b9fe15e190 Fix dark theme issue 2021-05-05 12:23:02 +02:00
98b9c44315 New build attempt 2021-05-05 11:57:49 +02:00
1f0fa1faaa Update build number 2021-05-05 11:42:10 +02:00
a92664ac81 First iOS publish request 2021-05-05 11:36:19 +02:00
06d1d08f6d Push notifications are working on iOS 2021-05-05 08:40:59 +02:00
77030609c0 Start to work on a new version of the application 2021-05-04 08:04:15 +02:00
6470e2145c Fix emoji picker color 2021-05-04 07:52:44 +02:00
e7b4574920 Fix a issue 2021-05-04 07:49:45 +02:00
82464a8a77 Start to work on v1.1.7 2021-05-03 17:29:58 +02:00
8d84c52570 Fix issue with online configuration 2021-05-03 17:08:09 +02:00
34355eceed Add #Forez build script 2021-05-03 17:02:47 +02:00
90aca5132a Create new settings section 2021-04-30 18:55:45 +02:00
3c8bdd380f Add official email address in application settings 2021-04-30 18:50:46 +02:00
473ed0d95c Add missing translation 2021-04-30 18:38:26 +02:00
979be989ac Update about dialog 2021-04-30 18:37:03 +02:00
ffba5530ec Fix issue with non-Forez groups 2021-04-30 18:35:11 +02:00
5d080671c3 Start to work on the future version of Comunic 2021-04-30 18:08:36 +02:00
31 changed files with 449 additions and 196 deletions

View File

@ -131,6 +131,7 @@
"Confirm your password": "Confirmer le mot de passe", "Confirm your password": "Confirmer le mot de passe",
"Congratulations! Your password has now been successfully changed!": "Félicitations ! Votre mot de passe a bien été changé !", "Congratulations! Your password has now been successfully changed!": "Félicitations ! Votre mot de passe a bien été changé !",
"Connected users": "Utilisateurs connectés", "Connected users": "Utilisateurs connectés",
"Contact us": "Contactez-nous",
"Conversation color (optional)": "Couleur de conversation (optionnel)", "Conversation color (optional)": "Couleur de conversation (optionnel)",
"Conversation logo": "Logo de la conversation", "Conversation logo": "Logo de la conversation",
"Conversation members": "Membres de la conversation", "Conversation members": "Membres de la conversation",

8
build_all_forez.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
DEST="/home/pierre/Desktop"
make forez_release_split_per_abi && \
mv build/app/outputs/flutter-apk/app-armeabi-v7a-forez-release.apk "$DEST" && \
mv build/app/outputs/flutter-apk/app-arm64-v8a-forez-release.apk "$DEST" && \
mv build/app/outputs/flutter-apk/app-x86_64-forez-release.apk "$DEST" && \
mv build/app/outputs/mapping/forez/release/mapping.txt "$DEST"

1
build_comunic_ios.sh Executable file
View File

@ -0,0 +1 @@
flutter build ipa --flavor comunic -t lib/main_online.dart

1
build_forez_ios.sh Executable file
View File

@ -0,0 +1 @@
flutter build ipa --flavor forez -t lib/forez/main_forez_online.dart

View File

@ -36,5 +36,48 @@ end
post_install do |installer| post_install do |installer|
installer.pods_project.targets.each do |target| installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target) flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
# You can remove unused permissions here
# for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/develop/permission_handler/ios/Classes/PermissionHandlerEnums.h
# e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.calendar
'PERMISSION_EVENTS=0',
## dart: PermissionGroup.reminders
'PERMISSION_REMINDERS=0',
## dart: PermissionGroup.contacts
'PERMISSION_CONTACTS=0',
## dart: PermissionGroup.camera
# 'PERMISSION_CAMERA=0',
## dart: PermissionGroup.microphone
# 'PERMISSION_MICROPHONE=0',
## dart: PermissionGroup.speech
'PERMISSION_SPEECH_RECOGNIZER=0',
## dart: PermissionGroup.photos
#'PERMISSION_PHOTOS=0'
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION=0',
## dart: PermissionGroup.notification
# 'PERMISSION_NOTIFICATIONS=0',
## dart: PermissionGroup.mediaLibrary
# 'PERMISSION_MEDIA_LIBRARY=0',
## dart: PermissionGroup.sensors
'PERMISSION_SENSORS=0'
]
end
end end
end end

View File

@ -281,6 +281,6 @@ SPEC CHECKSUMS:
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1 video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
wakelock: b0843b2479edbf6504d8d262c2959446f35373aa wakelock: b0843b2479edbf6504d8d262c2959446f35373aa
PODFILE CHECKSUM: f92af04f373e0b50153886c1f8a6969f509e3fc8 PODFILE CHECKSUM: efdcc144b284f95c85507e2c43974fc68ced9a09
COCOAPODS: 1.10.0 COCOAPODS: 1.10.0

View File

@ -11,6 +11,7 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
6B56B0EAFAE8328410BF4F0C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F57A07BDAAD5F07639423EE8 /* Pods_Runner.framework */; }; 6B56B0EAFAE8328410BF4F0C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F57A07BDAAD5F07639423EE8 /* Pods_Runner.framework */; };
8F2AEBBC26394110007DF92A /* LaunchScreenForez.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8F2AEBBA26394110007DF92A /* LaunchScreenForez.storyboard */; }; 8F2AEBBC26394110007DF92A /* LaunchScreenForez.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8F2AEBBA26394110007DF92A /* LaunchScreenForez.storyboard */; };
8FFF7880264272F1002E5895 /* config in Resources */ = {isa = PBXBuildFile; fileRef = 8FFF787F264272F1002E5895 /* config */; };
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
@ -45,6 +46,8 @@
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
8CF757033A070BF5F6AD7355 /* Pods-Runner.debug-comunic.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-comunic.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-comunic.xcconfig"; sourceTree = "<group>"; }; 8CF757033A070BF5F6AD7355 /* Pods-Runner.debug-comunic.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-comunic.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-comunic.xcconfig"; sourceTree = "<group>"; };
8F2AEBBB26394110007DF92A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreenForez.storyboard; sourceTree = "<group>"; }; 8F2AEBBB26394110007DF92A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreenForez.storyboard; sourceTree = "<group>"; };
8FEFC7EA26405694003B7DF3 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
8FFF787F264272F1002E5895 /* config */ = {isa = PBXFileReference; lastKnownFileType = folder; path = config; sourceTree = "<group>"; };
9731915131511AD49411A740 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; 9731915131511AD49411A740 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
@ -87,6 +90,7 @@
97C146E51CF9000F007C117D = { 97C146E51CF9000F007C117D = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
8FFF787F264272F1002E5895 /* config */,
9740EEB11CF90186004384FC /* Flutter */, 9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
@ -106,6 +110,7 @@
97C146F01CF9000F007C117D /* Runner */ = { 97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
8FEFC7EA26405694003B7DF3 /* Runner.entitlements */,
8F2AEBBA26394110007DF92A /* LaunchScreenForez.storyboard */, 8F2AEBBA26394110007DF92A /* LaunchScreenForez.storyboard */,
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
@ -164,6 +169,7 @@
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
8FFF788226427350002E5895 /* Copy GoogleService-Info.plist to the correct location */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
@ -189,7 +195,7 @@
TargetAttributes = { TargetAttributes = {
97C146ED1CF9000F007C117D = { 97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1; CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = A9JXUMT7RC; DevelopmentTeam = QRU542F2B8;
}; };
}; };
}; };
@ -218,6 +224,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
8FFF7880264272F1002E5895 /* config in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
@ -265,6 +272,24 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
}; };
8FFF788226427350002E5895 /* Copy GoogleService-Info.plist to the correct location */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Copy GoogleService-Info.plist to the correct location";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "setopt KSH_ARRAYS BASH_REMATCH\nenvironment=\"default\"\n\n# Regex to extract the scheme name from the Build Configuration\n# We have named our Build Configurations as Debug-dev, Debug-prod etc.\n# Here, dev and prod are the scheme names. This kind of naming is required by Flutter for flavors to work.\n# We are using the $CONFIGURATION variable available in the XCode build environment to extract \n# the environment (or flavor)\n# For eg.\n# If CONFIGURATION=\"Debug-prod\", then environment will get set to \"prod\".\nif [[ $CONFIGURATION =~ -([^-]*)$ ]]; then\nenvironment=${BASH_REMATCH[1]}\nfi\n\necho $environment\n\n# Name and path of the resource we're copying\nGOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist\nGOOGLESERVICE_INFO_FILE=${PROJECT_DIR}/config/${environment}/${GOOGLESERVICE_INFO_PLIST}\n\n# Make sure GoogleService-Info.plist exists\necho \"Looking for ${GOOGLESERVICE_INFO_PLIST} in ${GOOGLESERVICE_INFO_FILE}\"\nif [ ! -f $GOOGLESERVICE_INFO_FILE ]\nthen\necho \"No GoogleService-Info.plist found. Please ensure it's in the proper directory.\"\nexit 1\nfi\n\n# Get a reference to the destination location for the GoogleService-Info.plist\n# This is the default location where Firebase init code expects to find GoogleServices-Info.plist file\nPLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\necho \"Will copy ${GOOGLESERVICE_INFO_PLIST} to final destination: ${PLIST_DESTINATION}\"\n\n# Copy over the prod GoogleService-Info.plist for Release builds\ncp \"${GOOGLESERVICE_INFO_FILE}\" \"${PLIST_DESTINATION}\"\n# unsetopt KSH_ARRAYS\n";
};
9740EEB61CF901F6004384FC /* Run Script */ = { 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -277,7 +302,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
}; };
C9EE070942D44B728369915C /* [CP] Embed Pods Frameworks */ = { C9EE070942D44B728369915C /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
@ -456,8 +481,9 @@
APP_DISPLAY_NAME = Comunic; APP_DISPLAY_NAME = Comunic;
APP_LAUNCH_STORYBOARD_NAME = LaunchScreen; APP_LAUNCH_STORYBOARD_NAME = LaunchScreen;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = S8QB4VV633; DEVELOPMENT_TEAM = QRU542F2B8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -469,7 +495,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = org.communiquons.comunic; PRODUCT_BUNDLE_IDENTIFIER = org.PierreHubert.comunic;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
@ -535,8 +561,9 @@
APP_DISPLAY_NAME = "#Forez"; APP_DISPLAY_NAME = "#Forez";
APP_LAUNCH_STORYBOARD_NAME = LaunchScreenForez; APP_LAUNCH_STORYBOARD_NAME = LaunchScreenForez;
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-forez"; ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-forez";
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = A9JXUMT7RC; DEVELOPMENT_TEAM = QRU542F2B8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -548,7 +575,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = org.communiquons.forez; PRODUCT_BUNDLE_IDENTIFIER = org.PierreHubert.forez;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
@ -608,8 +635,9 @@
APP_DISPLAY_NAME = "#Forez"; APP_DISPLAY_NAME = "#Forez";
APP_LAUNCH_STORYBOARD_NAME = LaunchScreenForez; APP_LAUNCH_STORYBOARD_NAME = LaunchScreenForez;
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-forez"; ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-forez";
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = A9JXUMT7RC; DEVELOPMENT_TEAM = QRU542F2B8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -621,7 +649,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = org.communiquons.forez; PRODUCT_BUNDLE_IDENTIFIER = org.PierreHubert.forez;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
@ -681,8 +709,9 @@
APP_DISPLAY_NAME = "#Forez"; APP_DISPLAY_NAME = "#Forez";
APP_LAUNCH_STORYBOARD_NAME = LaunchScreenForez; APP_LAUNCH_STORYBOARD_NAME = LaunchScreenForez;
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-forez"; ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-forez";
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = S8QB4VV633; DEVELOPMENT_TEAM = QRU542F2B8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -694,7 +723,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = org.communiquons.forez; PRODUCT_BUNDLE_IDENTIFIER = org.PierreHubert.forez;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
@ -807,8 +836,9 @@
APP_DISPLAY_NAME = Comunic; APP_DISPLAY_NAME = Comunic;
APP_LAUNCH_STORYBOARD_NAME = LaunchScreen; APP_LAUNCH_STORYBOARD_NAME = LaunchScreen;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = A9JXUMT7RC; DEVELOPMENT_TEAM = QRU542F2B8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -820,7 +850,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = org.communiquons.comunic; PRODUCT_BUNDLE_IDENTIFIER = org.PierreHubert.comunic;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };
@ -833,8 +863,9 @@
APP_DISPLAY_NAME = Comunic; APP_DISPLAY_NAME = Comunic;
APP_LAUNCH_STORYBOARD_NAME = LaunchScreen; APP_LAUNCH_STORYBOARD_NAME = LaunchScreen;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = A9JXUMT7RC; DEVELOPMENT_TEAM = QRU542F2B8;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@ -846,7 +877,7 @@
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/Flutter", "$(PROJECT_DIR)/Flutter",
); );
PRODUCT_BUNDLE_IDENTIFIER = org.communiquons.comunic; PRODUCT_BUNDLE_IDENTIFIER = org.PierreHubert.comunic;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -1,122 +1,122 @@
{ {
"images" : [ "images" : [
{ {
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png", "filename" : "Icon-App-20x20@2x.png",
"scale" : "2x" "idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
}, },
{ {
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png", "filename" : "Icon-App-20x20@3x.png",
"scale" : "3x" "idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
}, },
{ {
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png", "filename" : "Icon-App-29x29@1x.png",
"scale" : "1x" "idiom" : "iphone",
"scale" : "1x",
"size" : "29x29"
}, },
{ {
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png", "filename" : "Icon-App-29x29@2x.png",
"scale" : "2x" "idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
}, },
{ {
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png", "filename" : "Icon-App-29x29@3x.png",
"scale" : "3x" "idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
}, },
{ {
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png", "filename" : "Icon-App-40x40@2x.png",
"scale" : "2x" "idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
}, },
{ {
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png", "filename" : "Icon-App-40x40@3x.png",
"scale" : "3x" "idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
}, },
{ {
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png", "filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone", "idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "Icon-App-60x60@3x.png", "filename" : "Icon-App-60x60@3x.png",
"scale" : "3x" "idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
}, },
{ {
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png", "filename" : "Icon-App-20x20@1x.png",
"scale" : "1x" "idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
}, },
{ {
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png", "filename" : "Icon-App-20x20@2x.png",
"scale" : "2x" "idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
}, },
{ {
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png", "filename" : "Icon-App-29x29@1x.png",
"scale" : "1x" "idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
}, },
{ {
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png", "filename" : "Icon-App-29x29@2x.png",
"scale" : "2x" "idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
}, },
{ {
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png", "filename" : "Icon-App-40x40@1x.png",
"scale" : "1x" "idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
}, },
{ {
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png", "filename" : "Icon-App-40x40@2x.png",
"scale" : "2x" "idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
}, },
{ {
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png", "filename" : "Icon-App-76x76@1x.png",
"scale" : "1x" "idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
}, },
{ {
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png", "filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad", "idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png", "scale" : "2x",
"scale" : "2x" "size" : "76x76"
},
{
"filename" : "Icon-App-83.5x83.5@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
}, },
{ {
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png", "filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x" "idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -66,5 +66,11 @@
</array> </array>
<key>UIViewControllerBasedStatusBarAppearance</key> <key>UIViewControllerBasedStatusBarAppearance</key>
<false/> <false/>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>This permission is not needed by the app, but it is required by an underlying API. If you see this dialog, contact us.</string>
<key>NSAppleMusicUsageDescription</key>
<string>This permission is not needed by the app, but it is required by an underlying API. If you see this dialog, contact us.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This permission is not needed by the app, but it is required by an underlying API. If you see this dialog, contact us.</string>
</dict> </dict>
</plist> </plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>1007877315904-umuhjlq7qfcdn8f24kjddhpmlb67gvpd.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.1007877315904-umuhjlq7qfcdn8f24kjddhpmlb67gvpd</string>
<key>API_KEY</key>
<string>AIzaSyBzcEJVIHvHl-viG19qR3LFhb6aYj5EZXM</string>
<key>GCM_SENDER_ID</key>
<string>1007877315904</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>org.PierreHubert.comunic</string>
<key>PROJECT_ID</key>
<string>comunic-ae92c</string>
<key>STORAGE_BUCKET</key>
<string>comunic-ae92c.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:1007877315904:ios:469f6c61859712260aeea5</string>
</dict>
</plist>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>500630888942-0b42osg6gpr5tnr8s49uvlstg1bil1be.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.500630888942-0b42osg6gpr5tnr8s49uvlstg1bil1be</string>
<key>API_KEY</key>
<string>AIzaSyBuhS3BM7Ql6sQ1EPghKiLaLjh_78pT9-k</string>
<key>GCM_SENDER_ID</key>
<string>500630888942</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>org.PierreHubert.forez</string>
<key>PROJECT_ID</key>
<string>forez-1b859</string>
<key>STORAGE_BUCKET</key>
<string>forez-1b859.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:500630888942:ios:4bac527bf743b4b5d02eff</string>
<key>DATABASE_URL</key>
<string>https://forez-1b859.firebaseio.com</string>
</dict>
</plist>

View File

@ -1,17 +1,18 @@
import 'package:comunic/forez/init.dart'; import 'package:comunic/forez/init.dart';
import 'package:comunic/main.dart'; import 'package:comunic/main.dart';
import 'package:comunic/models/config.dart';
/// Forez online configuration /// Forez online configuration
/// ///
/// @author Pierre Hubert /// @author Pierre Hubert
void main() { void main() {
ForezConfig( Config.set(ForezConfig(
apiServerName: "api.communiquons.org", apiServerName: "api.communiquons.org",
apiServerUri: "/", apiServerUri: "/",
apiServerSecure: true, apiServerSecure: true,
clientName: "ForezMobile", clientName: "ForezMobile",
); ));
subMain(); subMain();
} }

View File

@ -4,21 +4,24 @@
// ignore_for_file: lines_longer_than_80_chars // ignore_for_file: lines_longer_than_80_chars
import 'package:connectivity_for_web/connectivity_for_web.dart';
import 'package:file_picker/src/file_picker_web.dart'; import 'package:file_picker/src/file_picker_web.dart';
import 'package:firebase_core_web/firebase_core_web.dart'; import 'package:firebase_core_web/firebase_core_web.dart';
import 'package:firebase_messaging_web/firebase_messaging_web.dart'; import 'package:firebase_messaging_web/firebase_messaging_web.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'package:image_picker_for_web/image_picker_for_web.dart';
import 'package:shared_preferences_web/shared_preferences_web.dart'; import 'package:shared_preferences_web/shared_preferences_web.dart';
import 'package:url_launcher_web/url_launcher_web.dart'; import 'package:url_launcher_web/url_launcher_web.dart';
import 'package:video_player_web/video_player_web.dart'; import 'package:video_player_web/video_player_web.dart';
import 'package:wakelock_web/wakelock_web.dart'; import 'package:wakelock_web/wakelock_web.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
// ignore: public_member_api_docs // ignore: public_member_api_docs
void registerPlugins(Registrar registrar) { void registerPlugins(Registrar registrar) {
ConnectivityPlugin.registerWith(registrar);
FilePickerWeb.registerWith(registrar); FilePickerWeb.registerWith(registrar);
FirebaseCoreWeb.registerWith(registrar); FirebaseCoreWeb.registerWith(registrar);
FirebaseMessagingWeb.registerWith(registrar); FirebaseMessagingWeb.registerWith(registrar);
ImagePickerPlugin.registerWith(registrar);
SharedPreferencesPlugin.registerWith(registrar); SharedPreferencesPlugin.registerWith(registrar);
UrlLauncherPlugin.registerWith(registrar); UrlLauncherPlugin.registerWith(registrar);
VideoPlayerPlugin.registerWith(registrar); VideoPlayerPlugin.registerWith(registrar);

View File

@ -174,7 +174,7 @@ class AccountHelper {
String token) async { String token) async {
final response = final response =
await APIRequest.withoutLogin("account/check_password_reset_token") await APIRequest.withoutLogin("account/check_password_reset_token")
.addString("token", token) .addString("reset_token", token)
.execWithThrowGetObject(); .execWithThrowGetObject();
return ResCheckPasswordToken( return ResCheckPasswordToken(
@ -190,7 +190,7 @@ class AccountHelper {
static Future<void> changeAccountPassword( static Future<void> changeAccountPassword(
String token, String password) async => String token, String password) async =>
await APIRequest.withoutLogin("account/reset_user_passwd") await APIRequest.withoutLogin("account/reset_user_passwd")
.addString("token", token) .addString("reset_token", token)
.addString("password", password) .addString("password", password)
.execWithThrow(); .execWithThrow();

View File

@ -28,6 +28,7 @@ class ServerConfigurationHelper {
Version.parse(response["min_supported_mobile_version"]), Version.parse(response["min_supported_mobile_version"]),
termsURL: response["terms_url"], termsURL: response["terms_url"],
privacyPolicyURL: response["privacy_policy_url"], privacyPolicyURL: response["privacy_policy_url"],
contactEmail: response["contact_email"],
playStoreURL: response["play_store_url"], playStoreURL: response["play_store_url"],
androidDirectDownloadURL: response["android_direct_download_url"], androidDirectDownloadURL: response["android_direct_download_url"],
notificationsPolicy: NotificationsPolicy( notificationsPolicy: NotificationsPolicy(

View File

@ -136,6 +136,7 @@ class ServerConfig {
final Version minSupportedMobileVersion; final Version minSupportedMobileVersion;
final String termsURL; final String termsURL;
final String privacyPolicyURL; final String privacyPolicyURL;
final String contactEmail;
final String playStoreURL; final String playStoreURL;
final String androidDirectDownloadURL; final String androidDirectDownloadURL;
final NotificationsPolicy notificationsPolicy; final NotificationsPolicy notificationsPolicy;
@ -148,6 +149,7 @@ class ServerConfig {
@required this.minSupportedMobileVersion, @required this.minSupportedMobileVersion,
@required this.termsURL, @required this.termsURL,
@required this.privacyPolicyURL, @required this.privacyPolicyURL,
@required this.contactEmail,
@required this.playStoreURL, @required this.playStoreURL,
@required this.androidDirectDownloadURL, @required this.androidDirectDownloadURL,
@required this.notificationsPolicy, @required this.notificationsPolicy,
@ -158,6 +160,7 @@ class ServerConfig {
}) : assert(minSupportedMobileVersion != null), }) : assert(minSupportedMobileVersion != null),
assert(termsURL != null), assert(termsURL != null),
assert(privacyPolicyURL != null), assert(privacyPolicyURL != null),
assert(contactEmail != null),
assert(playStoreURL != null), assert(playStoreURL != null),
assert(androidDirectDownloadURL != null), assert(androidDirectDownloadURL != null),
assert(notificationsPolicy != null), assert(notificationsPolicy != null),

View File

@ -0,0 +1,45 @@
import 'package:comunic/helpers/server_config_helper.dart';
import 'package:comunic/ui/widgets/copy_icon.dart';
import 'package:comunic/utils/flutter_utils.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart';
import 'package:settings_ui/settings_ui.dart';
import 'package:url_launcher/url_launcher.dart';
/// About application settings
///
/// @author Pierre Hubert
class AboutApplicationSettings extends StatelessWidget {
@override
Widget build(BuildContext context) => SettingsList(
sections: [
_buildGeneralSection(context),
],
);
/// General section
SettingsSection _buildGeneralSection(BuildContext context) => SettingsSection(
tiles: [
SettingsTile(
title: tr("Privacy policy"),
onPressed: (c) => launch(srvConfig.privacyPolicyURL),
),
SettingsTile(
title: tr("Terms of Use"),
onPressed: (c) => launch(srvConfig.termsURL),
),
SettingsTile(
title: tr("Contact us"),
subtitle: srvConfig.contactEmail,
trailing: CopyIcon(srvConfig.contactEmail),
),
SettingsTile(
title: tr("About this application"),
subtitle: isIOS ? null : tr("Learn more about us"),
onPressed: (_) => showAboutAppDialog(context),
)
],
);
}

View File

@ -1,3 +1,4 @@
import 'package:comunic/ui/routes/settings/about_settings.dart';
import 'package:comunic/ui/routes/settings/account_image_settings.dart'; import 'package:comunic/ui/routes/settings/account_image_settings.dart';
import 'package:comunic/ui/routes/settings/account_privacy_settings.dart'; import 'package:comunic/ui/routes/settings/account_privacy_settings.dart';
import 'package:comunic/ui/routes/settings/account_security_settings.dart'; import 'package:comunic/ui/routes/settings/account_security_settings.dart';
@ -132,13 +133,21 @@ class __AccountSettingsBodyState extends State<_AccountSettingsBody> {
onBuild: () => AccountPrivacySettings(), onBuild: () => AccountPrivacySettings(),
), ),
// Privacy settings // Application settings
_SettingsSection( _SettingsSection(
title: tr("Application settings"), title: tr("Application settings"),
subtitle: tr("Manage local application settings"), subtitle: tr("Manage local application settings"),
icon: Icons.smartphone, icon: Icons.smartphone,
onBuild: () => ApplicationSettings(), onBuild: () => ApplicationSettings(),
), ),
// About settings
_SettingsSection(
title: tr("About this application"),
subtitle: tr("Learn more about us"),
icon: Icons.info,
onBuild: () => AboutApplicationSettings(),
),
]; ];
@override @override

View File

@ -1,5 +1,4 @@
import 'package:comunic/helpers/preferences_helper.dart'; import 'package:comunic/helpers/preferences_helper.dart';
import 'package:comunic/helpers/server_config_helper.dart';
import 'package:comunic/ui/widgets/async_screen_widget.dart'; import 'package:comunic/ui/widgets/async_screen_widget.dart';
import 'package:comunic/ui/widgets/settings/header_spacer_section.dart'; import 'package:comunic/ui/widgets/settings/header_spacer_section.dart';
import 'package:comunic/utils/flutter_utils.dart'; import 'package:comunic/utils/flutter_utils.dart';
@ -7,7 +6,6 @@ import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart'; import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:settings_ui/settings_ui.dart'; import 'package:settings_ui/settings_ui.dart';
import 'package:url_launcher/url_launcher.dart';
/// Application settings /// Application settings
/// ///
@ -36,7 +34,6 @@ class _ApplicationSettingsState extends State<ApplicationSettings> {
sections: [ sections: [
HeadSpacerSection(), HeadSpacerSection(),
_buildAppearanceSection(), _buildAppearanceSection(),
_buildGeneralSection(),
_buildDebugSection() _buildDebugSection()
], ],
); );
@ -56,26 +53,6 @@ class _ApplicationSettingsState extends State<ApplicationSettings> {
], ],
); );
/// General section
SettingsSection _buildGeneralSection() => SettingsSection(
title: tr("General"),
tiles: [
SettingsTile(
title: tr("Privacy policy"),
onPressed: (c) => launch(srvConfig.privacyPolicyURL),
),
SettingsTile(
title: tr("Terms of Use"),
onPressed: (c) => launch(srvConfig.termsURL),
),
SettingsTile(
title: tr("About this application"),
subtitle: isIOS ? null : tr("Learn more about us"),
onPressed: (_) => showAboutAppDialog(context),
)
],
);
/// Debug section /// Debug section
SettingsSection _buildDebugSection() => SettingsSection( SettingsSection _buildDebugSection() => SettingsSection(
title: tr("Debug features"), title: tr("Debug features"),

View File

@ -61,6 +61,7 @@ class TourRouteState extends State<TourRoute> {
try { try {
await PushNotificationsHelper.configure( await PushNotificationsHelper.configure(
context, PushNotificationsStatus.FIREBASE); context, PushNotificationsStatus.FIREBASE);
areNotificationsConfigured = true;
} catch (e, s) { } catch (e, s) {
logError(e, s); logError(e, s);
} }

View File

@ -80,7 +80,7 @@ class _AuthorizedGroupPageScreenState
// Add group conversations // Add group conversations
..insertAll( ..insertAll(
2, (_group.isForezGroup ? 2 : 1),
_group.conversations _group.conversations
.map((e) => _GroupPageTab( .map((e) => _GroupPageTab(
widget: (c) => GroupConversationSection(conv: e), widget: (c) => GroupConversationSection(conv: e),

View File

@ -589,9 +589,7 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
}, },
icon: Icon( icon: Icon(
Icons.face, Icons.face,
color: _showEmojiPicker color: _showEmojiPicker ? _senderColor : null,
? (_conversation.color ?? Colors.blue)
: null,
), ),
), ),
], ],
@ -617,8 +615,8 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
); );
Widget _buildEmojiContainer() => EmojiPicker( Widget _buildEmojiContainer() => EmojiPicker(
bgColor: _conversation.color ?? Colors.blue.shade900, bgColor: _senderColor,
indicatorColor: _conversation.color ?? Colors.blue.shade900, indicatorColor: _senderColor,
rows: 3, rows: 3,
columns: 7, columns: 7,
onEmojiSelected: (emoji, category) { onEmojiSelected: (emoji, category) {

View File

@ -124,7 +124,7 @@ class ConversationMessageTile extends StatelessWidget {
break; break;
case _MenuChoices.COPY_URL: case _MenuChoices.COPY_URL:
copyToClipboard(context, message.message.content); copyToClipboard(context, message.file.url);
break; break;
case _MenuChoices.GET_STATS: case _MenuChoices.GET_STATS:

View File

@ -35,30 +35,40 @@ class PresenceCalendarWidget extends StatefulWidget {
} }
class _PresenceCalendarWidgetState extends State<PresenceCalendarWidget> { class _PresenceCalendarWidgetState extends State<PresenceCalendarWidget> {
CalendarController _calendarController; var selectedDay = DateTime.now();
@override @override
void initState() { void didUpdateWidget(covariant PresenceCalendarWidget oldWidget) {
super.initState(); super.didUpdateWidget(oldWidget);
_calendarController = CalendarController();
}
@override if (oldWidget.selectedDay != widget.selectedDay) {
void dispose() { selectedDay = widget.selectedDay;
_calendarController.dispose(); setState(() {});
super.dispose(); }
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return TableCalendar( return TableCalendar(
calendarController: _calendarController, firstDay: DateTime.utc(2020, 01, 01),
lastDay: DateTime.now().add(Duration(days: 365 * 2)),
selectedDayPredicate: (d) => d == selectedDay,
locale: "fr_FR", locale: "fr_FR",
weekendDays: [], weekendDays: [],
onHeaderTapped: _pickDate, onHeaderTapped: _pickDate,
builders: CalendarBuilders(dayBuilder: _dayBuilder), calendarBuilders: CalendarBuilders(
defaultBuilder: _dayBuilder,
todayBuilder: _dayBuilder,
selectedBuilder: _dayBuilder,
),
onDaySelected: _selectedDay, onDaySelected: _selectedDay,
availableCalendarFormats: const {CalendarFormat.month: "Mois"}, availableCalendarFormats: const {CalendarFormat.month: "Mois"},
focusedDay: selectedDay,
onPageChanged: (s) {
setState(() {
selectedDay = s;
});
},
); );
} }
@ -70,14 +80,12 @@ class _PresenceCalendarWidgetState extends State<PresenceCalendarWidget> {
lastDate: DateTime.now().add(Duration(days: 365 * 5)), lastDate: DateTime.now().add(Duration(days: 365 * 5)),
); );
if (pickedDate != null) { setState(() {
_calendarController.setSelectedDay(pickedDate, animate: true); if (pickedDate != null) selectedDay = pickedDate;
setState(() {}); });
}
} }
Widget _dayBuilder( Widget _dayBuilder(BuildContext context, DateTime date, DateTime focusedDay) {
BuildContext context, DateTime date, List<dynamic> events) {
if (widget.presenceSet.containsDate(date)) { if (widget.presenceSet.containsDate(date)) {
// Show the number of users who are present // Show the number of users who are present
if (widget.mode == CalendarDisplayMode.MULTIPLE_USERS) if (widget.mode == CalendarDisplayMode.MULTIPLE_USERS)
@ -120,9 +128,9 @@ class _PresenceCalendarWidgetState extends State<PresenceCalendarWidget> {
); );
} }
void _selectedDay( void _selectedDay(DateTime selecteDay, DateTime focusedDay) {
DateTime day, List<dynamic> events, List<dynamic> holidays) { if (widget.onDayClicked != null) widget.onDayClicked(selecteDay);
if (widget.onDayClicked != null) widget.onDayClicked(day); setState(() {});
} }
} }

View File

@ -14,6 +14,7 @@ import 'package:comunic/utils/account_utils.dart';
import 'package:comunic/utils/conversations_utils.dart'; import 'package:comunic/utils/conversations_utils.dart';
import 'package:comunic/utils/date_utils.dart'; import 'package:comunic/utils/date_utils.dart';
import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/intl_utils.dart';
import 'package:comunic/utils/ui_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
@ -253,6 +254,7 @@ class _AboutUserEntry extends StatelessWidget {
return ListTile( return ListTile(
title: RichText( title: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle(color: darkTheme() ? null : Colors.black),
children: [ children: [
WidgetSpan( WidgetSpan(
child: Icon(icon, size: 15), child: Icon(icon, size: 15),

View File

@ -1,6 +1,6 @@
import 'package:comunic/helpers/preferences_helper.dart'; import 'package:comunic/helpers/preferences_helper.dart';
import 'package:comunic/main.dart'; import 'package:comunic/main.dart';
import 'package:comunic/models/config.dart';
import 'package:comunic/ui/routes/full_screen_image.dart'; import 'package:comunic/ui/routes/full_screen_image.dart';
import 'package:comunic/ui/widgets/dialogs/auto_sized_dialog_content_widget.dart'; import 'package:comunic/ui/widgets/dialogs/auto_sized_dialog_content_widget.dart';
import 'package:comunic/ui/widgets/dialogs/cancel_dialog_button.dart'; import 'package:comunic/ui/widgets/dialogs/cancel_dialog_button.dart';
@ -268,10 +268,11 @@ bool isTablet(BuildContext context) =>
void showAboutAppDialog(BuildContext context) { void showAboutAppDialog(BuildContext context) {
showAboutDialog( showAboutDialog(
context: context, context: context,
applicationName: "Comunic", applicationName: config().appName,
children: <Widget>[ children: <Widget>[
Text( Text(
tr("Comunic is a free and OpenSource social network that respect your privacy."), tr(config().appQuickDescription) ??
tr("Comunic is a free and OpenSource social network that respect your privacy."),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
SizedBox( SizedBox(

View File

@ -21,7 +21,7 @@ packages:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.5.0" version: "2.6.1"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -56,7 +56,7 @@ packages:
name: chewie name: chewie
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.2.0"
chewie_audio: chewie_audio:
dependency: "direct main" dependency: "direct main"
description: description:
@ -91,7 +91,14 @@ packages:
name: connectivity name: connectivity
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.2" version: "3.0.6"
connectivity_for_web:
dependency: transitive
description:
name: connectivity_for_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0"
connectivity_macos: connectivity_macos:
dependency: transitive dependency: transitive
description: description:
@ -133,14 +140,14 @@ packages:
name: cupertino_icons name: cupertino_icons
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.0.3"
dio: dio:
dependency: "direct main" dependency: "direct main"
description: description:
name: dio name: dio
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.0-beta7" version: "4.0.0"
emoji_picker: emoji_picker:
dependency: "direct main" dependency: "direct main"
description: description:
@ -168,70 +175,70 @@ packages:
name: ffi name: ffi
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.1.1"
file: file:
dependency: transitive dependency: transitive
description: description:
name: file name: file
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.1.0" version: "6.1.1"
file_picker: file_picker:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.0" version: "3.0.2+2"
filesize: filesize:
dependency: "direct main" dependency: "direct main"
description: description:
name: filesize name: filesize
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.4" version: "2.0.1"
firebase_core: firebase_core:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_core name: firebase_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "1.2.0"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_platform_interface name: firebase_core_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.0" version: "4.0.1"
firebase_core_web: firebase_core_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "1.1.0"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_messaging name: firebase_messaging
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "9.0.0" version: "10.0.0"
firebase_messaging_platform_interface: firebase_messaging_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_platform_interface name: firebase_messaging_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "3.0.0"
firebase_messaging_web: firebase_messaging_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_messaging_web name: firebase_messaging_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.1" version: "2.0.0"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
@ -257,7 +264,7 @@ packages:
name: flutter_colorpicker name: flutter_colorpicker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.5" version: "0.4.0"
flutter_emoji: flutter_emoji:
dependency: "direct main" dependency: "direct main"
description: description:
@ -278,7 +285,7 @@ packages:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -295,7 +302,7 @@ packages:
name: flutter_webrtc name: flutter_webrtc
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.5.8" version: "0.6.3"
html: html:
dependency: "direct main" dependency: "direct main"
description: description:
@ -309,7 +316,7 @@ packages:
name: http name: http
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.13.0" version: "0.13.3"
http_parser: http_parser:
dependency: "direct main" dependency: "direct main"
description: description:
@ -344,14 +351,21 @@ packages:
name: image_picker name: image_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.7.2+1" version: "0.7.5+3"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
image_picker_platform_interface: image_picker_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: image_picker_platform_interface name: image_picker_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.1.0"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@ -387,6 +401,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
nested:
dependency: transitive
description:
name: nested
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
octo_image: octo_image:
dependency: transitive dependency: transitive
description: description:
@ -400,7 +421,7 @@ packages:
name: package_info name: package_info
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
path: path:
dependency: transitive dependency: transitive
description: description:
@ -414,7 +435,7 @@ packages:
name: path_provider name: path_provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.2"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
@ -442,7 +463,7 @@ packages:
name: path_provider_windows name: path_provider_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.1"
pedantic: pedantic:
dependency: transitive dependency: transitive
description: description:
@ -456,14 +477,14 @@ packages:
name: permission_handler name: permission_handler
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.1.0" version: "8.0.0+2"
permission_handler_platform_interface: permission_handler_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_platform_interface name: permission_handler_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.0" version: "3.5.0"
petitparser: petitparser:
dependency: transitive dependency: transitive
description: description:
@ -505,7 +526,14 @@ packages:
name: process name: process
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.1.0" version: "4.2.1"
provider:
dependency: transitive
description:
name: provider
url: "https://pub.dartlang.org"
source: hosted
version: "5.0.0"
random_string: random_string:
dependency: "direct main" dependency: "direct main"
description: description:
@ -533,7 +561,7 @@ packages:
name: settings_ui name: settings_ui
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.0" version: "1.0.0"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
@ -568,7 +596,7 @@ packages:
name: simple_gesture_detector name: simple_gesture_detector
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.6" version: "0.2.0"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -580,14 +608,14 @@ packages:
name: source_span name: source_span
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.8.0" version: "1.8.1"
sqflite: sqflite:
dependency: "direct main" dependency: "direct main"
description: description:
name: sqflite name: sqflite
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0+2" version: "2.0.0+3"
sqflite_common: sqflite_common:
dependency: transitive dependency: transitive
description: description:
@ -629,7 +657,7 @@ packages:
name: table_calendar name: table_calendar
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.3" version: "3.0.0"
term_glyph: term_glyph:
dependency: transitive dependency: transitive
description: description:
@ -643,7 +671,7 @@ packages:
name: test_api name: test_api
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.19" version: "0.3.0"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
@ -657,7 +685,7 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.2" version: "6.0.4"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
@ -678,7 +706,7 @@ packages:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.0.3"
url_launcher_web: url_launcher_web:
dependency: transitive dependency: transitive
description: description:
@ -713,21 +741,21 @@ packages:
name: version name: version
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.1" version: "2.0.0"
video_player: video_player:
dependency: "direct main" dependency: "direct main"
description: description:
name: video_player name: video_player
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.2" version: "2.1.4"
video_player_platform_interface: video_player_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: video_player_platform_interface name: video_player_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.0" version: "4.1.0"
video_player_web: video_player_web:
dependency: transitive dependency: transitive
description: description:
@ -741,35 +769,42 @@ packages:
name: video_thumbnail name: video_thumbnail
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.5+1" version: "0.3.3"
wakelock: wakelock:
dependency: "direct main" dependency: "direct main"
description: description:
name: wakelock name: wakelock
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.0" version: "0.5.2"
wakelock_macos: wakelock_macos:
dependency: transitive dependency: transitive
description: description:
name: wakelock_macos name: wakelock_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.0" version: "0.1.0+1"
wakelock_platform_interface: wakelock_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: wakelock_platform_interface name: wakelock_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.0" version: "0.2.1+1"
wakelock_web: wakelock_web:
dependency: transitive dependency: transitive
description: description:
name: wakelock_web name: wakelock_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.0" version: "0.2.0+1"
wakelock_windows:
dependency: transitive
description:
name: wakelock_windows
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0"
web_socket_channel: web_socket_channel:
dependency: "direct main" dependency: "direct main"
description: description:
@ -783,7 +818,7 @@ packages:
name: win32 name: win32
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3" version: "2.1.1"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
@ -806,5 +841,5 @@ packages:
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
sdks: sdks:
dart: ">=2.12.0 <3.0.0" dart: ">=2.13.0 <3.0.0"
flutter: ">=1.24.0-10" flutter: ">=2.0.0"

View File

@ -11,7 +11,7 @@ description: Comunic client
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.1.5+9 version: 1.1.8+15
environment: environment:
sdk: ">=2.7.0 <3.0.0" sdk: ">=2.7.0 <3.0.0"
@ -56,7 +56,7 @@ dependencies:
flutter_emoji: ^2.2.1+1 flutter_emoji: ^2.2.1+1
# Build settings UI # Build settings UI
settings_ui: ^0.6.0 settings_ui: ^1.0.0
# Generate identicons # Generate identicons
identicon: ^0.1.1 identicon: ^0.1.1
@ -77,10 +77,10 @@ dependencies:
event_bus: ^2.0.0 event_bus: ^2.0.0
# WebRTC calls # WebRTC calls
flutter_webrtc: ^0.5.8 flutter_webrtc: ^0.6.3
# Prevent phone from auto-locking during calls # Prevent phone from auto-locking during calls
wakelock: ^0.4.0 wakelock: ^0.5.2
# Pick any kind of file # Pick any kind of file
file_picker: ^3.0.0 file_picker: ^3.0.0
@ -89,13 +89,13 @@ dependencies:
package_info: ^2.0.0 package_info: ^2.0.0
# Version manager # Version manager
version: ^1.2.0 version: ^2.0.0
# Get path to temporary files # Get path to temporary files
path_provider: ^2.0.1 path_provider: ^2.0.1
# Format file size # Format file size
filesize: ^1.0.4 filesize: ^2.0.1
# Copy content to clipboard # Copy content to clipboard
clipboard: ^0.1.2+8 clipboard: ^0.1.2+8
@ -103,35 +103,35 @@ dependencies:
# Video / Audio player # Video / Audio player
video_player: ^2.0.2 video_player: ^2.0.2
chewie_audio: ^1.1.2 chewie_audio: ^1.1.2
chewie: ^1.0.0 chewie: ^1.2.0
# Determine file mime type # Determine file mime type
mime: ^1.0.0 mime: ^1.0.0
# Create video thumbnails # Create video thumbnails
video_thumbnail: ^0.2.5+1 video_thumbnail: ^0.3.3
# Record audio file # Record audio file
record_mp3: ^2.1.0 record_mp3: ^2.1.0
# Request permissions # Request permissions
permission_handler: ^6.1.0 permission_handler: ^8.0.0+2
# Emojies picker # Emojies picker
emoji_picker: ^0.1.0 emoji_picker: ^0.1.0
# Color picker # Color picker
flutter_colorpicker: ^0.3.5 flutter_colorpicker: ^0.4.0
# Image cropper # Image cropper
image_cropper: ^1.4.0 image_cropper: ^1.4.0
# Firebase cloud messaging (for push notifications) # Firebase cloud messaging (for push notifications)
firebase_core: ^1.0.1 firebase_core: ^1.0.1
firebase_messaging: ^9.0.0 firebase_messaging: ^10.0.0
# Forez presence # Forez presence
table_calendar: ^2.3.3 table_calendar: ^3.0.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: