+91
-44
test/providers/comments_provider_test.mocks.dart
+91
-44
test/providers/comments_provider_test.mocks.dart
···················································
+806
test/services/comment_service_test.mocks.dart
+806
test/services/comment_service_test.mocks.dart
···
+12
-8
lib/screens/home/search_screen.dart
lib/screens/home/communities_screen.dart
+12
-8
lib/screens/home/search_screen.dart
lib/screens/home/communities_screen.dart
·········
+3
.gitignore
+3
.gitignore
+1
ios/Flutter/Debug.xcconfig
+1
ios/Flutter/Debug.xcconfig
+1
ios/Flutter/Release.xcconfig
+1
ios/Flutter/Release.xcconfig
+43
ios/Podfile
+43
ios/Podfile
···+generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)+raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"+raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+1
-1
ios/Flutter/AppFrameworkInfo.plist
+1
-1
ios/Flutter/AppFrameworkInfo.plist
+68
ios/Podfile.lock
+68
ios/Podfile.lock
···+- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
+115
-3
ios/Runner.xcodeproj/project.pbxproj
+115
-3
ios/Runner.xcodeproj/project.pbxproj
···1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };+16E67738C4AF07C35AA47470 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82EC9CF23352AC72F2003AAD /* Pods_RunnerTests.framework */; };+2220618238061C279E522B7E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2A2DB00FCDBEA05F362717D /* Pods_Runner.framework */; };331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };···1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };+24C909BB605D55AC18D4D709 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };+58C1A39422F3ADDA7073882C /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };+62C533E7959427EBD54BF4E0 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };+7404320A2A2665D2993CC4A9 /* 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>"; };74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };+82EC9CF23352AC72F2003AAD /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };+91248B6140D65FC329BE4089 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.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>"; };97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };···97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };+CAFF337A6DF135B15E2E5A82 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };+D2A2DB00FCDBEA05F362717D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };F2B3C8D12D0C8A5E00ABCDEF /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };·········buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;···buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;···+shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";···shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";+shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";···shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";+"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",+"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",+shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";·········+baseConfigurationReference = 58C1A39422F3ADDA7073882C /* Pods-RunnerTests.release.xcconfig */;···+baseConfigurationReference = CAFF337A6DF135B15E2E5A82 /* Pods-RunnerTests.profile.xcconfig */;······
+3
ios/Runner.xcworkspace/contents.xcworkspacedata
+3
ios/Runner.xcworkspace/contents.xcworkspacedata
+1
-3
lib/services/comment_service.dart
+1
-3
lib/services/comment_service.dart
···
+14
lib/config/environment_config.dart
+14
lib/config/environment_config.dart
······
-1
macos/Flutter/Flutter-Debug.xcconfig
-1
macos/Flutter/Flutter-Debug.xcconfig
···
-1
macos/Flutter/Flutter-Release.xcconfig
-1
macos/Flutter/Flutter-Release.xcconfig
···
+14
lib/constants/threading_colors.dart
+14
lib/constants/threading_colors.dart
···
+42
lib/widgets/status_bar_overlay.dart
+42
lib/widgets/status_bar_overlay.dart
···
+267
test/widgets/comment_thread_test.dart
+267
test/widgets/comment_thread_test.dart
···
+217
lib/services/comments_provider_cache.dart
+217
lib/services/comments_provider_cache.dart
···
+65
-396
test/providers/comments_provider_test.dart
+65
-396
test/providers/comments_provider_test.dart
··········································································································································
+19
test/test_helpers/mock_providers.dart
+19
test/test_helpers/mock_providers.dart
···
+264
lib/models/community.dart
+264
lib/models/community.dart
···
+126
lib/services/coves_api_service.dart
+126
lib/services/coves_api_service.dart
······
+518
lib/screens/compose/community_picker_screen.dart
+518
lib/screens/compose/community_picker_screen.dart
···
+686
-28
lib/screens/home/create_post_screen.dart
+686
-28
lib/screens/home/create_post_screen.dart
······
+368
test/models/community_test.dart
+368
test/models/community_test.dart
···
+269
test/screens/community_picker_screen_test.dart
+269
test/screens/community_picker_screen_test.dart
···
+339
test/screens/create_post_screen_test.dart
+339
test/screens/create_post_screen_test.dart
···+testWidgets('should enable Post button when title is entered and community selected', (tester) async {
+463
test/services/coves_api_service_community_test.dart
+463
test/services/coves_api_service_community_test.dart
···
+51
-44
lib/screens/home/post_detail_screen.dart
+51
-44
lib/screens/home/post_detail_screen.dart
···························
+4
-2
test/widget_test.dart
+4
-2
test/widget_test.dart
······
+17
-12
lib/main.dart
+17
-12
lib/main.dart
······
+3
-2
test/widgets/feed_screen_test.dart
+3
-2
test/widgets/feed_screen_test.dart
···