Screen that allows the current user to search for other users to add as friends,
view their friendship status, send friend requests, withdraw requests, or remove friends.
AuthenticationRepository is responsible for managing user authentication
using Firebase Authentication.
It provides methods for email/password login and registration
A widget that displays a user's avatar with an option to edit it.
This widget allows users to pick an image from their gallery, crop it, and upload it as their profile picture.
It uses a StorageService to handle image storage and retrieval.
A widget that displays a user's avatar with an option to edit it.
This widget allows users to pick an image from their gallery, crop it, and upload it as their profile picture.
It uses a StorageService to handle image storage and retrieval.
It also integrates with a ProfileController to notify when the profile picture is updated.
The avatar is displayed as a circular image with a pencil icon for editing.
When the avatar is tapped, it opens a zoomed view of the image.
A widget that displays a zoomable avatar image.
This widget uses a Hero animation to transition between the avatar and the zoomed image.
imageProvider is the image to be displayed.
heroTag is the tag used for the Hero animation.
Usage:
A custom button widget for profile actions, featuring an icon, label, and optional active state.
It supports both light and dark themes, with customizable colors for the icon and text.
The button can be tapped to trigger a callback function, and it visually indicates whether it is active by changing its background color and showing a check icon.
Service to handle deep links using Firebase Dynamic Links
This service initializes Firebase Dynamic Links, listens for incoming links,
Will be deprecated in August 2024. TODO: Should be migrated to Branch.io in the future.
A card widget that displays a fact with an icon, title, and subtitle.
The card is styled to look non-interactive, with a faded appearance.
It is used to present facts in a visually appealing way, suitable for both light and dark themes.
FadeInAnimationController is responsible for managing the fade-in animation state
and controlling the animation flow for the splash screen and other animations.
Service to handle Firebase Cloud Messaging (FCM) token management
This service initializes FCM, retrieves the token, and updates it in Firestore.
including APNS handling for iOS devices, but isn't working at the moment without an Apple Developer Account.
Helper class for common functionalities like validations and snack bars
This class extends GetxController to leverage GetX's reactive state management.
It provides static methods for validating user inputs such as usernames, emails, and passwords,
as well as methods for displaying various types of snack bars (success, warning, error, modern).
MailVerificationController is responsible for managing the email verification process.
It handles sending verification emails, checking the verification status
ProfileController class that manages user profile data and operations.
It handles fetching, updating, and deleting user profiles,
as well as notifying changes in profile picture updates.
A screen that displays the user's profile, including personal information, statistics, and settings.
This screen allows users to view and edit their profile, manage friends, and access various settings and information about the app.
ProgressScreen displays the user's progress through chapters of exercises,
allowing them to see their current step, chapter completion, and animations
for chapter transitions.
SignUpController is responsible for managing the sign-up process.
It handles user input validation, user creation, and authentication.
It uses GetX for state management and navigation.
A widget that provides a fade-in animation effect with customizable position and duration.
This widget uses the GetX package for state management and animation control.
UserRepository is responsible for managing user data in Firestore.
It provides methods to create, read, update, and delete user records,
as well as checking for user existence by email.
Uses FirebaseAuth for authentication and FirebaseFirestore for database operations.