Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

REFACTOR(AUTH-CROSS): simplify the sign-up screen code #4

Merged
merged 1 commit into from
Oct 18, 2024

Conversation

Ahmed-Aladdiin
Copy link
Collaborator

No description provided.

@marwan2232004 marwan2232004 merged commit c23b09d into authentication Oct 18, 2024
Mo2Hefny added a commit that referenced this pull request Oct 29, 2024
* FEATURE(AUTH-CROSS): Implement the # screen with its components (#2)

* refactor(widget_test): correct app name

* feat(ui): add Palette class for managing colors

* style(ui): modified Palette class

* feat(auth): add # route

* feat(auth): add #-ui

* style(auth): add authTheme

* refactor(auth): add auth widgets

* refactor(auth): add dimensions and sizes classes

* refactor(auth): change app name to telware

* refactor(auth): add circle_button widget

* style(auth): switch to dimensions and sizes classes

* feat(auth): secure the password field

* feat(auth): adding validations

* chore(auth): adding shake and vibration packages

* refactor(auth): correcting title name

* refactor(auth): removing redundant import

* refactor(auth): rename the theme

* refactor(auth): convert to StatefulWidget and add TextButton

* refactor(auth): convert to appTheme

* refactor(auth): add extra dimension

* refactor(auth): remove redundant condition

* refactor(auth): remove redundant code and convert to StatefulWidget

* FEAT(AUTH-CROSS): Initiate the basic structure of the model and view-model (#3)

* fix: correct app name to telware

* feat(login-flow): create an enum for the different states of authentication

* feat(auth): create a token provider

* feat: initialize custom_lints

* feat(auth): create the local repository for authentication

* feat(auth): create the authentication view model

* feat(auth): initialize the authentication process in the TelWare widget

* doc(auth): add a todo to create the user provider

* feat(auth): open Hive box for auth tokens

* feat(auth): create the splash screen

---------

Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>

* refactor(auth): simplify the sign-up screen code (#4)

* FEAT(AUTH-CROSS): Build the UI for the Log In screen (#5)

* refactor(auth): simplify the sign-up screen code

* chor(auth-cross): add the social media login icons

* feat: add new routes

* feat(auth-cross): build login screen ui

* refactor(auth-cross): move the social login widget to a separate file

* feat(auth-cross): add forget password button to login screen

* feat(auth-cross): make a widget for the auth floating action button

---------

Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>

* FEATURE(AUTH-CROSS): Implement # logic (#7)

* feat(auth): add userModel

* feat(auth): create user provider

* refactor(auth): remove redundant import

* feat(auth): create app error class

* feat(auth): add user model to local repository

* feat(auth): create remote repository

* feat(auth): add # logic to auth-view-model

* fix(auth): add null check

* feat(auth): create dio base options

* feat(auth): update # logic and convert to ConsumerStatefulWidget

* refactor(auth): remove dummy files

* refactor(auth): remove todo comments

* feat(auth): open user model hive box

* fix(auth): correct the image path

* fix(auth): register the user model to hive

* fix(auth): remove password field

* fix(auth): syntax error

* FEAT(AUTH-CROSS): Verification-UI (#8)

* feat(auth): add action to on press function

* refactor(auth): make the code more modular

* chore(auth): add package for code verification

* refactor(auth): modify names and input parameters for better usage.

* feat(auth): add verification length

* feat(auth): add verification screen ui

* feat(auth): add confirmation dialog

* refactor(auth): remove redundant code

* refactor(auth): remove verification from login logic

* chore(auth): add phone_form_field package

* style(auth): enhancing the parameters for better usage

* feat(auth): add phone field widget

* refactor(auth): modify the input values

* refactor(auth): improve ui styles

* FEATURE(AUTH):  Implement log in logic (#9)

* feat(auth-cross): use the initial route property

* fix(auth): remove unnecessary import

* ref: add todo's to marwan

* feat(auth): implement the log in functionality

* feat(auth): implement log in and forgot password logic

* feat(auth): update auth state to a class

* feat(auth): add show toast and snack bar utils

* feat(auth): add delete token or user functionalities to the authentication local repository

* fix(auth): fix used status code in the log in logic

* feat(auth): add the success state to the AuthStateType

* feat(auth): connect the ui with the logic for the log in feature

* feat(auth): add the log out functionality

* fix(auth): handle different states for the forgot password method

* fix(auth): recompile generated files

---------

Co-authored-by: marwan2232004 <118024824+marwan2232004@users.noreply.github.com>

* feat(auth): add testing keys to the log in (#10)

specify the type of the keys

* feat(auth): handle log in without being verified scenario (#11)

* FEAT: Change the app icon and Splash screen icon (#12)

* feat: create app icon

* feat: update the splash screen with the logo and app name

* fix: correctly check success status codes

* feat: update user model to match api documentation

* fix: user correct key names in initialization

* feat: change get user method name to get me

* FIX: correctly validate passowrds and send email to verificatoin screen

feat(auth): add password validator

feat: add password validator and send the email to the verification screen

* feat(user): add profile info submission and validation

* feat(user): add profile info submission and validation

* feat(user): add profile info submission and validation

* feat(user): add profile header with animation

* feat(user): add profile info submission and validation

* feat(user): add profile info submission and validation

* refact: Refactor main.dart and core files

* feat(user): add change number option for the user

* feat(auth): blocked users screen

* refactor(auth): generalize the widgets

* refactor(auth): generalize the widgets

* feat(auth): blocked users section

* style(user-profile): reformat code

* refactor(user-profile): add new color

* refactor(user-profile): optimize code

* chore(user-profile): add lottie package

* refactor(user-profile): add height to trailing

* feat(user-profile): block user screen #turn  1

* feat(user-profile): easter duck tgs

* feat(user-profile): modify settings widget

* chore(user-profile): add dependencies

* refactor(user-profile): optimize code.

* feat(user-profile): add block users colors.

* feat(user-profile): enhance ```formatPhoneNumber```, add getRandomColor.

* feat(user-profile): add contacts hive box

* feat(user-profile): put permission for reading contacts.

* feat(user-profile): add contact model.

* feat(user-profile): read and store contacts in hive.

* feat(user-profile): add displaying image from memory or an avatar

* feat(user-profile): empty chat screen widget

* feat(user-profile): avatar generator from name initials

* feat(user-profile): reading contacts from hive, adding tabBar

* feat(user-profile): block user confirmation dialog.

* feat(user-profile): block user navigations.

* feat(block-users): solve testing problem.

* feat(block-users): solve testing problem.

---------

Co-authored-by: Ahmed Aladdin Mohamed <118504851+Ahmed-Aladdiin@users.noreply.github.com>
Co-authored-by: Ahmed Aladdin <aamieeu@gmail.com>
Co-authored-by: Mo2Hefny <moamensaied1@gmail.com>
Ahmed-Aladdiin added a commit that referenced this pull request Nov 1, 2024
* Setup (#1)

* docs: Update README to reference the `PROJECT_FLOW.md`

* refactor: remove boilerplate code

* refactor: use TalWare app name

* feat: add starter packages

* docs(gitignore): ignore auto generated flutter plugins files

* refactor: build the basic project structure

---------

Co-authored-by: Mo2Hefny <moamensaied1@gmail.com>

* FEATURE(AUTH-CROSS): Implement the # screen with its components (#2)

* refactor(widget_test): correct app name

* feat(ui): add Palette class for managing colors

* style(ui): modified Palette class

* feat(auth): add # route

* feat(auth): add #-ui

* style(auth): add authTheme

* refactor(auth): add auth widgets

* refactor(auth): add dimensions and sizes classes

* refactor(auth): change app name to telware

* refactor(auth): add circle_button widget

* style(auth): switch to dimensions and sizes classes

* feat(auth): secure the password field

* feat(auth): adding validations

* chore(auth): adding shake and vibration packages

* refactor(auth): correcting title name

* refactor(auth): removing redundant import

* refactor(auth): rename the theme

* refactor(auth): convert to StatefulWidget and add TextButton

* refactor(auth): convert to appTheme

* refactor(auth): add extra dimension

* refactor(auth): remove redundant condition

* refactor(auth): remove redundant code and convert to StatefulWidget

* FEAT(AUTH-CROSS): Initiate the basic structure of the model and view-model (#3)

* fix: correct app name to telware

* feat(login-flow): create an enum for the different states of authentication

* feat(auth): create a token provider

* feat: initialize custom_lints

* feat(auth): create the local repository for authentication

* feat(auth): create the authentication view model

* feat(auth): initialize the authentication process in the TelWare widget

* doc(auth): add a todo to create the user provider

* feat(auth): open Hive box for auth tokens

* feat(auth): create the splash screen

---------

Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>

* refactor(auth): simplify the sign-up screen code (#4)

* FEAT(AUTH-CROSS): Build the UI for the Log In screen (#5)

* refactor(auth): simplify the sign-up screen code

* chor(auth-cross): add the social media login icons

* feat: add new routes

* feat(auth-cross): build login screen ui

* refactor(auth-cross): move the social login widget to a separate file

* feat(auth-cross): add forget password button to login screen

* feat(auth-cross): make a widget for the auth floating action button

---------

Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>

* FEATURE(AUTH-CROSS): Implement # logic (#7)

* feat(auth): add userModel

* feat(auth): create user provider

* refactor(auth): remove redundant import

* feat(auth): create app error class

* feat(auth): add user model to local repository

* feat(auth): create remote repository

* feat(auth): add # logic to auth-view-model

* fix(auth): add null check

* feat(auth): create dio base options

* feat(auth): update # logic and convert to ConsumerStatefulWidget

* refactor(auth): remove dummy files

* refactor(auth): remove todo comments

* feat(auth): open user model hive box

* fix(auth): correct the image path

* fix(auth): register the user model to hive

* fix(auth): remove password field

* fix(auth): syntax error

* FEAT(AUTH-CROSS): Verification-UI (#8)

* feat(auth): add action to on press function

* refactor(auth): make the code more modular

* chore(auth): add package for code verification

* refactor(auth): modify names and input parameters for better usage.

* feat(auth): add verification length

* feat(auth): add verification screen ui

* feat(auth): add confirmation dialog

* refactor(auth): remove redundant code

* refactor(auth): remove verification from login logic

* chore(auth): add phone_form_field package

* style(auth): enhancing the parameters for better usage

* feat(auth): add phone field widget

* refactor(auth): modify the input values

* refactor(auth): improve ui styles

* FEATURE(AUTH):  Implement log in logic (#9)

* feat(auth-cross): use the initial route property

* fix(auth): remove unnecessary import

* ref: add todo's to marwan

* feat(auth): implement the log in functionality

* feat(auth): implement log in and forgot password logic

* feat(auth): update auth state to a class

* feat(auth): add show toast and snack bar utils

* feat(auth): add delete token or user functionalities to the authentication local repository

* fix(auth): fix used status code in the log in logic

* feat(auth): add the success state to the AuthStateType

* feat(auth): connect the ui with the logic for the log in feature

* feat(auth): add the log out functionality

* fix(auth): handle different states for the forgot password method

* fix(auth): recompile generated files

---------

Co-authored-by: marwan2232004 <118024824+marwan2232004@users.noreply.github.com>

* feat(auth): add testing keys to the log in (#10)

specify the type of the keys

* feat(auth): handle log in without being verified scenario (#11)

* FEAT: Change the app icon and Splash screen icon (#12)

* feat: create app icon

* feat: update the splash screen with the logo and app name

* fix: correctly check success status codes

* feat: update user model to match api documentation

* fix: user correct key names in initialization

* feat: change get user method name to get me

* FIX: correctly validate passowrds and send email to verificatoin screen

feat(auth): add password validator

feat: add password validator and send the email to the verification screen

* FEAT(AUTH): Implement log out methods (#13)

* feat(home): Create the app drawer (#14)

* feat: initial app drawer

* feat: create the app drawer

* FEATURE(AUTH): # logic (#15)

* chore(auth): add .env file

* refactor(auth): add authenticated state

* feat(auth): add captcha

* feat(auth): add captcha and # logic

* feat(auth): add verification logic

* refactor(auth): modify captcha logic

* feat: update password validator

* fix: change error message for resend confirmation

---------

Co-authored-by: Ahmed Aladdin Mohamed <118504851+Ahmed-Aladdiin@users.noreply.github.com>

* FEAT: Stories (#17)

* FEAT(STORIES-HEADER-UI): Implement the ui of the story header in the chats screen

* FEAT(STORIES-MVVM-SETUP): Implement the arch for the mvvm arch

* FEAT(STORIES-MVVM-SETUP): Implement the arch for the mvvm arch

* FEAT(STORIES-MVVM-Implement): Implement the architecture logic for getting the users and their story, storing them using Hive

* FEAT(STORIES-MVVM-Implement): Implement the architecture logic for getting the users and their story, storing them using Hive

* FEAT(Add-STORIES-UI): Implement UI for add stories from camera or gallery

* FEAT(Add-STORIES-UI): Implement Logic for add stories from camera or gallery

* FEAT(Add-STORIES-SEENS): Implement UI and Logic for seens in stories

* FEAT(Add-STORIES-SEENS): Implement UI and Logic for seens in stories

* REF(STORIES): refactored the repository and view-model names from user to contact for better meaning

* FEAT(STORIES): Implement storage contacts in local storage to be available offline

* FEAT(STORIES): Implement save stories in storage to be available offline

* FEAT(STORIES): Implement cropping stories and draw on it before posting

* FEAT(STORIES): Implement Adaptivity in Home Screen

---------

Co-authored-by: Bishoywadea <bishoyw.fathy@gmail.com>

* FIX: Complete the integration between the Stories and Authentication (#18)

* fix: initial merging of stories and authentication

* fix: using wrong hive box for ContactModel

* fix: solve the problem with the drawer not opening

* feat(user): Add user settings and profile related pages (#19)

* feat(user): add change number option for the user

* feat(user): add change number option for the user

* feat(user): add profile info submission and validation

* feat(user): add profile header with animation

* feat(user): add change number option for the user

* feat(user): add change number option for the user

* feat(user): add change number option for the user

* feat(user): add change number option for the user

* refactor(auth): generalize the widgets

* refactor(auth): generalize the widgets

* feat(user): add change number option for the user

* feat(user): add change number option for the user

* feat(user): add change number option for the user

* refactor(user-profile): optimize code

* refactor(user-profile): add height to trailing

* feat(user-profile): block user screen #turn  1

* feat(user-profile): easter duck tgs

* feat(user): add change number option for the user

* refact(user): Integrate user settings with develop.

* test(user): add settings section unittest

---------

Co-authored-by: marwan2232004 <118024824+marwan2232004@users.noreply.github.com>

* test: Create flutter-test.yml

* TEST(USER): test user related widgets (#21)

* feat(users): Add blocking feature (#22)

* FEATURE(AUTH-CROSS): Implement the # screen with its components (#2)

* refactor(widget_test): correct app name

* feat(ui): add Palette class for managing colors

* style(ui): modified Palette class

* feat(auth): add # route

* feat(auth): add #-ui

* style(auth): add authTheme

* refactor(auth): add auth widgets

* refactor(auth): add dimensions and sizes classes

* refactor(auth): change app name to telware

* refactor(auth): add circle_button widget

* style(auth): switch to dimensions and sizes classes

* feat(auth): secure the password field

* feat(auth): adding validations

* chore(auth): adding shake and vibration packages

* refactor(auth): correcting title name

* refactor(auth): removing redundant import

* refactor(auth): rename the theme

* refactor(auth): convert to StatefulWidget and add TextButton

* refactor(auth): convert to appTheme

* refactor(auth): add extra dimension

* refactor(auth): remove redundant condition

* refactor(auth): remove redundant code and convert to StatefulWidget

* FEAT(AUTH-CROSS): Initiate the basic structure of the model and view-model (#3)

* fix: correct app name to telware

* feat(login-flow): create an enum for the different states of authentication

* feat(auth): create a token provider

* feat: initialize custom_lints

* feat(auth): create the local repository for authentication

* feat(auth): create the authentication view model

* feat(auth): initialize the authentication process in the TelWare widget

* doc(auth): add a todo to create the user provider

* feat(auth): open Hive box for auth tokens

* feat(auth): create the splash screen

---------

Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>

* refactor(auth): simplify the sign-up screen code (#4)

* FEAT(AUTH-CROSS): Build the UI for the Log In screen (#5)

* refactor(auth): simplify the sign-up screen code

* chor(auth-cross): add the social media login icons

* feat: add new routes

* feat(auth-cross): build login screen ui

* refactor(auth-cross): move the social login widget to a separate file

* feat(auth-cross): add forget password button to login screen

* feat(auth-cross): make a widget for the auth floating action button

---------

Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>

* FEATURE(AUTH-CROSS): Implement # logic (#7)

* feat(auth): add userModel

* feat(auth): create user provider

* refactor(auth): remove redundant import

* feat(auth): create app error class

* feat(auth): add user model to local repository

* feat(auth): create remote repository

* feat(auth): add # logic to auth-view-model

* fix(auth): add null check

* feat(auth): create dio base options

* feat(auth): update # logic and convert to ConsumerStatefulWidget

* refactor(auth): remove dummy files

* refactor(auth): remove todo comments

* feat(auth): open user model hive box

* fix(auth): correct the image path

* fix(auth): register the user model to hive

* fix(auth): remove password field

* fix(auth): syntax error

* FEAT(AUTH-CROSS): Verification-UI (#8)

* feat(auth): add action to on press function

* refactor(auth): make the code more modular

* chore(auth): add package for code verification

* refactor(auth): modify names and input parameters for better usage.

* feat(auth): add verification length

* feat(auth): add verification screen ui

* feat(auth): add confirmation dialog

* refactor(auth): remove redundant code

* refactor(auth): remove verification from login logic

* chore(auth): add phone_form_field package

* style(auth): enhancing the parameters for better usage

* feat(auth): add phone field widget

* refactor(auth): modify the input values

* refactor(auth): improve ui styles

* FEATURE(AUTH):  Implement log in logic (#9)

* feat(auth-cross): use the initial route property

* fix(auth): remove unnecessary import

* ref: add todo's to marwan

* feat(auth): implement the log in functionality

* feat(auth): implement log in and forgot password logic

* feat(auth): update auth state to a class

* feat(auth): add show toast and snack bar utils

* feat(auth): add delete token or user functionalities to the authentication local repository

* fix(auth): fix used status code in the log in logic

* feat(auth): add the success state to the AuthStateType

* feat(auth): connect the ui with the logic for the log in feature

* feat(auth): add the log out functionality

* fix(auth): handle different states for the forgot password method

* fix(auth): recompile generated files

---------

Co-authored-by: marwan2232004 <118024824+marwan2232004@users.noreply.github.com>

* feat(auth): add testing keys to the log in (#10)

specify the type of the keys

* feat(auth): handle log in without being verified scenario (#11)

* FEAT: Change the app icon and Splash screen icon (#12)

* feat: create app icon

* feat: update the splash screen with the logo and app name

* fix: correctly check success status codes

* feat: update user model to match api documentation

* fix: user correct key names in initialization

* feat: change get user method name to get me

* FIX: correctly validate passowrds and send email to verificatoin screen

feat(auth): add password validator

feat: add password validator and send the email to the verification screen

* feat(user): add profile info submission and validation

* feat(user): add profile info submission and validation

* feat(user): add profile info submission and validation

* feat(user): add profile header with animation

* feat(user): add profile info submission and validation

* feat(user): add profile info submission and validation

* refact: Refactor main.dart and core files

* feat(user): add change number option for the user

* feat(auth): blocked users screen

* refactor(auth): generalize the widgets

* refactor(auth): generalize the widgets

* feat(auth): blocked users section

* style(user-profile): reformat code

* refactor(user-profile): add new color

* refactor(user-profile): optimize code

* chore(user-profile): add lottie package

* refactor(user-profile): add height to trailing

* feat(user-profile): block user screen #turn  1

* feat(user-profile): easter duck tgs

* feat(user-profile): modify settings widget

* chore(user-profile): add dependencies

* refactor(user-profile): optimize code.

* feat(user-profile): add block users colors.

* feat(user-profile): enhance ```formatPhoneNumber```, add getRandomColor.

* feat(user-profile): add contacts hive box

* feat(user-profile): put permission for reading contacts.

* feat(user-profile): add contact model.

* feat(user-profile): read and store contacts in hive.

* feat(user-profile): add displaying image from memory or an avatar

* feat(user-profile): empty chat screen widget

* feat(user-profile): avatar generator from name initials

* feat(user-profile): reading contacts from hive, adding tabBar

* feat(user-profile): block user confirmation dialog.

* feat(user-profile): block user navigations.

* feat(block-users): solve testing problem.

* feat(block-users): solve testing problem.

---------

Co-authored-by: Ahmed Aladdin Mohamed <118504851+Ahmed-Aladdiin@users.noreply.github.com>
Co-authored-by: Ahmed Aladdin <aamieeu@gmail.com>
Co-authored-by: Mo2Hefny <moamensaied1@gmail.com>

* FEAT: Implement the OAuth functionality (#24)

* initiate the routing operation

* feat(auth): launch social auth

* feat: complete the oauth log in flow

* feat: use go_router for navigation

* fix: go router doesn't work

* feat: add transition to the # screen

* feat: add the new routes

* refactor: use go router instead or navigator

* Update settings_section.dart

* FEAT: add mock user functionality (#25)

* initiate the routing operation

* feat(auth): launch social auth

* feat: complete the oauth log in flow

* feat: use go_router for navigation

* fix: go router doesn't work

* feat: add transition to the # screen

* feat: add the new routes

* refactor: use go router instead or navigator

* feat: separate the local and remote repository for the auth

* same as before

* feat: mock the user authentication process

* fix: not using go_route in settings

* feat: add temporarly log out functionality

* Feature/stories (#26)

* FEAT(Session Managment): Implement UI for Devices Screen

* FEAT(Stories): Implement functions to integrate with backend

* REF(Stories): refactored the statemangment classes to be keepAlive

* REF(Stories): refactored story screen widget tree

* REF(Stories): refactored take story screen

* REF(Stories): refactored edit taken image screen

* REF(Sessions): add keys for devices screen

* feat(stories): adding .g files.

---------

Co-authored-by: marwan2232004 <118024824+marwan2232004@users.noreply.github.com>

* Test/# (#27)

* feat(auth): add recaptcha again.

* feat(auth): add # keys.

* feat(auth): add # and verification keys.

* feat(auth): modify # body.

* feat(auth): integration with BE.

* fix(auth): remove unwanted code.

* Integration: integrate the login functionality with the back-end (#29)

* fix: modify the api calling code

* feat: use the user real profile data in the drawer

* feat: use user data in the drawer and profile header

* fix: fix wrong range of status code

* REF(Sessions): add update profile pic

* fix: wrong body in the forget password request

* fix: handle wrong spacing in the login and # screens

* feat: make the screen name 'No Name' in case of the using not having a name

* fix: merge brackets problem

* Update main.dart

* Update main.dart

* fix: add a missing import in the # screen

---------

Co-authored-by: Bishoywadea <bishoyw.fathy@gmail.com>

* feat: update the .gitignore

* fix: remove dublicate code from settings screen

* feat(user): add user view model (#31)

* feat(user): add local and remote repository providers

* feat(user): add user view model

* feat(user): update the screens to use the view model

* chore: add devtools options

* refact: handle conflicts

* feat(user): add username functionality

* refact(auth): naming convention. (#32)

* refactor(auth): naming convention.

* refactor(auth): remove empty tests.

---------

Co-authored-by: Mo2Hefny <moamensaied1@gmail.com>

---------

Co-authored-by: Mo2Hefny <moamensaied1@gmail.com>
Co-authored-by: Marwan Alhameedy <118024824+marwan2232004@users.noreply.github.com>
Co-authored-by: Bishoywadea <bishoyw.fathy@gmail.com>
Co-authored-by: Moamen Hefny <111001850+Mo2Hefny@users.noreply.github.com>
Co-authored-by: -NoName <108888519+Bishoywadea@users.noreply.github.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants