Skip to content

Releases: ProximaEPFL/proxima

Proxima v0.4.3 (M4)

31 May 08:40
b1fb40c
Compare
Choose a tag to compare

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)

29 May 16:38
c7e7792
Compare
Choose a tag to compare

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 to circularValueProvider
  • (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

24 May 07:04
8887f7f
Compare
Choose a tag to compare

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 the UserRepositoryService
  • (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 of reduce >=
  • (ranknig-vm) Use isNot(equals(.)) matcher instead of operator
  • (ranking-vm) Abstract the rankingPageMockApp into provider_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...
Read more

Proxima v0.3.2 (M3)

17 May 05:29
695037d
Compare
Choose a tag to compare

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 conventions
  • PostHeader widget follows widget build conventions
  • PostVotes widget follows widget build conventions
  • Authentification logged in user to AuthLoggedInUser
  • ChallengeDetails UI data class
  • CommentDetails UI data class
  • CreateAccountValidation UI validation class
  • NewCommentValidation UI validation class
  • NewCommentValidation 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_...
Read more

Proxima v0.3.1

10 May 06:19
238e371
Compare
Choose a tag to compare

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...
Read more

Proxima v0.2.3 (M2)

03 May 13:40
6b9a59f
Compare
Choose a tag to compare

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 ...
Read more

Proxima v0.2.2

26 Apr 07:20
bbe1f58
Compare
Choose a tag to compare

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

19 Apr 06:46
c33a501
Compare
Choose a tag to compare

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)

12 Apr 21:18
3d9ca2f
Compare
Choose a tag to compare

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...
Read more