Releases: ProximaEPFL/proxima
Releases · ProximaEPFL/proxima
Proxima v0.4.3 (M4)
Changelog
All notable changes to this project will be documented in this file.
[0.4.3] - 2024-05-31
🚀 Features
- (README) Update app architecture diagram
- (navigation-to-map) Add map icon button in user posts and post page
- (navigation-to-map) Navigate to map in action
- (navigation-to-map) Add focus to a post from post view
- (navigation-to-map) Add focus for my posts
- (navigation-to-map) Add position to challenges ui
- (navigation-to-map) Add initial position as an optional parameter
- (navigation-to-map) Add arguments to home navigation
🐛 Bug Fixes
- (navigation-to-map) Map popup arguments with no action
- (navigation-to-map) Map view model overrides
- (navigation-to-map) Correct depth for challenges
- (navigation-to-map) Change return type to future and await all futures
- (navigation-to-map) Use the same icon for map action and map in bar
- (navigation-to-map) Removed unused viewmodel
- (navigation-to-map) No map action in comment popup
- (navigation-to-map) Add equality and hash tests
- (post-map) Limit the number of error pop ups to 1
- (map-pin-view-model) Assure that the same error popups appear when there is no location
- (map-pin-view-model) Invalidate location stream if non valid anymore
🚜 Refactor
- (README) Increase width of app diagram
- (navigation-to-map) Put the home navigation in a viewmodel
- (navigation-to-map) Remove build context from viewmodel
- (navigation-to-map) Put toLatLng in an extension function
- (navigation-to-map) Factorize the open map function
- (navigation-to-map) Make selected page a details instead
- (navigation-to-map) Add comma
- (navigation-to-map) Make focus location mandatory
- (navigation-to-map) Use LatLng instead of GeoPoint in UI
- (navigation-to-map) Remove old TODO
- (map-selection-option-chips) Delete unsused parameter
📚 Documentation
- (navigation-to-map) Add doc to new methods
- (navigation-to-map) Update map doc
- (post-map) Add documentation to the exception handling
🧪 Testing
- (navigation-to-map) Test selected page details
- (navigation-to-map) Test navigation to map from post page
- (navigation-to-map) Test map action
- (map) Add missing override in mock geolocation service
- (map-errors-fix) Add regression tests
Proxima v0.4.2 (BOTA)
Changelog
All notable changes to this project will be documented in this file.
[0.4.2] - 2024-05-29
🚀 Features
- (map pins) Created pin popup UI
- (map pin popup) Added callback functions to pin
- (map pin pop up) Passing context to the viewmodel
- (map pin pop up) Added key to the arrow button
- (map pin viewmodel) Added map pin popup key
- (map pin viewmodel) Added safety in case the context is null
- (post details) Added factory method fromFireStoreData
- (comment-count) Add post comment count view model
- (comment-count) Make UI use comment count view model
- (comment-count) Refresh the comment count when the comment list is reloaded
- (comment-count) Refresh the comment count when a comment is deleted
- (delete-comment-action) Remove assumption that user has a single comment
- (offline-vote) Issue cause investigation
- (offline) Refactor circular value to take wrapped
FutureRes
- (offline) Create the
OfflineAlert
error message - (offline) Add a proper offline timeout on circular value
- Add userID to widgets and data classes to display user avatar
- (user_centauri_points_vm) Add user centauri points view model and mock
- (user_centauri_points_vm) Add refresh function
- (challenge_view_model) Refresh on complete the centauri point of the user
- (user_centauri_points_vm) Add refresh with given centauri points
- (users_ranking_vm) Refresh centauri points of users on loading
- (users_ranking_vm) Replace centauri points refresh to use top users
- (user_avatar_details) Change fromUserData to fromUser
- (user_centauri_points_vm) Make refreshWithCentauriPointsNumber not Future
- (users_ranking_vm) Regroup centauri points updates
- (user_centauri_points_vm) Remove refreshWithCentauriPointsNumber
- (override_user_centauri_points_vm) Add addtional documentation
- (user_avatar) Improve ui logic & handle error in centauri points vm
- (user_centauri_points_vm) Use loading async state
- (user_centauri_points_vm) Remove rethrow error
- (dynamic_user_avatar) Move user avatar color refreshing in vm
- (users_ranking_vm) Refresh the user avatar of the displayed users
- (ranking_card) Use dynamic user avatar for consistency
- (post-feed) Add field to post details
- (post-feed) Add method to know is a user has commented under a post
- (post-feed) Expose if the user has commented on the posts in the feed
- (post-feed) Set the comment count blue is the user has commented on the post
- (comment) Add class to represent comment counts UI
- (comment) Add empty instance
- (post-feed) Expose the comment icon color in post comment count viewmodel
- (README) Update penpot links for milestone 4
🐛 Bug Fixes
- (map pin viewmodel) Handle the case where context is null
- (mock map page provider) Renamed confusing variable
- (map pop up) Challenge pop up should not have a content
- (map pin popup) Require title for the popup
- (info pop up) Added documentation
- (post map) Moved code into external method
- (test map pin viewmodel) Moved code in the setup
- (map pin viewmodel test) Added more doc
- Reorganized imports
- (map-pin-viewmodel) Display the correct owner in the post page
- (map-pin-pop-up) Remove arrow button on the challenge pop ups
- (map-pin-viewmodel) Mock getUser for all userId
- (map-pin-test) Add post owners to the database
- (comment-count-view-model) Set loading state while refreshing
- (comment-count) Use AsyncValue::value instead of valueOrNull
- (home-view-model-override) Also override the comment count provider
- (post-generator) Make id increment consistent
- (offline-vote) Catch the exception in the upvote repository
- (comment-count-vm) Make it not auto-dispose
- (comment-count-vm) Make its mock not auto-dispose too
- (comment-count-vm-test) Delete the comment using the correct view-model
- (android) Fix
enableOnBackInvokedCallback
warning in manifest - (user_avatar_color) Remove class UserAvatarColor
- (user_avatar) Remove unused import
- (post-feed) Set to false in map popup
- (comment) Fix the comment circular value bug
- (validation-tests) Remove duplicate test
- (new-comment-validation-test) Fix CI
- (docs) Remove wrong MS
🚜 Refactor
- (post details) Using new factory method
- (map pop up) Marker are now created in the view because they require context
- (info pop up) Removed duplicated code by creating an abstract class
- (map pin viewmodel test) Moved test
- (map) Moved post map into components
- (map-pin-test) Clean setup
- (map-pin-test) Make test function abstraction
- (map-pin-test) Rename test function
- (map-pin-test) Set parameters to be named
- (mock-map-page) Remove unused ProviderScope
- (map-pin-pop-up) Pass the mapPopUpDetails directly to the MapPinPopUp widget
- (override-pin-viewmodel) Remove unused parameter in the constructor
- (comment-count) Remove unnecessary await
- (comment-count) Remove setCount function
- (types) Spit the types from
types.dart
into separate types - (user_avatar_color) Move user avatar color computation to a separate file
📚 Documentation
- (map-test) Add documentation to the testPopUp method
- (map-pop-up-details) Add documentation for the MapPopUpDetails class
- (post details) Add documentation for the class and factory
- (comment-count) Add documentation to view-model
- (comment-count) Improve documentation about auto-dispose
- Add documentation to MockPostCommentCountViewModel
- (circular-value) Update documentation to accomodate
future
refactor - (user_avatar_details) Improve class argument documention
- (readme) First version of polished readme
- (readme) Screenshots spacing
- (comment) Explain query limit for hasUserCommentedUnderPost
- (new-post-validation-test) Rename group description
🎨 Styling
- (map-pin-viewmodel) Remove an unused variable
- (map-pin-test) Remove unnecessary refresh
- (map-pin-test) Remove unnecessary pin getting
- (comment-count-test) Reuse already existing variable
🧪 Testing
- (pin viewmodel) Added context to the override
- (map pin viewmodel) Changed existing tests so that they work with the new features
- (map) Added provider scope with no pin viewmodel override
- (map pin viewmodel) New test that checks the behaviour of the callback function
- (map pin viewmodel) New callback test
- (map-pin-test) Add tests for myPosts and challenges
- (map-pin) Check popup content
- (comment-count) Verify comment count update on navigation
- (comment-count-vm) Test for refresh after comment list refresh
- (comment-count-vm) Test for refresh after comment deletion
- (offline-vote) Add
MockErrorFirebaseTransaction
for testing errors - (offline-vote) Regression test using
MockErrorFirebaseTransaction
- (error-refresh) Fix test using the actual displayed text
- (offline) Test the new offline alert dialog when circular timeout
- (circular-value) Use
Durations.short1
in tests - (circular-value) Add the optional
builder
parameter tocircularValueProvider
- (user_centauri_points_vm) Add unit tests
- (user_centauri_points_vm) Add integration test
- (comment_details) Use isNot(equals()) matcher for inequality
- (ranking_element_details) Use isNot(equals()) matcher for inequality
- (user_centauri_points_vm) Remove used user repository in unit tests
- (post_comment) Fix mock comment details according to the associated comment
- (provider_ranking) Wrap MaterialApp with UncontrolledProviderScope
- (post-feed) Update hash test of post details
- (post-feed) Update comment repository mock
- (post-feed) Add test for the method
- (post-feed) Mock the comment repositories for the unit tests
- (post-feed) Add test for exposing if the user has commented under a post
- (comment) Add tests for the data class CommentCountDetails
- (post-feed) Update mock comment count view model
- (post-feed) Update expected comment count
- (post-feed) Add test for the exposing of isIconBlue
- (post-feed) Add mock data for comment count details
- (create-account-validation-test) Add tests for inequality
- (new-comment-validation) Test NewCommentValidation class overrides
⚙️ Miscellaneous Tasks
- (release) Check that tag does not already exist
- Bump app version to v0.4.1
- Bump project version to v0.4.2
Fîx
- (map-pin-test) Test for the correct user in the post page
Opt
- (comment-count-vm) Make refresh closer to the point where the new posts has been fetched
Proxima v0.4.1
Changelog
All notable changes to this project will be documented in this file.
[0.4.1] - 2024-05-24
🚀 Features
- (milestone-3-github-project) Add milestone milestone 3 project board
- (milestone-3-github-project) Updated project
- (github-project) Use new way of marking user stories
- (logo_progress_indicator) Add custom progress indicator
- (logo_progress_indicator) Add the new progress indicator to the app
- (profile) Sort posts from lattest to oldest
- (profile) Add publication time field to user post details
- (profile) Sort the user posts on the profile page
- (profile) Update hash and == test of user posts
- (profile) Make publication time random
- (map-selection) Add view-model for option selection
- (map-selection) Connect view-model to ui
- (map-selection) Add 'my posts' getting logic
- (map) Add provider with mock firestore and position
- (post-generator) Add createUserPosts function
- (map-selection) Add 'challenges' getting logic
- (mock-homepage) Add additionalOverrides parameter
- (map-options) Add 'refresh' method to pin view model
- (ranking) Add navigation to empty ranking page
- (ranking_element_details) Add the data class & tests
- (ranking_details) Add the data class & tests
- (ranking_element_details) Add user username to ranking element details
- (ranking_details) Add checking & documentation of null userRank
- (ranking) Add ranking UI
- (ranking_card) Add static const text ---
- (ranking_card) Use => return syntax for onTapUserPopUp
- (ranking_widget) Bring mock data creation closer for easier view model integration
- (ranking_card) Add dark mode colors
- (ranking_card) Improve readability with ? and ?? operators on userRankText
- (ranking_card) Improve readability of cardColor
- (comment) Add publication time field
- (profile) Sort user comments from latest to oldest
- (profile) Add test for single comment case
- (ranking-vm) Add the
getTopUsers
method to theUserRepositoryService
- (ranking-vm) Tack the new viewmodel for ranking
- (ranking-vm) Add the full code for users ranking viewmodel
- (ranking-vm) Add the refresh feature to rankings
- (ranking-vm) Convert ranking widget to get a ranking details arg
- (ranking-vm) Await both futures at the same time
- (challenge-refresh-page) Show refresh page
🐛 Bug Fixes
- (loading_icon_button) Revert logo progress indicator
- (logo_progress_indicator) Use private static const for asset path
- (map-options) Remove active challenge pins
- (map-options) Refresh pins on post deletion
- (map-options) Refresh pins on post creation
- (map-options) Refresh pins on challenge completion
- (navigation_bar_routes) Add const to RankingWidget creation
- (ranking_details_test) Use generated user in test
- (ranking-ui) Move static const at the top of the class
- (ranking_card) Put user popup function within the build method
- (ranking_card) Put card widget content in final variable
- (ranking_card) Use theme font size & reduce SizedBox width for rank text
- (map-options-test) Remove unnecessary tester.tap
- (fake-post) CreateUserPost creates a post with the correct geohash
- (create-account) Remove unused variable
- (profile) Use sorted instead of ..sort for consistency with user post viewmodel
- (comment) Add default value for publication time
- (test) Change MockChallengeViewModel to AutoDisposeAsyncNotifier
- (challenge-tests) Add await before setPostsFirestore
- (imports) Fix import after moved package
- (test) Import ranking correctly
- (profile) Add const and remove unused var
- (new_post_form) Revert postbutton to Expanded in row
- (more-e2e) Use corrected navigation enum class name
🚜 Refactor
- (feed-sort) Move view model to 'option_selection' package
- (feed-sort) Abstract view-model logic to an abstract class
- (map-details) Remove selectOption unusued attribute
- (map-pin) Move nearby posts getting logic to a function
- (map-pin) Abstract post to map pin details conversion to a function
- (map-options) Use a map for keys
- (map-options-test) Abstract test beginning in function
- (map-options-test) Abstract pins-posts comparison in function
- (map-options-test) Merge nearby and myPosts tests
- (map-options-test) Abstract testing an option to a function
- (map-options-test) Put variable setup closer to their tests
- (map-options-test) Replace magic constant by named 'completedChallengeIdx' one
- (map-options) Make pin view-model auto-disposed
- (map-options-test) Use full home page instead of map screen only
- (map-options-test) Abstract navigation tests to a function
- (ranking_card) Move constructor parameter closer to the constructor
- (ranking_card) Set static const variable to private
- (home-providers) Duplicate providers instead of adding additionalOverrides parameter
- (map-options-test) Rename testOption to testCurrentSelectionOptionAndPins
- (map-options-test) Use find.byType instead of find.byKey
- (map-options) Use geolocationService:getCurrentPosition
- (map-options-test) Remove userPost from challenges
- Rename PublicationHeader to PostCardHeader and move it
- Move user profile pop up out
- (user-pop-up) Use body large font for pseudo
- (create-account) Update min and max username length
- (create-account) Reduce max name length in tests and regex
- (test-create-account) Add var for min and max length
- (challenges) Replace AsyncNotifier by AutoDisposeAsyncNotifier
- (challenge-viewmodel-test) Centralize setUp
- (challenge-tests) Make var final
- (ranking-ui) Move components to a separate directory
- (more-e2e) Make generation function more concise
- (mock-geopoint) Typo in variable name
- (more-e2e) Create the post generator in the setup
- (more-e2e) Separate helper functions into another file
- (profile) Remove badges
- (map) Remove heatmap
- (profile) Remove settings icon
- (new-post) Remove settings button
- Remvoe NotImplemented class
- Rename NavigationBarRoutes
- (test) Replace NavigationBarRoutes
- (challenge-refresh-page) Use error refresh page everywhere
- (challenge-refresh-page) Name constants
- (cahllenge-refresh) Simplify refresh function
- (more-e2e) Put helper functions inside a class
📚 Documentation
- (profile) Correct typo
- (map-options-test) Add documentation to helper functions
- (map-options-test) Improve testing documentation
- (ranking_details) Add documentation for ranking details
- (ranking-ui) Fix documentation saying class instead of widget
- (ranking_widget) Add TODO view model integration on rankingDetails
- (map-options-view-model) Add class documentation
- (map-options) Add class documentation to MapSelectionOptionChips)
- (new-post) Add class documentation to NewPostViewModel
- (e2e-test) Add doc to helper functions
- (create-account-vm) Update doc with new min and max string lengths
- (challenge-viewmodel) Add justification for AutoDisposeAsyncNotifier<List>
- (ranking-vm) Fix comments in tests
- (ranking-vm) Documentation of
RankingPage
- (more-e2e) Document goToPoint
🎨 Styling
- Organise imports alphabetically
- (map-test) Remove unused import
🧪 Testing
- (profile) Add test to check the ordering user posts on the profile page
- (profile) Add function to get corresponding post firstore from post details
- (profile) Use fake firestore instance
- (profile) Add test for single post case
- (profile) Add test for empty posts case
- (map-options) Verify the default option is correct
- (map-options) Verify nearby posts pins
- (map-options) Verify user posts pins
- (map-options) Verify behaviour before clicking on any chip
- (map-options) Test all options twice for more robustness
- (map-options) Test 'Challenges' option
- (map-options) Add regression test for pin refresh on post creation
- (map-options) Add regression test for pin refresh on post deletion
- (map-options) Add regression test for pin refresh on challenge completion
- (ranking) Add test keys
- (ranking) Add mock data for ranking page
- (ranking_widget) Add static test
- (ranking_list) Add static test
- (ranking_list) Remove color check
- (ranking_list) Wrap test in group and rename test
- (ranking_widget) Wrap test in group and rename test
- (e2e-test) Add a challenge user flow
- (e2e-test) Test that points are given out on challenge completion
- (e2e-test) Test posting a comment
- (e2e-test) Test deleting a comment
- (e2e-test) Test distance updates with intermediate positions
- (e2e-test) Use regex to match the description
- (comment) Update mocks to take publication time
- (comment) Update hash and == tests with publication time
- (profile) Add test to check the ordering of user comment details
- (profile) Add test for empty user comments case
- (challenges) Test challenge distance update on move and refresh
- (ranking-vm) The
getTopUsers
method returns correctly with not enough users - (ranking-vm) Ranking viewmodel provider override setup up
- (ranknig-vm) Expect correct number of users returned
- (ranking-vm) Testing logged in user has correct values
- (ranking-vm) Correct values and ordering from viewmodel
- (ranking-vm) Test for correct refresh of viewmodel
- (ranking-vm) Add a test that combines UI and viewmodel ranking
- (ranking-vm) Use
overrideWithValue
to "allow better code homogeneity" - (ranking-vm) Use the
hasLength
matcher - (ranking-vm) Use
isSorted
instead ofreduce
>= - (ranknig-vm) Use
isNot(equals(.))
matcher instead of operator - (ranking-vm) Abstract the
rankingPageMockApp
intoprovider_ranking.dart
- (ranking-vm) Use
hasLength
matcher - (ranking-vm) Use
hasLength
matcher - (ranking-vm) Alternative to reduce in testing
- (challenge-refresh-page) Add a regression test
- (challenge-refresh-page) Fi...
Proxima v0.3.2 (M3)
Changelog
All notable changes to this project will be documented in this file.
[0.3.2] - 2024-05-17
🚀 Features
- (pubspec) Add a simple application description
- (map_pin_view_model) Add map pin view model
- (map_markers_view_model) Add map markers view model
- (post_map) Add markers to the post map
- (map_pin_view_model_integration_test) Add integration test for the map pin view model
- (map) Custom mylocation button
- (map) Camera follows user
- (map) Stop following on user gesture
- (mock) Update mockMapViewModel
- (release-ci-fix) Define release signingConfig
- (release-ci-fix) Import secret certificate in build workflow
- (release-ci-fix) Put instructions on key.properties to work locally
- (release-ci-fix) Import certificate in release ci
- (release-ci-fix) Clarify alias default
- (logo) Replace old logo file with new design from GDrive
- (logo) Use the new logo on login page
- (logo) Add shadow to logo on login page
- (color) Set the color seed to the blue in the proxima logo
- (pubspec) Add
flutter_launcher_icons
dependency - (logo) Use the application logo for android app
- (pubspec) Add the
flutter_native_splash
dependency - (splash) Generate the splash screen using logo
- (splash) Configure splash screen using the app icon
- (splash) Introduce the splash screen handling in
main.dart
- (app) Set app display name to "Proxima"
- (splash) Add splash delay + icon to png
- (comment-details) Add ownerUid
- (post-details) Add ownerUid
- Add user avatar details
- (user-avatar) Make view-model return UserAvatarDetails
- Add linear segmented color map
- (user-avatar) Make user avatar use a dynamic colour
- (color-map) Use HSV colours for better interpolation
- (user-avatar) Make gradient depend on theme brightness
- (color-map) Make class immutable
- Add a pop-up for user profiles
- (publication-header) Create a user profile pop-up when clicking on the user name or profile picture
- (user-profile-pop-up) Add avatar
- (secret-maps-key) Place api keys in api-keys.json
- (secret-maps-key) Import api-keys in CI
- (build-ci-fix) Make build process more verbose
- (build-ci-fix) Remove caching to see what happens
- (build-ci-fix) Try using latest flutter version
- (build-ci-fix) Use latest kotlin gradle plugin version
- (README) Update penpot links
- (comment) Add mode to represent a ref to a user comment
- (comment) Add repository to get references to user comments
- (comment) Add provider for user comment repoository
- (comment) Add mock for user comment data
- (comment) Add mock generator for user comment firestore
- (comment) Add generator class to get a non existing document
- (comment) Remove unecessary firestore as function parameter
- (comment) Update new comment viewmodel with the user comment repository
- (personal comments viewmodel) User comment data class
- (user comments viewmodel) First implementation of the viewmodel
- (user comments viewmodel) Added the provider
- (user comment viewmodel) Implemented widget that will display the comments
- (user comment viewmodel) Added the user comments widget to the profile page
- (profile-comments) Display user profile comments properly
- (comment) Add global comment repository to abstract post and user comments
- (comment) Add method to delete all comments
- (comment) Use the global comment repository
🐛 Bug Fixes
- Dart analyzer fixes due to refactoring
- (format) Apply dart format suggestions
- (todos) Clean stale/done todos
- (challenge_repository_service) Filter already done post challenges locally
- (challenge_repository_test) Use maxActiveChallenges variable instead of 3
- (challenge_repository_service) Remove string comparison of post id
- (map_pin_view_model) Use camelCase for postRepository
- (post_map) Use one-liner notation for mapMarkersNotifier.updateMarkers
- (documentation) Replace // by ///
- (doc) Replace // by /// and add comments
- (doc) Replace // by ///
- (doc) Replace // by ///
- (tests) Move MockGoogleMapController
- (test) Fix typo
- (tests) Fix typo in geolocationService
- (fake) Remove implementation in override
- (map-ui) Move FAB to top right
- (test) Simplify test of camera
- (tests) Discard map camera tests
- (mapViewModel) Discard getter followUser
- (release-ci-fix) Create keystore directory
- (release-ci-fix) Ignore garbage in base64 decode
- (release-ci-fix) Import properties to the correct place
- (release-ci-fix) Echo correctly
- (challenge repo) Moved repeated invocations to a variable
- Renamed files and enums so that their names match
- (test) Reordered imports
- (loading button) Revert changes
- (loading button) Revert changes
- (post viewmodel) Removed dynamic type
- (post score functions) Removed unused parameters
- (post score functions) Removed unused parameter
- (circular value) Removed unused parameters
- (post sorting service) Prefer conditional expression
- (upvote repo service) Prefer conditional expression
- (upvote repo service) Avoid nested conditional expressions
- (upvote repo service) Current state as a method and not a variable
- (profile page) Removed redundant 'async' keyword
- Passed sync function where they are expected
- (logout button) Passed a sync function where it was expected
- (post feed viewmodel) Combine both future
- (post score functions) Gave the parameter a clear name
- (upvote repo service) Reworked logic of the code
- (post sorting service) Reworked code logic
- (analysis) Drop disruptive DCM rule
- Revert the functions back to async ones
- (post feed viewmodel) Removed unnecessary type specification
- (post sorting service) Reworked code logic
- (post feed viewmodel) Removed unnecessary type specification
- (map pin viewmodel) Added blank line before return
- Added comments in empty blocks
- Added return statment in empty blocks
- (profile page) Revert file
- (post feed viewmodel) Restored deleted comment
- (user-avatar) Remove unnecessary import
- (post sorting service) Renamed function
- (post sorting service) Refined documentation
- (publication-header) Fix wrong widget ordering
- Remove unused value
- (secret-maps-key) Use snake case and echo correctly
- (tests) Add pump and settle
- (test-map) GetCurrentPosition is called twice
- (test-map-ui) Use mapWidgetWithPins
- (test) Rename latLng to latlng
- (comment) Add missing trailing commas
- (comment) Make user comment model classes const
- (comment) Use await to be more readable
- (comment) Remove useless catch
- (user comment viewmodel) Typo for the ID attribute
- (user comment viewmodel) Removed mock comments from profile page
- (user profile viewmodel) Fixed issue where the comment was not deleted in the post feed
- (profile user comments) Added trailing comma
- (user comment details) Reordered arguments for clarity
- (user comment viewmodel) Refined documentation
- (user comment viewmodel) Renamed function argument
- (mock provider profile page) Simplified the overrides
- (comment) Correct typo in repository name
- (comment) Correct typo in comment
- (profile-comments) Use class name without typo in tests
- (comment) Use the real comment id in user comment
- (comment) Remove the referencing logic from the viewmoddel
- (comment) Reduce code duplication in mock
- (comment) Remove unused import
- (profile-comments) Resolve merge conflicts
- (comment) Rename mock function generators
- (comment) Await in parallel for comment deletion
- (comment) Make deletion comment code more consice
- (comment) Use write batch to delete comment
- (comment) Add deleteAllComments mock method
- (comment) Use the global comment repository
- (comment-generator) Use owner id passed in paramter
- (comment) Use comment generator to add comments
- (comment) Use add comment function
- (comment) Correct typo
🚜 Refactor
- Single directory for async related helper components
- Types util to correct directory
KeyValueListBuilder
name + emplacement + pattern- Types util to new helper directory
- Move user feedback related components to common directory
CentauriSnackBar
as a widget class instead of global function- Components/layout directory for layout related helper widgets
firebase_options
to new utils directory- Proxima app to own file in view
- Create account page to its own directory
- Option widgets grouped in
options
components directory - Home content now with home page (locality of behavior)
- Rename home page top bar to
HomeTopBar
CommentCount
widget follows widget build conventionsPostHeader
widget follows widget build conventionsPostVotes
widget follows widget build conventions- Authentification logged in user to
AuthLoggedInUser
ChallengeDetails
UI data classCommentDetails
UI data classCreateAccountValidation
UI validation classNewCommentValidation
UI validation classNewCommentValidation
UI validation class- All data validaiton class to
validation
directory - Standardization
Details
suffix UI data class UserProfileDetails
UI data class- Standardization of services
- Standardization of view model providers
- Use correct widget type (not always
HookConsumerWidget
) - Respect and enforce types name and build for Widgets
- Page/component/* is only used in that page or move it to global component
- (tests) Use new directory structure and file names in test
- Move
PostScoreFunction
typedef with actual functions definitions - (map_viewModel) Move map related view models to map folder
- (map_view_model_test) Move map view model tests to map folder
- *(map_markers_...
Proxima v0.3.1
Changelog
All notable changes to this project will be documented in this file.
[0.3.1] - 2024-05-10
🚀 Features
- (githubm-project-v2) Add project data
- (post-deletion) Feed gets refreshed on post delete
- (end2end) Check post in profile page and
- (end2end) Post deletion flow
- (recursive-deletion) Delete subcollections of posts
- (recursive-deletion) Delete all upvotes of a comment
- (comment) Add viewmodel for exposing the comments under a post
- (comment) Add refresh method
- (comment) Add the provider for the comment viewmodel
- (comment) Sort the comments from newest to oldest
- (comment) Display comments under the post
- (comment) Make the postpage refreshable to refresh the list of comments
- (comment) Add mock comment viewmodel
- (comment) Add a method to create a CommentPost from data
- (challenge-repository) [breaking] Make completeChallenge return the Centauri points added
- Add a snackbar showing the number of Centauri won
- (challenges) Display snackbar when clicking on an active challenge
- (points-snackbar) Make snackbar behaviour to be floating
- (challenge-repository) Add a mock
- (feed) Put challenges always on top
- (post-overview) Add isChallenge attribute
- (post-overview) Add a border to challenge posts
- (post-feed) Remove completed challenges from the top of the feed
- (post-page) Reload feed when popping a challenge view
- (challenge-generator) Add generateFromPostId method
- (personal_user_avatar) Add personal user avatar widget based on profile viewmodel
- (dynamic_user_avatar) Add dynamic user avatar view model
- (dynamic_user_avatar_view_model) Remove code duplication
- (challenge-logout) Add a uid provider that is never null
- (comment) Add class to represent the state of adding a comment
- (comment) Add the viewmodel for adding comments
- (comment) Add provider for the new comment view model
- (comment) Make tryAddComment returns if the comment was added successfuly
- (comment) Add a reset method to the view model to clear the state
- (comment) Link the ui to the new comment view model
- (time-service) Create the human time service
- (time-service) Add types and implementation for getting current DateTime
- (time-service) Provide the current datetime to service
- (time-service) Add interfaces and API for service
- (time-service) Implementation of time service interface API
- (time-service) Remove old date time usage from UI
- (time-service) Use of the new time service in UI
- (time-service) Replace old private function calls by new values
- (time-service) Actually use the
currentDateTimeCallback
arg for timeago clock - (time-dists) Use expectation testing instead of search testing
- (map) Added a viewmodel for custom map pins
🐛 Bug Fixes
- (recursive-deletion) Delete upvotes before comments
- (recursive-deletion) Delete single comment correctly
- (recursive-deletion) Check for comment existence before deletion
- (comment) Make the return type of build to be Future
- (comment) Put the real comment count when create the post overview
- (comment) Check for the real number of comments under a post
- (comment) Use the available setUsersFirestore function
- (comment) Check that the actual comments are sorted in the intuitive order
- (comment) Check that no comments are exposed when a comment is added to the database and no refesh has been called
- (comment) Remove unecessary mock override
- (feed-tests) Make tests use a mock challenge repository and userId
- (dynamic_user_avatar) Remove unused parameter bottom bar comment
- (dynamic_user_avatar_view_model) Throw exception when user not logged and input user is null
- (challenge-logout) Use valid uid provider in challenge view-model
- (challenge-logout) Circular value searches for debug text inside message.
- (challenge-logout) Use validUid for completeChallenge
- (profile-viewmodel) Error text for no user
- (valid-uid) Use valid uid in account creation viewmodel
- (comment) Correct error message
- (comment) Make the content error message public
- (comment) Remove paraphrasing comments
- (comment) Remove useless dashes
- (comment) Make content field persitent when the user navigates to another page
- (time-service) Import problem after merging
- (recursive-deletion) Use new upvote repository constructors
- (tests) Broken tests related to dynamicUserAvatar
- (map) Added comments for the new MapPin class
- (map) Moved map_pin.dart under lib/model/ui
- (map) Change pin.id type to MarkerId
- (map) Moved MapPin test file under test/model/ui
- (map) Changed "for loop" to "map"
- (map) Applied remarks on map pin test file
- (map) Refractored duplicate code
- (map) MapPinProvider is now an AsyncNotifierProvider
- (map) Made callback function non-nullable
- (map) Made generateMapPins() static
- (map) Better error management for the map pins and the live location.
- (tests) Consistent format on
ProviderScope
return - (tests) Keep consistent relative timings from the constant time
- (tests) Correct typos in comments
🚜 Refactor
- (logout) Move to profile page components
- (test) Centralize delayNeededForAsyncFunctionExecution
- (end2end) Check for card presence on delete
- (end2end) Check both content and card
- (end2end) Call deletion test method
- (recursive-deletion) Factorize the deletion of one comment
- (comment) Rename comments provider
- (comment) Put commentList variable inline in bodyChildren
- (points-snackbar) Move duration to a constant
- (sorting-service) Make putOnTop argument take ids instead of posts
- (challenge-generator) Set default expiration delay to 1 day
- (static-post-page-tests) Add navigation group
- Add comments and remove TODO
- (profile) Use card for post and comments
- (profile) Use cards for badges
- (profile) Remove shadow parameter
- (profile) Remove separator between posts
- (dynamic_user_avatar_view_model) Rename view model provider
- (user_avatar) Move user_avatar's folder to views/components
- (challenge-logout) Use validUid provider everywhere
- (e2e-test) Only override the base database, not repositories
- (e2e-test) Separate user flow from regression tests
- (e2e-test) Factorize testing actions
- (challenge-logout) Format
- (comment) Move ref read to beginning of the method
- (comment) Separate the ui elements of the bottom bar add comment widget
- (upvote-repository) Make specific constructors for post and comment cases
- (tests) Rename time close to now to
closeToNowTime
- (tests) Move mock post to the corresponding mock data file
- (recursive-deletion) Make the checkExists parameter named
📚 Documentation
- (recursive-deletion) Improve doc and test names
- (comment) Add docs for the comment viewmodel
- (comment) Explain why we cannot rename the arg parameter
- (comment) Add comment line to describe addUsers
- (dynamic_user_avatar_view_model) Add fetch user profile picture todo
- (user_avatar) Add comment on user's initial
- (user_avatar & dynamic_user_avatar) Add widget documentation
- (bottom_bar_add_comment) Add widget documentation
- (challenge-logout) Extra doc to the previous provider for consistency
- (challenge-logout-error) Clarify doc
- (comment) Add short description of the new comment view model
- (upvote-repository) Document constructors
- (tests) Add documentation for human time unit testing
- (tests) Add documentation for human time and distances UI testing
⚡ Performance
- (home-view-model) Await on both challenges and posts at the same time
- (challenges) Refresh home view-model on post page entering
🎨 Styling
- (post-page) Remove unnecessary import
🧪 Testing
- (recursive-deletion) Test for deletion of post subcollections
- (recursive-deletion) Test all comment deletion
- (recursive-deletion) Check that comment upvotes are deleted
- (comment) Add tests for the comment viewmodel
- (comment) Add test to check the refresh method of the comment viewmodel
- (comment) Add utility functions to create and add users to firestore
- (home-view-model) Test challenges are put on top
- (points-snackbar) Test it appears when clicking on challenge
- (dynamic_user_avatar) Mock view model and override.
- (dynamic_user_avatar) Add tests for dynamic user avatar
- (dynamic_user_avatar_view_model) Add unit test
- (dynamic_user_avatar_view_model) Group tests setup
- (user_avatar_view_model) Fix small typo in test name
- (challenge-logout) Add regression test
- (challenge-logout) Make tests compatible
- (challenge-logout-error) Check logout button existence before tap
- (challenge-logout) Create the regression test on the view-model
- (challenge-logout) Remove the regression test from end2end tests
- (comment) Add tests for the new comment view model
- (comment) Add mock provider for the post page
- (comment) Add test for adding comment on post page view
- (time-dists) Human time service fake provider setup
- (time-dists) Fake providers for constant time services
- (time-dists) Human time provider override definition
- (time-dists) Human time service unit testing set up
- (time-dists) First basic time absolute unit test
- (time-dists) Abstracts the constant time value for easier relative testing
- (time-dists) Complete the absolute time unit testing
- (time-dists) Relative testing 'now' special case
- (time-dists) Relative human time service unit tests
- (time-dists) Add an custom provider scope for a given post
- (time-dists) Basic distance value calculation test
- (time-dists) Use the override for the human time service
- (time-dists) Basic test for correct human time on test post
- (map) Testing that the MapPin provider works as expected
⚙️ Miscellaneous Tasks
- Bump project version to v0.3.1
- (dependencies) Move m...
Proxima v0.2.3 (M2)
Changelog
All notable changes to this project will be documented in this file.
[0.2.3] - 2024-05-03
🚀 Features
- (challenge-model) Add challenge firestore data class
- (challenge-model) Add postId to challenge and separate data
- (challenge-model) Add expiry time to challenge data
- (challenge-model) Start challenge repository service
- (challenge-model) Add get challenges
- (challenge-model) Can no longer add a past post
- (challenge-model) Add a min radius + refactor
- (challenge-model) Can now complete a challenge
- (challenge-model) Test getting new challenges
- (challenge-model) Challenge completion test
- (challenge-model) Test that challenges are unique
- (challenge-model) Test that challenges expire
- (challenge-model) Made moving to past challenges atomic
- (challenge-model) Add challenge data tests
- (challenge-model) Test that deleted posts do not appear
- (challenge-model) Improve performance by not getting all past challenges
- (post-repository) Add an optional minRadius argument to getNearPosts
- (challenge-model) Make challenge creator private and use minRadius from postRepository method
- (user-posts) Add
UserPost
ui model class - (user-posts) First write for user posts viewmodel
- (user-posts) Add the view that consumes the user posts viewmodel
- (profile-page) Incorporate new profile data state into the profile page
- (user-posts) Add the refresh option to the
ProfileInfoColumn
- (profile-page) Add a fake comment indication for beta users
- (user-posts) Auto-dispose provider for automatic refresh on new post
- (delete-post) Post deletion call to view model
onDelete
in UI - (delete-post) Apply an optial helper message when list is empty
- (user_avatar) Add user avatar widget
- (user_avatar) Add user avatar widget in user_account widget
- (user_avatar) Set radius parameter as required
- (map) Basic map loaded on current postition
- (map) New elements displayed on the map (current position, radius of nearby posts)
- (map) Map feed now displays sort options
- (map) Added mock posts and refractored some widgets
- (map) Added the "marker" attribute in the map viewmodel
- (map) Simple map view
- (home-feed) Converted home view model to autodispose provider
- (home-feed) New post triggers home view model refresh
- (user-profile) Automatically refresh the user profile on navigation
- (post) Add date field to PostOverview class
- (post) Post date is now displayed as timestamp
- (post) Add • between username and date
- (post) Convert date to time ago
- (post) Remove ago from short timeago format
- (post-test) Add tests for time in post
- (post) Add distance to post
- (post-test) Adapt test to post with distance
- (map) User location is tracked but camera/circle are not moving for now
- (map) Camera is now moving
- (map) Finalized code for PR
- (challenge-view-mode) First build implementation
- (challenge-view-mode) Add point scoring to challenge repository
- (challenge-view-mode) Add refresh method
- (challenge-view-mode) Add manual refresh to challenge ui
- (challenge-view-model) Return whether a challenge is completed successfully
- (challenge-view-model) Show finished challenges last
- (challenge-view-model) Let ui refresh in the background
- (post-sort-option) Add a score function for sorting
- (post-sorting-repository) Add sort function
- (sort-options) Add view model
- (sort-options) Make home view-model sort its posts according to the selected option
- (sort-options) Allow the user to choose the option on the ui
- (post-generator) Add 'generatePostsAtDifferentLocations' method
- (user-generator) Add generateUserFirestoreWithId function
- (user-generator) Add setUserFirestore helper functions
- (sort-options) Add debugging keys
- (home-page) Add a provider for a mocked home page with a given fake firestore
- (post-generator) Improve generated data diversity
- (map) Documented MapInfo
- (comment) Add comment id representation
- (comment) Add comment data representation
- (comment) Add firestore comment representation
- (comment) Add prototype of the comment repository service
- (comment) Implement the get comments method
- (comment) Add number of comments to post data
- (comment) Implement the add comment method
- (comment) Add implementation of the delete comment method
- (comment) Add a vote score for the comments
- (comment) Add tests for comment id firestore
- (comment) Add mock comments generator
- (comment) Add tests for comment data
- (comment) Add tests for comment firestore
- (comment) Add provider for comment repository
- (comment) Add tests for the comment repository service
- (comment) Add test for when a field is missing
- (comment) Add mock comment repository service
- (comment) Add abstract class to represent a firestore id
- (comment) Make the id classes extend IdFirestore
- (comment) Add comment upvote repository provider
- (comment) Create the mock for the upvote repository
- (comment) Add optional parameters to create a random mock comment
- (comment) Add tests for the comment upvote repository
- (comment) Add test for missing commentCount field
- (comment) Add model class description
- (challenge_page) UI for challenge list page when not challenges available
🐛 Bug Fixes
- (README) Update README.md with new penpot links
- (README) Update README.md with new mockup & wireframe links
- (README) Update README.md with new mockup & wireframe links
- (challenge-model) Return the updated list
- (challenge-model) Create new challenges from nearby posts
- (challenge-model) Make temporary list growable
- (challenge-model) Use post id as document id
- (challenge-model) Cannot have duplicate challenges
- (challenge-model) Past challenges expire and do not reappear
- (challenge-model) Deleted posts disappear from challenges
- (challenge-model) Challenge minimum radius was not used
- (challenge-model) Add await
- (tests) Use the new GeoPointGenerator interface in testing
- (challenge-model) Generate new challenges works by side effects
- (challenge-model) Use string ids when querying the database
- (user-posts) Import the correct file name for renamed user posts
- (format) Apply dart format suggestion
- (user-posts) Shorter function call syntax
- (user_account) Remove duplicate user_account widget
- (user_avatar) Set user_avatar widget in app_top_bar to final
- (user_avatar) Use VoidCallback instead of void Function
- (map) Fixed issues caused by merge
- (map) Rework of the map to implement a viewmodel
- (map) Replaced the StateNotifierProvider with an AsyncNotifierProvider
- (map) Removed mock data from the lib directory
- (map) Removed unsused plugin
- (map) Removed all references to "sort options" and replaced them with "select options"
- (map) Added trailing commas
- (map) Adapted tests so that markers are taken into account
- (map) Fixed warnings
- (map) Implemented requests from PR review
- (map) Made map view model more modular
- (map) Applied comments of PR review
- (map) Removed magical value
- (map) Pass the MapInfo to the selection option chips
- (map) Removed errors
- (map) Refractored hash/equality tests and changed hash test
- (user-posts) Typo
- (delete-post) Fix merge conflicts and CI tests + format
- (delete-post) Fix a use after dispose of state hook
- (tests) Use
expect(..., isEmpty)
instead of truthy value expect - (tests) Convert testing mock to also use autodispose
- (tests) End-to-end test patch using new automatic refresh
- (tests) Use the new
profileProviderScope
in profile page testing - (README) Update architecture diagram image
- (Architecture_Diagram) Remove random text and ensure 90 degrees arrow angle
- (Architecture_Diagram) Add missing service description and arrow from comment to upvote repository
- (Architecture_Diagram) Add upvote and comment repository relation
- (post) Fix overflow of date by fading
- (post) Add intl to dependencies
- (map) Removed unused import
- (map) Remove warnings
- (map) Added missing commas
- (map) Remove camera animation when user moves
- (map) Removed unnecessary Completer recreation
- (map) Added circles to map_info
- (map) Remove old comments
- (map) Moved locations stream to viewmodel
- (map) Updated tests to check multiple positions
- (map) Using a StreamProvider to get the data
- (map) Format some code
- (map) Circle is redrawn without an entire widget rebuild
- (challenge-view-mode) Show completed challenges correctly
- (challenge-view-mode) Complete challenges by clicking on the post
- (challenge-view-mode) Completed and expired posts cannot be completed again
- (challenge-view-model) Typo + add final
- (map) Reworked the map viewmodel
- (map) Reworked mapInfo
- (home-view-model-tests) Make post comparison unordered
- Remove duplicated files after faulty merge
- (sorting) Add minus sign to fix mistake in date computation formula
- (self-challenge-fix) A user cannot be challenged with his own posts
- (sorting) Latest sorting means sorting time since creation date
- (map) Added missing commas
- (map) GetPositionStream isn't a Future anymore
- (map) Made checkLocationServices return a possible Exception
- (map) Made live location provider watch the geo location provider
- (map) Added mock geoLocation method to get the live location stream
- (comment) Remove parent post id field
- (comment) Update methods prototype
- (comment) Add voteScore field in toDbData
- (comment) Consider comment number as 0 is the field is not present
- (comment) Correct type returned by ...
Proxima v0.2.2
Changelog
All notable changes to this project will be documented in this file.
[0.2.2] - 2024-04-26
🚀 Features
- (clean-tests) Standardize widget display test
- (tests) Renamed ProviderScope with user for less ambiguity when reading the tests
- (post-page) Add navigation to sample post page
- (post_page) Add comment and entire post widget
- (post_page) Add bottom bar in post page
- (post_page) Abstract comments data and UI creation
- (post_page) Abstract app bar content
- (post_page) Close keyboard upon clicking on send button
- (post_page) Add comment list provider
- (post_page) Add todo comment
- (post-exists) Add postExists method
- (post-exists) Test that a post does not exist before creation
- (upvote) Add PostVote class to represent the vote UI state
- (upvote) Use the upvote viewmodel to get the voting logic
- (upvote) Add mock implementation of the upvote repository
- (upvote) Add unit tests for the upvote viewmodel
- (upvote) Add integration tests for the upvote viewmodel
- (upvote) Add tests for PostVote
- (upvote) Add documentation for the viewmodel
- (upvote) Add postid field
- (refactor) Adapt to the postId contained in PostOverview
- (immutability) Add tests for hashcode and ==
- (immutability) Add tests for hashcode and ==
- (immutability) Add tests for hashcode and ==
- (post-generator) Make createPostAt use the generated id by default
- (logout) Remove previous logout button on top bar
- (logout) Add a logout button component
- (logout) Create delete button accepting an async delete function
- (profile) Add a
FutureVoidCallback
type for delete functions - (delete-button) Add a loading state management and display in UI
- (delete-button) Keep same size using
IconButton
in all cases - (profile-page) Make use of the new async capable delete button
- (loading-button) Make the async icon button more generic
- (types) Move
FutureVoidCallback
to util file - Add a key-value list text generator
- (challenge-page) Add dataclass to store ui's data
- (challenge-page) Add mock view-model
- (challenge-page) Add challenge card ui
- (challenge-page) Add challenge list ui
- (challenge-page) Set the challenge ui to be the challenge list
- (challenge-page) Add custom single and group challenge icons
🐛 Bug Fixes
- (onPressed-parameter) Remove async function within onPressed parameter
- (login) Replace async process of login navigation by then call on future
- (post_upvote_repository_test) Fix refactored import of post_upvote_service.dart
- (new_post_test) Initialize mock in setup
- (clean-tests) Refactoring directories
- (clean-tests) Remove unused import
- (tests) Only one mock login page
- (tests) SetUp is declared only once
- (tests) Regroup setups in login_test
- (tests) Only one mocked profile page
- (tests) SetupFirebaseAuthMocks called in each test
- (tests) Remove unused imports and methods
- (tests) Rename variables and tests for clarity
- (tests) Remove find.text to avoid error on change
- (clean-tests) Implement reviewers suggestions
- (clean-tests) Solve merge conflict on profile_page_test
- (circular_value) Add blank line before return
- (post-page) Remove unused import
- (tests) Refactor folders
- (tests) Move all mocks to folder mocks
- (tests) Organize imports
- (tests) Replace initialRoute by home
- (tests) Centralize mocked homepages
- (tests) Abstract homeviewmodel override
- (tests) Mocked login page
- (tests) Remove unused imports
- (tests) Create mock/data folder and userRepoOverride
- (tests) Move mock geolocator and revert profile page
- (tests) Use mock post generator
- (tests) Use only one user position for all tests
- (tests) Create services folder in mock
- (tests) Centralize firestore mock data
- (tests) Refactor overrides
- (tests) Abstract away providers
- (tests) Follow dart format recommandation
- (tests) Move firestore override and rename
- (post_page) Remove insignificant paddings
- (post_page) Fix comments post widget key duplicate issue
- (upvote) Set the upvote viewmodel to be auto disposable to get correct updates
- (upvote) Remove the votes constructor field
- (upvote) Throw error if the user is not logged in
- (upvote) Await for the the futures in parallel
- (upvote) Resolve import issues due to merging
- (upvote) Remove deprecated usage of .new
- (upvote) Update documentation
- (upvote) Fix typo in file name
- (post-page) Adapt to new base
- (end2end-test) Remove deleted package from pubspec.yaml
- (upvote) Replace comment duplicates by a single comment
- (immutability-tests) Check that we get the expected hashcode
- (post-repository-test) Fix test failing on some machines
- (new-post-test) Fix non-deterministic test
- (post-repository-test) Use null-aware assignment operator
- (upvote) Use new instance based testing mock data generators
- (format) Apply dart format suggestion
- (post_page) Extract string to named constant
- (format) Apply dart format suggestion
- (post_page) Remove unnecessary Center and Row widget.
- (logout) Use short hand function call notation in argument
- (profile) Remove stale comment about viewmodel
- (error-handling) Fix comment typo
- (delete-button) Implement fixed side container with small loading progress
- (profile-page) Add comment to use profile avatar component
- (format) Applied dart format suggestion
- (post_page_test) Remove unused import
- (key-value-list-gen) Add missing style to a TextSpan
- (challenge-page) Decrease icon opacity to make it less prominent
- (challenge-page) Remove overflow for very (very) small phones
- (challenge-page-test) Fix test failing when multiple challenges are finished
🚜 Refactor
- Apply dart code metrics suggestions about refactoring and code style
- (feed_sort_option) Refactor feed_sort_option to follow good practices
- (user_account) Remove repeated invocation of textStyle
- (post_upvote_service) Rename to post_upvote_repository_service and add blank line before return statement
- (login-page) Revert async function for login navigation
- (tests) Move mock post data and combine tests
- (tests) Create methods for relative mock positions
- (tests) Create generatePost function
- (tests) Rename class and apply suggestions
- (tests) Separate post data and firestore post generator
- (tests) Rename generators
- (tests) Create GeoPointGenerator class
- (tests) Centralize remaining GeoPoints
- (tests) Move emptyfirestoreuser and make it private
- (tests) Move post about turtles to mocks
- (tests) Removing "mock" from file names
- (tests) Replace GeoPoint(0,0) by userPosition0
- (tests) Pump ProviderScope directly
- (comment_list) Move out CommentList widget
- (post_page) Refactor to complete post widget
- (upvote) Expose the post id in the postOverviewProvider
- (upvote) Expose the number of votes instead of the increment in upvote viewmodel
- (upvote) Rename the upvote viewmodel provider
- (upvote) Remove the use of the ({PostIdFirestore postId}) tuple to create the upvote viewmodel
- (upvote) Arrange widget as seen on screen
- (upvote) Stack ref. at beginning of widget
- (upvote) Use short-hand notation
- (end2end-test) Move the tests under /test
- (end2end-test) Remove the emulator to make the test runnable in the CI
- (test-position-generator) Make class non instantiable and methods static
- (test-position-generator) Remove mentions of posts
- (post-repository-test) Instanciate GeoPointGenerator in the test setup
- (profile) Clean profile page build method
- (profile) Extract appbar to local widget
- (profile) Extract badges from build to local
- (profile) Extract posts and comments from profile build local
- (profile) Factorized code from both popup
- (profile) Factorized code from both info card
- (profile) Rename components
- (profile) Improve overal profile components + static const
- (profile) Rearanged directory structure
- (post_page) Remove unnecessary complexity caused by a comma
- (challenge-page) Made opacityWhenFinished attribute private
- (challenge-page-test) Make data of the mock challenge unique
- (challenge-card-data) Remove unnecessary identical check in ==
- (challenge-page-test) Move 'expectOneRichText' to the 'testutils/' package
- (expect-rich-text) Add matcher in argument to improve modularity
- (challenge-card-data) Make different constructors for group and finished challenges
📚 Documentation
- (test-position-generator) Fix typo
- (post_page) Move comments for better readability.
🎨 Styling
- (post-repository-test) Add missing trailing commas
- (challenge-page) Use 'bold' alias instead of 'w700'
- (challenge-page-test) Remove unnecessary import
🧪 Testing
- (post_age) Add key to post page widgets
- (post_page) Add static test for non-comment widgets post page
- (comments) Add a list of mock comments
- (post_page) Add comments widget test
- (comment_post) Test hash and equality
- (comment_post_test) Add inequality tests
- (profile) Rename keys in profile
- (logout) Logout test accesses the profile page
- (profile-page) Convert tests to make use of the new async delete button
- (post_page) Add test for post displayed information & replace homePage naming
- (post_page_test) Add test to check correct displayed username on comments
- (challenge-page) Add mock view-model
- (challenge-page) Test challenge card data hashcode and equality
- (challenge-page) Add provider for the mocked view-model
- (challenge-page) Add tests for the static page
- (challenge-page) Add test data for finished group challenge
- (post_page) Remove small typo widgetswidgets
⚙️ Miscellaneous Tasks
- Bump project version to v0.2.2
Proxima v0.2.1
Changelog
All notable changes to this project will be documented in this file.
[0.2.1] - 2024-04-19
🚀 Features
- (profile-post) Add inkwell on post
- (profile-post-popup) Add post popup to profile page.
- (profile-post-popup) Extract post-popup and add delete button
- (profile-comment-popup) Add comment popup
- (profile) Navigate back from popup when using delete button
- (profile-comment-popup) Add comment popup title
- (profile-popup) Make text component scrollable
- (profile-popup) Prevent scrollbar from overlapping text
- (profile-popup) Remove comment title in popup
- (profile-popup) Force post title on one single line
- (profile-ui) Force post title on one single line
- (profile-popup) Adjust inner padding popup
- (profile-post-popup) Reduce post title padding
- (error handling) Generic exception alert widget
- (error handling) Show error popup from circular value
- (error handling) Add a fallback option in circular value
- (error handling) Refactor post feed
- (error handling) Call showDialog after build finished
- (dependencies) Lock cloud firestore + version bump
- (error handling) Add tests
- (error handling) Add pumpAndSettle in success case test
- (PostService) AddPost return the id of the added post
- (UpvoteService) Create upvote state enum
- (UpvoteService) Add getUpvoteState function
- (UpvoteService) Add setUpvoteState function
- (UpvoteService) Add name getter to UpvoteState enum
- (UpvoteService) Add provider
- (user-posts) Add the getUserPosts model functionality
- (profile) The display name, user name and centauri points of the user are displayed on the screen
- (profile) Test that verifies the correct behaviour of the centauri points
🐛 Bug Fixes
- (new post vm) New post vm catches errors and sets an error state
- (nullable mocks) Make user and post mock arguments nullable
- (tests) Ci fixes flutter version
- (geoflutterfireplus) Re enable firestore cache
- (MockPostRepository) Return the correct value type
- (UpvoteService) Make setUpvoteState atomic
- (UpvoteService) Make setUpvoteState also read the upvote state atomically
- (UpvoteServiceTest) Add missing awaits
- (user-posts) Fixed value in testing
- (user-posts) Use unorderedEquals in testing
- (profile) Test now pass the CI
- (profile) Implemented suggestions from PR reviews
🚜 Refactor
- (error handling) Wrap whole CircularValue in expanded
- (error handling) Remove useless import
- (geoflutterfireplus) Replace geoflutterfire2 by geoflutterfire_plus
- (geoflutterfireplus) Use geoflutterfire plus to perform the queries
- (geoflutterfireplus) Remove useless warning comments
- (geoflutterfireplus) Adapt tests to the change to geoflutterfire plus
- (UpvoteService) Reduce code repetitions in setUpvoteState method
- (UpvoteService) Remove unnecessary async
- (UpvoteService) Make firestore attribute private
- (UpvoteService) Use a single collection for storing voters
- (UpvoteService) Add increment getter to UpvoteState
- (UpvoteService) Create models/database/vote package
- (UpvoteService) Create and use VoteFirestore class
- (UpvoteService) Remove unncessary imports
📚 Documentation
- (profile-popup) Add TODOs for delete operation
- (error handling) Document ErrorAlert and CircularValue
- (UpvoteService) Add documentation for main methods and attributes
- (UpvoteService) Add documentation for UpvoteState enum
- (UpvoteServiceTest) Improve test documentation
🧪 Testing
- (profile-popup) Add test for profile pop ups
- (profile_page_test) Group test initialisation on profile
- (profile-popup) Test clicking on delete come back to profile page
- (profile-popup) Rename the duplicate test name
- (profile-popup) Regroup tests and create commonSetup function
- (profile) Remove commonSetup function
- (upvoteService) Test single user on single post
- (upvoteService) Test single user on multiple posts
- (upvoteService) Test multiple users on single posts
- (UpvoteService) Remove tests on data races
- (user-posts) Create mocking method
- (user-posts) Add user posts query testing
Proxima v0.1.3 (M1)
Changelog
All notable changes to this project will be documented in this file.
[0.1.3] - 2024-04-12
🚀 Features
- (setup) Cerate Flutter demo template + CI
- (login) Add firebase config files
- (login) Update the firebase config files
- (login) User login implemented with firebase
- (login) Persistent login with user profile viewmodel
- (database) Add firestore dependency with dummy example
- (profile) Display main components of user profile page
- (profile) Widget consumes user data provider
- (profile) Added navigation to user page
- (login) Display all components of login screen
- (login) Add logo jpeg in assets
- (login) Adapt layout with containers
- (login-screen) Place logo in expanded to avoid overflow
- (login) Adapt test to new sign in button
- (ui-theme) Get system brightness and set font to poppins
- (createAccount) Add CreateAccountPage skeletton and navigation
- (createAccount) Add CreateAccountPage content
- Showing post title and body
- Add route to new post screen
- Make new post page layout
- (new post) Test existence of title, body and post button
- (new post) Add a new post button to home page for tests
- (new post) More tests
- (new post) Test that empty posts are refused
- (new post) Do not commit empty posts
- (new post) Add padding on bottom button
- (overview) Add static bottom navigation bar on overview
- (overview) Add static top bar on overview with filter and profile picture
- (overview) Add static feed with posts
- (overview-ui) Improved filter selection
- (database) Add class to represent firestore user data
- (database) Add user firestore repository
- (database) Add tests for user repository
- (database) Add post firestore representation
- (database) Separate post data from database management related fields
- (database) Add skeleton interface for the post repository
- (database) Add dependencies for geo queries
- (database) Create a service to get the location of the user
- (database) Implement the post repository
- (database) Add mockito dependency
- (database) Add tests for GeoLocationService
- (database) Add skeleton for post repository testing
- (database) Add tests for post repository
- (database) Add doesUserExists method to user repo
- (database) Add userRepositoryProvider
- (database) Add documentation
- (profile) Added more tests to check if the elements of the screen are displayed
- (geolocation) Add provider for geolocation service
- (geolocation) Add location permissions
- (new post vm) Can add post with description and title
- (new post vm) Use controllers in form to obtain values
- (mock) Add mocks for the repositories
- (mock) Add helper class to create mock users
- (new post vm) Test that the repository is written to
- (navigation) Handle back button on create account page
- (navigation) Seperate navigation for account creation and home page from login.
- (navigation) Add navigation to new post page.
- (navigation) Improve bottom bar navigation
- (navigation) Add optional onPressed override on back button
- (navigation) Add not implemented util widget instead of crash error
- (navigation-ui) Add per-screen topbar label
- (new post vm) Try to override the user provider
- (new post vm) Merge the two tests and use fake sign in
- (project) Add build script for APK
- (profile) Simplifying the UI for the profile page by taking away ambiguous double scroll
- (profile) Added tab navigation between posts and comments
- (profile) Added tests for this new version of the profile page
- (profile) UI is even more refined with for example the addition of shadows
- (profile) Added mock material in the info cards.
- (profile) Added more precise tests that check if all types if info cards are displayed
- (profile) Pass card texts directly as parameters
- (uidProvider) Add a uid provider
- (new post vm) Use uidProvider
- (new post vm) Add documentation
- (overview) Add posts provider for nearby posts
- (overview) Add documentation for post provider
- (overview) Use the postOverviewProvider to display posts
- (overview) Add a test to check the loading state
- (overview) Add documentation to the provider
- (overview) Add tests for PostOverview
- (overview) Add unit tests for the postOverviewProvider
- (overview) Make the overview refreshable
- (overview) Add integration tests for the postOverviewProvider
- (overview) Use a mock of the home viewmodel
- (overview) Add a refresh button for when there are no posts to display
- (overview) Add unit tests for the refresh
- (overview) Center circular value in parent
- (userRepository) Add a isUsernameTaken method and tests
- (createAccount) Validate inputs before navigating to the home page
- (createAccount) Validate inputs more restrictively
- (createAccount) Create the account in the database when the button is clicked
- (MockFirebaseAuth) Add a mocked signed in user provider override
- (CreateAccountModel) Add withAccountCreated setter method
- (README) Add wireframe and mockup in the README
- (end-to-end-test) Flow from login to homepage
- (end-to-end-test) Test navigation to profile page and in bottom bar
- (end-to-end-test) Navigate to new post form and fill it
- (integration test) Bottom bar navigation to new post
🐛 Bug Fixes
- (login) Prevent sign in with unvalid credentials
- (login) Logout using a listener for authentication change
- (login) Add
isUserLoginProvider
- (login) Also sign out from Google
- (login) Change to guard clause
- (test) Fix signOut mock error (see atn832/google_sign_in_mocks#7)
- (login) Use watch + inline mocks
- (login) Prevent sign in with unvalid credentials
- (login) Fix login bug
- (profile-page) Remove old todo
- (profile-page) Remove commented imports
- (login-ui) Replace Expanded by Flexible
- (login) Factorize tagline text
- (profile) Long emails are now handled and the borders are padded
- (createAccount) Remove unnecessary SafeArea
- (createAccount) Resolve incorrectly resolved merge conflict
- (profile) Adapted tests so that they run with the new main
- (profile-page) Removed black borders and pink background
- (profile-page) Reduce picture radius
- (profile) Refractoring of the user profile screen
- (profile-page) Add documentation
- Optimise imports
- Add todos and remove useless variables
- Make body scroll when too big
- Post button always visible
- (new post) Removed unused view model
- (new post) Make body always never overflow
- (new post) Make body take up all the available space
- (new post) Optimise imports
- (new post) Resolved issues of the merge with main branch
- (new post) Only use NewPostPage in tests
- (new post) Use keys in tests
- (new post) Validate logic is safer and more clear
- (createAccountOverflow) Make the screen scrollable if too high
- (createAccountOverflow) Add minimum space between widgets
- (overview) Remove unused circular_value
- (overview) Remove vote displaying two minus signs
- (overview-ui) Remove SafeArea widget surrounding the scaffold.
- (overview-ui) Use of AppBar widget in Scaffold instead of implementing PreferredSizeWidget to class HomeTopBar
- (overview-ui) Assign test key to HomeTopBar widget
- (overview) Readd circular_value.dart file
- (overview-ui) Remove logout button from top bar
- (overview) Rename navigation bar labels
- (database) Check user document exists before parsing
- (database) Check that uid is not empty in setUser
- (database) Convert StateError to Exception
- (database) Manage properly document parsing errors
- (database) Add GeolocatorPlatform injection to GeoLocationService
- (database) Refactor UserFirestore to separate data from firestore logic
- (database) Make post representation immutable
- (database) Change Timestamp.now to Timestamp.fromEpoch in geoloc test
- (database) Add displayName to the user representation
- (database) Add strong typing for post and user id
- (database) Override == and hash methods of post and user because of immutability
- (database) Use strong type ids in repos
- (database) Use late initialization for user repo testing
- (database) Fix formatting issue
- (firestore-repositores) Typo in comment
- (database) Use FormatException for parsing errors
- (database) Use LocationAccuracy.best instead of high for better accuracy
- (database) Update comment to handle permission location denied forever
- (database) Enforce strong typing for ids
- (database) Document geo location service
- (database) Apply naming convention
- (database) Use single stream subscription to get near post
- (database) Correct a typo
- (database) Check that post is in db before checking delete in test
- (database) Add tests for user data firestore
- (database) Use GeoPoint instead of GeoFirePoint in method arguments
- (database) Correct test name
- (database) Use same testing user in all tests
- (test) Use the right imports in new_post_test
- (navigation) Add missing trailing comma in NavigationbarRoutes
- (navigation, overview-ui) Fix CircleAvatar's InkWell top bar.
- (profile) Replace back arrow with common LeadingBackButton widget.
- (leading_back_button) Fix leading back button splash ink size.
- (mock) Make methods of MockPostFirestore static
- (mock) Make methods of MockUserFirestore static
- (new-post-view-model) Adding a post by hand now works
- (new post vm) Posting now pops back immediately
- (profile) Cleaned code that is not used anymore
- (profile) Remplaced old buggy card display with "ListTile" widgets
- (profile) Removed wrong padding
- *(pro...