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
- (profile) Added missing import in user profile test file
- (profile) The email check is now done before we pass it to the widget
- (profile) Added missing trailing comma
- (login-navigation) Use new provider (uidProvider) for userId
- (home) Remove duplicate navigateToLoginPageOnLogout
- (new post vm) Now using and mocking uidprovider
- (new post vm) Update the mock to use nullable parameters
- (new post vm) Tests now work
- (new post vm) Increase delay to 500ms and organise imports
- (new post vm) Make view model auto dispose
- (new post vm) Center the loading circle
- (new post vm) Pop directly after adding the post
- (firestore) Disable firestore cache globally
- (overview) Adapt the overrides for the postOverviewProvider
- (overview) Override the hash and ==
- (overview) Adapt the overrides for the postOverviewProvider
- (overview) Use static methods of mock generating classes
- (overview) Check that the refresh button is displayed when there are no post
- (overview) Add spacing between text and refresh button
- (overview) Add a refresh method to the viewmodel
- (overview) Add onRefresh to home viewmodel mock + make constructor parameters optional
- (mock_home_view_model) Fix typo in comment
- (overview) Use arrow function
- (overview) Check that the exception has the right message
- (overview) Detail the generation of posts in and out of range
- (overview) Remove mocking duplication
- (overview) Check the message of the exception being thrown
- (overview) Show the displayName on the post + rename fields for consistency with PostData
- (overview) Use AsyncValue.guard() in refresh
- (overview) Resolve merge conflicts
- (circular-value) Remove Expanded widget that was wrapping the CircularProgressIndicator
- (circular-value) Center the CircularProgressIndicator without the CircularValue
- (circular-value) Center error message
- (loginTest) Use correctly validated input and mock Firestore
- (createAccount) Improve robustness facing user disconnection
- (createAccount) Wait for the account to be created before navigating
- (loginTest) Use valid username and pseudo when visiting the account creation page
- (createAccountTest) Make the mocked app start at the right route
- (createAccountTest) Use a mocked empty home view model override
- (release action 403) Add content permissions
- "Challenges" instead of "Your Challenges" to avoid overflow
- (integration test) Mock the geopos service and post repo
- (integration test) Remove home view model override
- (integration test) Use refresh button instead of swipe
- (integration test) Restore full tests
- (profile_page_test) Remove unused import
🚜 Refactor
- (login) Use provider to access static instances
- (login) Clean up + CI passing before PR
- (login) Improve login page maintainability
- (login) Factor out code to navigate back to homepage on logout
- (createAccountTest) Remove unncessary code for test
- (new post) Separate the elements into intermediate values.
- (new post) Factorise padding
- (new post) Extract bottom row
- (new post) Put new post form in its own file
- (overview-ui) Refactoring home page to pages folder
- (overview) Clean documentation and refactor public interface
- (overview) Improve internal widgets readability
- (overview-ui) Rename timeline_filter_dropdown class to timeline_filter_chips
- (overview) Refactor feed filters to sort options
- (overview) Rename timeline to feed
- (database) Move MockGeoLocationService into its proper file
- (database) Extract user model + testing
- (database) User repository service + test
- (database) Split post data
- (database) Adapt tests to the refactoring
- (database) Split tests files according to the refactoring
- (database) Move repository tests to service directory
- (mock) Rename MockFirestorePost to MockPostFirestore for consistency
- (mock) Relocate MockPostFirestore for consistency
- (navigation) Create leading back button widget.
- (navigation) Move feed to application content
- (navigation) Move navigation related to nav directory
- (home_feed) Rename home_feed to post_feed
- (home_content) Rename content folder to home_content
- (new post vm) Moved validation logic to the vm
- (new post vm) Add const
- (overview) Rename Post to PostOverview
- (overview) Rename postProvider to postOverviewProvider
- (overview) Remove the old post provider
- (overview) Extract the displayed post list
- (overview) Rename test group for clarity
- (overview) Apply the renaming of MockPostFirestore
- (overview) Use an AsyncNotifier to be consistent with other viewmodels
- (overview) Improve code readability and navigate to new post
- (loginTest) Remove code duplication
- (createAccount) Renamed CreateAccountError to CreateAccountMOdel
- (CreateAccount) Renamed CreateAccountModel::valid to CreateAccountModel::accountCreated
- (CreateAccountModel) Make constructor attributes optional
- (CreateAccountModel) Add getter to know when there is no error
- (CreateAccountViewModel) Remove the ability for the model to be nullable
- (userRepository) Improve isUsernameTaken query efficiency
- (end-to-end-test) Create one method per page tested
📚 Documentation
- (scrollableIfTooHigh) Add documentation
- (scrollableIfTooHigh) Improve documentation clarity
- (overview) Comment widgets, enums and fix typo in comment_widget.dart
- (overview) Add a note on the upvote and downvote widgets
- (overview) Add note comment about two onTap actions in post card.
- (readme) First MS1 README
- (navigation-bar) Remove done TODO
- (static_home_test) Fix typo comment
- (createAccoutViewModel) Improve code documentation
🧪 Testing
- (login) Add mock dependencies + test utils
- (login) Add login logout test + refactor mock tests
- (database) Add a mock of Firestore with fake data
- (createAccount) Add the createAccountPage in the middle of the login test flow
- (createAccount) Add test that text fields are visible
- (overview) Add test keys and view model to home page
- (overview) Add static tests of overview widgets
- (overview) Readd logout button for testing
- (overview-ui) Reorder import in login_test.dart
- (overview) Readd test key to profile picture button.
- (navigation-test) Readd logout tests along with logout button in top bar.
- (navigation) Add robustness to navigation test error
- (navigation) Remove duplicate navigation test
- (navigation) Remove test initialization duplication
- (navigation) Rename debug key variable name
- (navigation) Improve test naming.
- (createAccount) Verify inputs are validated correctly
- (profile_page_test) Fix key profile naming
⚙️ Miscellaneous Tasks
- (login) Add tests for logo and slogan
- (analysis) Dcm analysis
- (overview) Remove print invocation
- (overview-test) Remove unused import
- (tests) App testing coverage badge
- (dcm) Clean action
- (apk) Build pipeline for APK to action artifact
- Application release pipeline on workflow_dispatch
Format
- Format new post page and view model
- (new post vm) Remove imports
- (new post vm) Optimise imports
- (createAccountPage) Fix bad merge conflict resolution code formatting
- (loginTest) Fix bad code style after merge conflict resolution
- (loginTest) Remove unncessary imports after merge conflict resolution
Merge
- (new post) Merge main into new post
- (new post) Merge main into new post