Skip to content

Commit 24d70db

Browse files
Ahmed-AladdiinMo2Hefnymarwan2232004Bishoywadea
authored
TelWare First Release (#33)
* 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 sign up 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 signup route * feat(auth): add signup-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 sign up 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 signUp logic to auth-view-model * fix(auth): add null check * feat(auth): create dio base options * feat(auth): update signUp 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): Signup logic (#15) * chore(auth): add .env file * refactor(auth): add authenticated state * feat(auth): add captcha * feat(auth): add captcha and signup 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 sign up 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 signup route * feat(auth): add signup-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 sign up 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 signUp logic to auth-view-model * fix(auth): add null check * feat(auth): create dio base options * feat(auth): update signUp 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 sign up 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 sign up 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/sign up (#27) * feat(auth): add recaptcha again. * feat(auth): add signup keys. * feat(auth): add signup and verification keys. * feat(auth): modify signup 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 sign up 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 sign up 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>
1 parent 5e10e73 commit 24d70db

193 files changed

Lines changed: 10701 additions & 895 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/flutter-test.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Flutter Test
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
- main
8+
pull_request:
9+
branches:
10+
- develop
11+
- main
12+
13+
jobs:
14+
test:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Checkout the code
19+
uses: actions/checkout@v2
20+
- name: Install and set Flutter version
21+
uses: subosito/flutter-action@v2
22+
with:
23+
flutter-version: '3.24.3'
24+
- name: Create .env file
25+
run: |
26+
echo "${{ secrets.ENV_CONTENT }}" > lib/.env
27+
- name: Install dependencies
28+
run: flutter pub get
29+
- name: Run tests
30+
run: flutter test --coverage

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ flutter_*.png
1010
.vscode/
1111

1212
# Miscellaneous
13+
.env
1314
*.log
1415
*.lock
1516
*.pyc
@@ -18,3 +19,5 @@ flutter_*.png
1819
*.swp
1920
*.DS_Store
2021
*.iml
22+
.flutter-plugins*
23+
coverage/

analysis_options.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,9 @@ linter:
2424
# avoid_print: false # Uncomment to disable the `avoid_print` rule
2525
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
2626

27+
analyzer:
28+
plugins:
29+
- custom_lint
30+
2731
# Additional information about this file can be found at
2832
# https://dart.dev/guides/language/analysis-options

android/app/src/main/AndroidManifest.xml

Lines changed: 53 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,72 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
2+
<uses-permission android:name="android.permission.CAMERA"/>
3+
<uses-permission android:name="android.permission.READ_CONTACTS"/>
4+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
5+
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
6+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
7+
<uses-permission android:name="android.permission.INTERNET"/>
8+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
9+
<uses-permission android:name="android.permission.WAKE_LOCK"/>
10+
11+
<queries>
12+
<intent>
13+
<action android:name="android.intent.action.VIEW" />
14+
<data android:scheme="https" />
15+
</intent>
16+
<intent>
17+
<action android:name="android.intent.action.VIEW" />
18+
<data android:scheme="http" />
19+
</intent>
20+
</queries>
21+
222
<application
3-
android:label="telware_cross_platform"
4-
android:name="${applicationName}"
5-
android:icon="@mipmap/ic_launcher">
23+
android:usesCleartextTraffic="true"
24+
android:label="TelWare"
25+
android:name="${applicationName}"
26+
android:icon="@mipmap/launcher_icon">
627
<activity
7-
android:name=".MainActivity"
8-
android:exported="true"
9-
android:launchMode="singleTop"
10-
android:taskAffinity=""
11-
android:theme="@style/LaunchTheme"
12-
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
13-
android:hardwareAccelerated="true"
14-
android:windowSoftInputMode="adjustResize">
28+
android:name=".MainActivity"
29+
android:exported="true"
30+
android:launchMode="singleTop"
31+
android:taskAffinity=""
32+
android:theme="@style/LaunchTheme"
33+
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
34+
android:hardwareAccelerated="true"
35+
android:windowSoftInputMode="adjustResize">
1536
<!-- Specifies an Android theme to apply to this Activity as soon as
1637
the Android process has started. This theme is visible to the user
1738
while the Flutter UI initializes. After that, this theme continues
1839
to determine the Window background behind the Flutter UI. -->
1940
<meta-data
20-
android:name="io.flutter.embedding.android.NormalTheme"
21-
android:resource="@style/NormalTheme"
22-
/>
41+
android:name="io.flutter.embedding.android.NormalTheme"
42+
android:resource="@style/NormalTheme"
43+
/>
2344
<intent-filter>
2445
<action android:name="android.intent.action.MAIN"/>
2546
<category android:name="android.intent.category.LAUNCHER"/>
2647
</intent-filter>
48+
<meta-data
49+
android:name="flutter_deeplinking_enabled"
50+
android:value="true"
51+
/>
52+
<intent-filter android:autoVerify="true">
53+
<action android:name="android.intent.action.VIEW"/>
54+
<category android:name="android.intent.category.DEFAULT"/>
55+
<category android:name="android.intent.category.BROWSABLE"/>
56+
<data android:scheme="telware" android:host="telware.online"/>
57+
<!-- <data android:scheme="http" android:host="mytelwareauth.org"/>
58+
<data android:scheme="https"/> -->
59+
</intent-filter>
2760
</activity>
61+
<activity
62+
android:name="com.yalantis.ucrop.UCropActivity"
63+
android:screenOrientation="portrait"
64+
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
2865
<!-- Don't delete the meta-data below.
2966
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
3067
<meta-data
31-
android:name="flutterEmbedding"
32-
android:value="2" />
68+
android:name="flutterEmbedding"
69+
android:value="2"/>
3370
</application>
3471
<!-- Required to query activities that can process text, see:
3572
https://developer.android.com/training/package-visibility and
543 Bytes
18 KB
358 Bytes
9.71 KB
710 Bytes
27.6 KB

0 commit comments

Comments
 (0)