├── .github
├── FUNDING.yml
└── workflows
│ └── main.yml
├── .gitignore
├── .metadata
├── LICENCE.md
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── google-services.json
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── groovinchip
│ │ │ │ └── flutter
│ │ │ │ └── callmanager
│ │ │ │ └── MainActivity.java
│ │ ├── launcher_icon-web.png
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ ├── ic_notification.png
│ │ │ └── ic_stat_phone_in_talk.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── ic_notification.png
│ │ │ └── ic_stat_phone_in_talk.png
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ ├── ic_notification.png
│ │ │ └── ic_stat_phone_in_talk.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── ic_notification.png
│ │ │ └── ic_stat_phone_in_talk.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_stat_phone_in_talk.png
│ │ │ ├── drawable
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ ├── ic_launcher_round.xml
│ │ │ ├── launcher_icon.xml
│ │ │ └── launcher_icon_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher_round.png
│ │ │ ├── launcher_icon.png
│ │ │ └── launcher_icon_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher_round.png
│ │ │ ├── launcher_icon.png
│ │ │ └── launcher_icon_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher_round.png
│ │ │ ├── launcher_icon.png
│ │ │ └── launcher_icon_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher_round.png
│ │ │ ├── launcher_icon.png
│ │ │ └── launcher_icon_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ ├── ic_launcher_round.png
│ │ │ ├── launcher_icon.png
│ │ │ └── launcher_icon_round.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── settings_aar.gradle
├── assets
├── glogo.png
└── icon
│ └── call_manager_app_icon.png
├── fonts
├── SourceSansPro-Black.ttf
├── SourceSansPro-BlackItalic.ttf
├── SourceSansPro-Bold.ttf
├── SourceSansPro-BoldItalic.ttf
├── SourceSansPro-ExtraLight.ttf
├── SourceSansPro-ExtraLightItalic.ttf
├── SourceSansPro-Italic.ttf
├── SourceSansPro-Light.ttf
├── SourceSansPro-LightItalic.ttf
├── SourceSansPro-Regular.ttf
├── SourceSansPro-SemiBold.ttf
└── SourceSansPro-SemiBoldItalic.ttf
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── icon_1024@1x.png
│ │ ├── icon_20@1x.png
│ │ ├── icon_20@2x-1.png
│ │ ├── icon_20@2x.png
│ │ ├── icon_20@3x.png
│ │ ├── icon_29@1x-1.png
│ │ ├── icon_29@1x.png
│ │ ├── icon_29@2x-1.png
│ │ ├── icon_29@2x.png
│ │ ├── icon_29@3x.png
│ │ ├── icon_40@1x.png
│ │ ├── icon_40@2x-1.png
│ │ ├── icon_40@2x.png
│ │ ├── icon_40@3x.png
│ │ ├── icon_60@2x.png
│ │ ├── icon_60@3x.png
│ │ ├── icon_76@1x.png
│ │ ├── icon_76@2x.png
│ │ └── icon_83.5@2x.png
│ ├── Contents.json
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ ├── Runner-Bridging-Header.h
│ └── Runner.entitlements
├── lib
├── app.dart
├── data_models
│ └── call.dart
├── firebase
│ ├── fb_type_aliases.dart
│ ├── firebase.dart
│ ├── firebase_auth_extensions.dart
│ ├── firebase_mixin.dart
│ └── firestore_extensions.dart
├── generated_plugin_registrant.dart
├── main.dart
├── provided.dart
├── screens
│ ├── edit_call_screen.dart
│ ├── home_screen.dart
│ ├── login_screen.dart
│ └── new_call_screen.dart
├── services
│ ├── contacts_utility.dart
│ ├── notifications_service.dart
│ ├── phone_utility.dart
│ └── prefs_service.dart
├── theme
│ ├── app_colors.dart
│ └── app_themes.dart
├── utils
│ ├── extensions.dart
│ └── pass_notification.dart
└── widgets
│ ├── call_avatar.dart
│ ├── call_card.dart
│ ├── calls_view.dart
│ ├── clear_button.dart
│ ├── contact_avatar.dart
│ ├── contact_tile.dart
│ ├── dialogs
│ ├── complete_call_dialog.dart
│ ├── delete_all_dialog.dart
│ ├── delete_call_dialog.dart
│ ├── log_out_dialog.dart
│ ├── mark_incomplete_dialog.dart
│ └── theme_switcher_dialog.dart
│ ├── menu_bottom_sheet.dart
│ ├── multiple_phone_numbers_sheet.dart
│ ├── schedule_notification_sheet.dart
│ ├── theme_icon.dart
│ └── user_account_avatar.dart
├── macos
├── .gitignore
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ ├── Flutter-Release.xcconfig
│ └── GeneratedPluginRegistrant.swift
├── Podfile
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── app_icon_1024.png
│ │ ├── app_icon_128.png
│ │ ├── app_icon_16.png
│ │ ├── app_icon_256.png
│ │ ├── app_icon_32.png
│ │ ├── app_icon_512.png
│ │ └── app_icon_64.png
│ ├── Base.lproj
│ └── MainMenu.xib
│ ├── Configs
│ ├── AppInfo.xcconfig
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── Warnings.xcconfig
│ ├── DebugProfile.entitlements
│ ├── Info.plist
│ ├── MainFlutterWindow.swift
│ └── Release.entitlements
├── privacy policy.txt
├── pubspec.lock
├── pubspec.yaml
├── test
└── widget_test.dart
└── web
├── favicon.png
├── icons
├── Icon-192.png
└── Icon-512.png
├── index.html
└── manifest.json
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [GroovinChip]
4 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Call Manager CI
2 | on:
3 | push:
4 | branches: [ master ]
5 | pull_request:
6 | branches: [ master ]
7 | jobs:
8 | build:
9 | name: Build APK
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: base64-to-file
13 | id: write_file
14 | uses: timheuer/base64-to-file@v1
15 | with:
16 | fileName: 'call_manager_key.jks'
17 | encodedString: ${{ secrets.SIGNING_KEY }}
18 | - uses: actions/checkout@v2
19 | - uses: actions/setup-java@v1
20 | with:
21 | java-version: '12.x'
22 | env:
23 | SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
24 | - uses: subosito/flutter-action@v1
25 | with:
26 | flutter-version: '2.0.3'
27 | fileLocation: ${{ steps.write_file.outputs.filePath }}
28 | - run: flutter pub get
29 | - run: flutter analyze
30 | # - run: flutter build apk --split-per-abi
31 | # env:
32 | # KEY_STORE_PASSWORD: ${{ secrets.KEY_STORE_PASSWORD }}
33 | # KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
34 | # ALIAS: ${{ secrets.ALIAS }}
35 | # KEY_PATH: ${{ steps.write_file.outputs.filePath }}
36 | # - name: Create a Release APK
37 | # uses: ncipollo/release-action@v1
38 | # with:
39 | # artifacts: "build/app/outputs/flutter-apk/*.apk"
40 | # token: ${{ secrets.TOKEN }}
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .dart_tool/
3 |
4 | .packages
5 | .pub/
6 | .idea/
7 |
8 | build/
9 |
10 | .flutter-plugins
11 | .flutter-plugins-dependencies
12 | *android/app/call_manager_key.jks
13 | android/key.properties
14 | *.iml
15 | /metrics
16 | .vscode/launch.json
17 | detective_connect.txt
18 |
19 | *.patch
20 | .vscode/launch.json
21 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d
8 | channel: beta
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Call Manager
2 |
3 | Call Manager is a cross-platform application for scheduling and keeping track of phone calls. Think of it as a "to-do" list, dedicated to phone calls.
4 |
5 | Features:
6 | - Add phone calls to your list as Call Cards. Call Cards have one-tap actions for accomplishing tasks for that call, like:
7 | - Call
8 | - Send SMS
9 | - Edit Call
10 | - Set Notification Reminder
11 | - Delete Call
12 | - Clean, simple interface
13 | - Light/dark/system themes
14 |
15 | Call Manager is available on the Google Play Store and the Apple App Store. It is compatible with Apple Silicon, and a dedicated macOS version will be coming later this year. You can also download the app right from the Releases section of this repository.
16 |
17 |
18 |
19 |
20 |
21 | Google Play and the Google Play logo are trademarks of Google LLC.
22 |
23 | ## Contribute
24 | If you would like to contribute to this application:
25 | 1. Fork the repository
26 | 2. Clone the repository to your machine
27 | 3. Create an app in the Firebase console, add your SHA1 key, and add the google-services.json file to your android/app directory
28 | 4. Make your changes
29 | 5. Open a pull request
30 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:flutter_lints/flutter.yaml
2 |
3 | linter:
4 | rules:
5 | - prefer_single_quotes
6 | - unnecessary_new
7 | - prefer_contains
8 | - package_names
9 | - non_constant_identifier_names
10 | - library_prefixes
11 | - library_names
12 | - implementation_imports
13 | - file_names
14 | - camel_case_extensions
15 | - camel_case_types
16 | - avoid_empty_else
17 | - avoid_classes_with_only_static_members
18 | - always_declare_return_types
19 | - always_require_non_null_named_parameters
20 |
21 | analyzer:
22 | exclude:
23 | - ios/**
24 | - macos/**
25 | plugins:
26 | - dart_code_metrics
27 |
28 | dart_code_metrics:
29 | anti-patterns:
30 | - long-method
31 | - long-parameter-list
32 | metrics:
33 | cyclomatic-complexity: 20
34 | lines-of-executable-code: 50
35 | number-of-arguments: 4
36 | maximum-nesting: 5
37 | metrics-exclude:
38 | - test/**
39 | rules:
40 | - newline-before-return
41 | - no-boolean-literal-compare
42 | - prefer-trailing-comma
43 | - no-equal-then-else
44 | - potential-null-dereference
45 | - member-ordering:
46 | alphabetize: true
47 | order:
48 | - constructors
49 | - public_fields
50 | - public_setters
51 | - private_fields
52 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | *.class
3 | .gradle
4 | /local.properties
5 | /.idea/workspace.xml
6 | /.idea/libraries
7 | .DS_Store
8 | /build
9 | /captures
10 | GeneratedPluginRegistrant.java
11 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26 |
27 | def keystoreProperties = new Properties()
28 | def keystorePropertiesFile = rootProject.file('key.properties')
29 | if (keystorePropertiesFile.exists()) {
30 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
31 | } else {
32 | keystoreProperties.setProperty('storePassword', System.getenv('KEY_STORE_PASSWORD'));
33 | keystoreProperties.setProperty('keyPassword', System.getenv('KEY_PASSWORD'));
34 | keystoreProperties.setProperty('keyAlias', System.getenv('ALIAS'));
35 | keystoreProperties.setProperty('storeFile', System.getenv('KEY_PATH'));
36 | }
37 |
38 | android {
39 | compileSdkVersion 31
40 |
41 | lintOptions {
42 | disable 'InvalidPackage'
43 | }
44 |
45 | defaultConfig {
46 | applicationId "com.groovinchip.flutter.callmanager"
47 | minSdkVersion 21
48 | targetSdkVersion 31
49 | versionCode flutterVersionCode.toInteger()
50 | versionName flutterVersionName
51 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
52 | }
53 |
54 | signingConfigs {
55 | release {
56 | keyAlias keystoreProperties['keyAlias']
57 | keyPassword keystoreProperties['keyPassword']
58 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
59 | storePassword keystoreProperties['storePassword']
60 | }
61 | }
62 |
63 |
64 | buildTypes {
65 | release {
66 | signingConfig signingConfigs.release
67 | }
68 | }
69 | }
70 |
71 | flutter {
72 | source '../..'
73 | }
74 |
75 | dependencies {
76 | testImplementation 'junit:junit:4.12'
77 | androidTestImplementation 'androidx.test:runner:1.1.0'
78 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
79 | }
80 |
81 | apply plugin: 'com.google.gms.google-services'
82 |
--------------------------------------------------------------------------------
/android/app/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "1053316160376",
4 | "firebase_url": "https://call-manager-flutter-db.firebaseio.com",
5 | "project_id": "call-manager-flutter-db",
6 | "storage_bucket": "call-manager-flutter-db.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:1053316160376:android:9e3c10e86de5057f",
12 | "android_client_info": {
13 | "package_name": "com.groovinchip.flutter.callmanager"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "1053316160376-5juugktuaas98do08thao9iplqmr5fn9.apps.googleusercontent.com",
19 | "client_type": 1,
20 | "android_info": {
21 | "package_name": "com.groovinchip.flutter.callmanager",
22 | "certificate_hash": "11743c6d989da7c5fc95a69f9f8851ef57c3c40b"
23 | }
24 | },
25 | {
26 | "client_id": "1053316160376-a5ophi33ioqa0sp0efc1g9g1p3dug62c.apps.googleusercontent.com",
27 | "client_type": 1,
28 | "android_info": {
29 | "package_name": "com.groovinchip.flutter.callmanager",
30 | "certificate_hash": "bd512282d3192eb10c311691a907423947cff8fc"
31 | }
32 | },
33 | {
34 | "client_id": "1053316160376-e77pbuh7scqba2fgae9fi0r5dt0nerkv.apps.googleusercontent.com",
35 | "client_type": 1,
36 | "android_info": {
37 | "package_name": "com.groovinchip.flutter.callmanager",
38 | "certificate_hash": "902c3abbcc1f45630ea31837eb0492c17f730b4c"
39 | }
40 | },
41 | {
42 | "client_id": "1053316160376-kefg5rq4moi87ppeoh3orf264ap2a2id.apps.googleusercontent.com",
43 | "client_type": 1,
44 | "android_info": {
45 | "package_name": "com.groovinchip.flutter.callmanager",
46 | "certificate_hash": "59ed53cd18e0211dfcb13e67785c58464fc8ea2a"
47 | }
48 | },
49 | {
50 | "client_id": "1053316160376-llj2t9oec98dl6mfs7rfdc3ll3hqravv.apps.googleusercontent.com",
51 | "client_type": 1,
52 | "android_info": {
53 | "package_name": "com.groovinchip.flutter.callmanager",
54 | "certificate_hash": "2428f1f3f6060ea4c36607835d31be2c9429b2c1"
55 | }
56 | },
57 | {
58 | "client_id": "1053316160376-lta90e93askpe441ela6neshdl352j2k.apps.googleusercontent.com",
59 | "client_type": 1,
60 | "android_info": {
61 | "package_name": "com.groovinchip.flutter.callmanager",
62 | "certificate_hash": "3583c159206c49e1c0499a37c83a15ec3df645a1"
63 | }
64 | },
65 | {
66 | "client_id": "1053316160376-uc75rivms55uvv7pa54eb4qgp6vpcr07.apps.googleusercontent.com",
67 | "client_type": 1,
68 | "android_info": {
69 | "package_name": "com.groovinchip.flutter.callmanager",
70 | "certificate_hash": "ffae666c77cb4019976e48a903cc3c235875f9f6"
71 | }
72 | },
73 | {
74 | "client_id": "1053316160376-oe9l5ae2aigre7b7i4a5uqbsbn3scmgg.apps.googleusercontent.com",
75 | "client_type": 3
76 | }
77 | ],
78 | "api_key": [
79 | {
80 | "current_key": "AIzaSyDs2Vch4b2plINC3gqZ3Ksf1GAtquIlvnA"
81 | }
82 | ],
83 | "services": {
84 | "appinvite_service": {
85 | "other_platform_oauth_client": [
86 | {
87 | "client_id": "1053316160376-oe9l5ae2aigre7b7i4a5uqbsbn3scmgg.apps.googleusercontent.com",
88 | "client_type": 3
89 | },
90 | {
91 | "client_id": "1053316160376-117rp70a5ps0s6nk98th54trgsacoaim.apps.googleusercontent.com",
92 | "client_type": 2,
93 | "ios_info": {
94 | "bundle_id": "dev.groovinchip.callmanager"
95 | }
96 | }
97 | ]
98 | }
99 | }
100 | }
101 | ],
102 | "configuration_version": "1"
103 | }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
35 |
43 |
44 |
45 |
46 |
47 |
48 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/java/com/groovinchip/flutter/callmanager/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.groovinchip.flutter.callmanager;
2 |
3 | import io.flutter.embedding.android.FlutterActivity;
4 |
5 | public class MainActivity extends FlutterActivity {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/android/app/src/main/launcher_icon-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/launcher_icon-web.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-hdpi/ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_stat_phone_in_talk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-hdpi/ic_stat_phone_in_talk.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-mdpi/ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_stat_phone_in_talk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-mdpi/ic_stat_phone_in_talk.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-xhdpi/ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_stat_phone_in_talk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-xhdpi/ic_stat_phone_in_talk.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-xxhdpi/ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_stat_phone_in_talk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-xxhdpi/ic_stat_phone_in_talk.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_stat_phone_in_talk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/drawable-xxxhdpi/ic_stat_phone_in_talk.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
9 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/launcher_icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/launcher_icon_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-hdpi/launcher_icon_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/launcher_icon_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-mdpi/launcher_icon_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launcher_icon_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xhdpi/launcher_icon_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/launcher_icon_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxhdpi/launcher_icon_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #2962ff
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #2962FF
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 |
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:4.2.2'
9 | //noinspection GradleDependency
10 | classpath 'com.google.gms:google-services:4.3.8'
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 | subprojects {
29 | project.configurations.all {
30 | resolutionStrategy.eachDependency { details ->
31 | if (details.requested.group == 'com.android.support'
32 | && !details.requested.name.contains('multidex') ) {
33 | details.useVersion "26.1.0"
34 | }
35 | }
36 | }
37 | }
38 |
39 | task clean(type: Delete) {
40 | delete rootProject.buildDir
41 | }
42 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
7 |
--------------------------------------------------------------------------------
/android/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/android/settings_aar.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/assets/glogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/assets/glogo.png
--------------------------------------------------------------------------------
/assets/icon/call_manager_app_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/assets/icon/call_manager_app_icon.png
--------------------------------------------------------------------------------
/fonts/SourceSansPro-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-Black.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-BlackItalic.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-Bold.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-BoldItalic.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-ExtraLight.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-ExtraLight.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-ExtraLightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-ExtraLightItalic.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-Italic.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-Light.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-LightItalic.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-Regular.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-SemiBold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-SemiBold.ttf
--------------------------------------------------------------------------------
/fonts/SourceSansPro-SemiBoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/fonts/SourceSansPro-SemiBoldItalic.ttf
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 9.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '12.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.7.0'
36 | end
37 |
38 | #post_install do |installer|
39 | # installer.pods_project.targets.each do |target|
40 | # flutter_additional_ios_build_settings(target)
41 | # end
42 | #end
43 |
44 | post_install do |installer|
45 | installer.pods_project.targets.each do |target|
46 | flutter_additional_ios_build_settings(target)
47 | target.build_configurations.each do |config|
48 | # Here are some configurations automatically generated by flutter
49 |
50 | # You can remove unused permissions here
51 | # for more infomation: https://github.com/BaseflowIT/flutter-permission-handler/blob/develop/permission_handler/ios/Classes/PermissionHandlerEnums.h
52 | # e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
53 | config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
54 | '$(inherited)',
55 |
56 | ## dart: PermissionGroup.calendar
57 | 'PERMISSION_EVENTS=0',
58 |
59 | ## dart: PermissionGroup.reminders
60 | 'PERMISSION_REMINDERS=0',
61 |
62 | ## dart: PermissionGroup.contacts
63 | 'PERMISSION_CONTACTS=1',
64 |
65 | ## dart: PermissionGroup.camera
66 | 'PERMISSION_CAMERA=0',
67 |
68 | ## dart: PermissionGroup.microphone
69 | 'PERMISSION_MICROPHONE=0',
70 |
71 | ## dart: PermissionGroup.speech
72 | 'PERMISSION_SPEECH_RECOGNIZER=0',
73 |
74 | ## dart: PermissionGroup.photos
75 | 'PERMISSION_PHOTOS=0',
76 |
77 | ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
78 | 'PERMISSION_LOCATION=0',
79 |
80 | ## dart: PermissionGroup.notification
81 | # 'PERMISSION_NOTIFICATIONS=0',
82 |
83 | ## dart: PermissionGroup.mediaLibrary
84 | 'PERMISSION_MEDIA_LIBRARY=0',
85 |
86 | ## dart: PermissionGroup.sensors
87 | 'PERMISSION_SENSORS=0',
88 |
89 | ## dart: PermissionGroup.bluetooth
90 | 'PERMISSION_BLUETOOTH=0'
91 | ]
92 |
93 | end
94 | end
95 | end
96 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - AppAuth (1.4.0):
3 | - AppAuth/Core (= 1.4.0)
4 | - AppAuth/ExternalUserAgent (= 1.4.0)
5 | - AppAuth/Core (1.4.0)
6 | - AppAuth/ExternalUserAgent (1.4.0)
7 | - cloud_firestore (2.5.3):
8 | - Firebase/Firestore (= 8.7.0)
9 | - firebase_core
10 | - Flutter
11 | - contacts_service (0.2.2):
12 | - Flutter
13 | - device_info_plus (0.0.1):
14 | - Flutter
15 | - direct_dialer (0.0.1):
16 | - Flutter
17 | - Firebase/Auth (8.7.0):
18 | - Firebase/CoreOnly
19 | - FirebaseAuth (~> 8.7.0)
20 | - Firebase/CoreOnly (8.7.0):
21 | - FirebaseCore (= 8.7.0)
22 | - Firebase/Firestore (8.7.0):
23 | - Firebase/CoreOnly
24 | - FirebaseFirestore (~> 8.7.0)
25 | - firebase_auth (3.1.3):
26 | - Firebase/Auth (= 8.7.0)
27 | - firebase_core
28 | - Flutter
29 | - firebase_core (1.7.0):
30 | - Firebase/CoreOnly (= 8.7.0)
31 | - Flutter
32 | - FirebaseAuth (8.7.0):
33 | - FirebaseCore (~> 8.0)
34 | - GoogleUtilities/AppDelegateSwizzler (~> 7.4)
35 | - GoogleUtilities/Environment (~> 7.4)
36 | - GTMSessionFetcher/Core (~> 1.5)
37 | - FirebaseCore (8.7.0):
38 | - FirebaseCoreDiagnostics (~> 8.0)
39 | - GoogleUtilities/Environment (~> 7.4)
40 | - GoogleUtilities/Logger (~> 7.4)
41 | - FirebaseCoreDiagnostics (8.8.0):
42 | - GoogleDataTransport (~> 9.0)
43 | - GoogleUtilities/Environment (~> 7.4)
44 | - GoogleUtilities/Logger (~> 7.4)
45 | - nanopb (~> 2.30908.0)
46 | - FirebaseFirestore (8.7.0):
47 | - FirebaseFirestore/AutodetectLeveldb (= 8.7.0)
48 | - FirebaseFirestore/AutodetectLeveldb (8.7.0):
49 | - FirebaseFirestore/Base
50 | - FirebaseFirestore/WithLeveldb
51 | - FirebaseFirestore/Base (8.7.0)
52 | - FirebaseFirestore/WithLeveldb (8.7.0):
53 | - FirebaseFirestore/Base
54 | - Flutter (1.0.0)
55 | - flutter_keyboard_visibility (0.0.1):
56 | - Flutter
57 | - flutter_local_notifications (0.0.1):
58 | - Flutter
59 | - google_sign_in (0.0.1):
60 | - Flutter
61 | - GoogleSignIn (~> 5.0)
62 | - GoogleDataTransport (9.1.0):
63 | - GoogleUtilities/Environment (~> 7.2)
64 | - nanopb (~> 2.30908.0)
65 | - PromisesObjC (< 3.0, >= 1.2)
66 | - GoogleSignIn (5.0.2):
67 | - AppAuth (~> 1.2)
68 | - GTMAppAuth (~> 1.0)
69 | - GTMSessionFetcher/Core (~> 1.1)
70 | - GoogleUtilities/AppDelegateSwizzler (7.5.2):
71 | - GoogleUtilities/Environment
72 | - GoogleUtilities/Logger
73 | - GoogleUtilities/Network
74 | - GoogleUtilities/Environment (7.5.2):
75 | - PromisesObjC (< 3.0, >= 1.2)
76 | - GoogleUtilities/Logger (7.5.2):
77 | - GoogleUtilities/Environment
78 | - GoogleUtilities/Network (7.5.2):
79 | - GoogleUtilities/Logger
80 | - "GoogleUtilities/NSData+zlib"
81 | - GoogleUtilities/Reachability
82 | - "GoogleUtilities/NSData+zlib (7.5.2)"
83 | - GoogleUtilities/Reachability (7.5.2):
84 | - GoogleUtilities/Logger
85 | - GTMAppAuth (1.2.2):
86 | - AppAuth/Core (~> 1.4)
87 | - GTMSessionFetcher/Core (~> 1.5)
88 | - GTMSessionFetcher/Core (1.7.0)
89 | - nanopb (2.30908.0):
90 | - nanopb/decode (= 2.30908.0)
91 | - nanopb/encode (= 2.30908.0)
92 | - nanopb/decode (2.30908.0)
93 | - nanopb/encode (2.30908.0)
94 | - package_info (0.0.1):
95 | - Flutter
96 | - path_provider (0.0.1):
97 | - Flutter
98 | - "permission_handler (5.1.0+2)":
99 | - Flutter
100 | - PromisesObjC (2.0.0)
101 | - shared_preferences (0.0.1):
102 | - Flutter
103 | - sign_in_with_apple (0.0.1):
104 | - Flutter
105 | - url_launcher (0.0.1):
106 | - Flutter
107 |
108 | DEPENDENCIES:
109 | - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
110 | - contacts_service (from `.symlinks/plugins/contacts_service/ios`)
111 | - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
112 | - direct_dialer (from `.symlinks/plugins/direct_dialer/ios`)
113 | - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`)
114 | - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
115 | - FirebaseFirestore (from `https://github.com/invertase/firestore-ios-sdk-frameworks.git`, tag `8.7.0`)
116 | - Flutter (from `Flutter`)
117 | - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
118 | - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
119 | - google_sign_in (from `.symlinks/plugins/google_sign_in/ios`)
120 | - package_info (from `.symlinks/plugins/package_info/ios`)
121 | - path_provider (from `.symlinks/plugins/path_provider/ios`)
122 | - permission_handler (from `.symlinks/plugins/permission_handler/ios`)
123 | - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
124 | - sign_in_with_apple (from `.symlinks/plugins/sign_in_with_apple/ios`)
125 | - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
126 |
127 | SPEC REPOS:
128 | trunk:
129 | - AppAuth
130 | - Firebase
131 | - FirebaseAuth
132 | - FirebaseCore
133 | - FirebaseCoreDiagnostics
134 | - GoogleDataTransport
135 | - GoogleSignIn
136 | - GoogleUtilities
137 | - GTMAppAuth
138 | - GTMSessionFetcher
139 | - nanopb
140 | - PromisesObjC
141 |
142 | EXTERNAL SOURCES:
143 | cloud_firestore:
144 | :path: ".symlinks/plugins/cloud_firestore/ios"
145 | contacts_service:
146 | :path: ".symlinks/plugins/contacts_service/ios"
147 | device_info_plus:
148 | :path: ".symlinks/plugins/device_info_plus/ios"
149 | direct_dialer:
150 | :path: ".symlinks/plugins/direct_dialer/ios"
151 | firebase_auth:
152 | :path: ".symlinks/plugins/firebase_auth/ios"
153 | firebase_core:
154 | :path: ".symlinks/plugins/firebase_core/ios"
155 | FirebaseFirestore:
156 | :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git
157 | :tag: 8.7.0
158 | Flutter:
159 | :path: Flutter
160 | flutter_keyboard_visibility:
161 | :path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
162 | flutter_local_notifications:
163 | :path: ".symlinks/plugins/flutter_local_notifications/ios"
164 | google_sign_in:
165 | :path: ".symlinks/plugins/google_sign_in/ios"
166 | package_info:
167 | :path: ".symlinks/plugins/package_info/ios"
168 | path_provider:
169 | :path: ".symlinks/plugins/path_provider/ios"
170 | permission_handler:
171 | :path: ".symlinks/plugins/permission_handler/ios"
172 | shared_preferences:
173 | :path: ".symlinks/plugins/shared_preferences/ios"
174 | sign_in_with_apple:
175 | :path: ".symlinks/plugins/sign_in_with_apple/ios"
176 | url_launcher:
177 | :path: ".symlinks/plugins/url_launcher/ios"
178 |
179 | CHECKOUT OPTIONS:
180 | FirebaseFirestore:
181 | :git: https://github.com/invertase/firestore-ios-sdk-frameworks.git
182 | :tag: 8.7.0
183 |
184 | SPEC CHECKSUMS:
185 | AppAuth: 31bcec809a638d7bd2f86ea8a52bd45f6e81e7c7
186 | cloud_firestore: a09fdd53707eadea99f93ca5ad8e95e4c1ab1108
187 | contacts_service: 849e1f84281804c8bfbec1b4c3eedcb23c5d3eca
188 | device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
189 | direct_dialer: 47a81737464ef2bb231e3bda4d3ac6ec6ff8bb07
190 | Firebase: bc9325d5ee2041524bac78a5213d0e530c651309
191 | firebase_auth: 25f34550b0023cbc3824731240608cd0aa515ca2
192 | firebase_core: f5ac1f2726a2bd0468cea0161eddeea3d83d7e3e
193 | FirebaseAuth: 2e7d029977648c67a5d51a263d4cbab76d34cf12
194 | FirebaseCore: f4804c1d3f4bbbefc88904d15653038f2c99ddf7
195 | FirebaseCoreDiagnostics: fe77f42da6329d6d83d21fd9d621a6b704413bfc
196 | FirebaseFirestore: 0f0d98ab906dbf65c82d070dd1a0c53da48d74dd
197 | Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
198 | flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
199 | flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
200 | google_sign_in: c5cecea71f3be43282263550556e311c4cc03582
201 | GoogleDataTransport: 85fd18ff3019bb85d3f2c551d04c481dedf71fc9
202 | GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213
203 | GoogleUtilities: 8de2a97a17e15b6b98e38e8770e2d129a57c0040
204 | GTMAppAuth: ad5c2b70b9a8689e1a04033c9369c4915bfcbe89
205 | GTMSessionFetcher: 43748f93435c2aa068b1cbe39655aaf600652e91
206 | nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
207 | package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
208 | path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
209 | permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
210 | PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58
211 | shared_preferences: 5033afbb22d372e15aff8ff766df9021b845f273
212 | sign_in_with_apple: f3bf75217ea4c2c8b91823f225d70230119b8440
213 | url_launcher: b6e016d912f04be9f5bf6e8e82dc599b7ba59649
214 |
215 | PODFILE CHECKSUM: 031d74e1deeb1bc9167e287d75f54fde7bde5f5f
216 |
217 | COCOAPODS: 1.11.2
218 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | if #available(iOS 10.0, *) {
11 | UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
12 | }
13 | GeneratedPluginRegistrant.register(with: self)
14 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "icon_20@2x.png",
5 | "idiom" : "iphone",
6 | "scale" : "2x",
7 | "size" : "20x20"
8 | },
9 | {
10 | "filename" : "icon_20@3x.png",
11 | "idiom" : "iphone",
12 | "scale" : "3x",
13 | "size" : "20x20"
14 | },
15 | {
16 | "filename" : "icon_29@1x.png",
17 | "idiom" : "iphone",
18 | "scale" : "1x",
19 | "size" : "29x29"
20 | },
21 | {
22 | "filename" : "icon_29@2x.png",
23 | "idiom" : "iphone",
24 | "scale" : "2x",
25 | "size" : "29x29"
26 | },
27 | {
28 | "filename" : "icon_29@3x.png",
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "29x29"
32 | },
33 | {
34 | "filename" : "icon_40@2x.png",
35 | "idiom" : "iphone",
36 | "scale" : "2x",
37 | "size" : "40x40"
38 | },
39 | {
40 | "filename" : "icon_40@3x.png",
41 | "idiom" : "iphone",
42 | "scale" : "3x",
43 | "size" : "40x40"
44 | },
45 | {
46 | "filename" : "icon_60@2x.png",
47 | "idiom" : "iphone",
48 | "scale" : "2x",
49 | "size" : "60x60"
50 | },
51 | {
52 | "filename" : "icon_60@3x.png",
53 | "idiom" : "iphone",
54 | "scale" : "3x",
55 | "size" : "60x60"
56 | },
57 | {
58 | "filename" : "icon_20@1x.png",
59 | "idiom" : "ipad",
60 | "scale" : "1x",
61 | "size" : "20x20"
62 | },
63 | {
64 | "filename" : "icon_20@2x-1.png",
65 | "idiom" : "ipad",
66 | "scale" : "2x",
67 | "size" : "20x20"
68 | },
69 | {
70 | "filename" : "icon_29@1x-1.png",
71 | "idiom" : "ipad",
72 | "scale" : "1x",
73 | "size" : "29x29"
74 | },
75 | {
76 | "filename" : "icon_29@2x-1.png",
77 | "idiom" : "ipad",
78 | "scale" : "2x",
79 | "size" : "29x29"
80 | },
81 | {
82 | "filename" : "icon_40@1x.png",
83 | "idiom" : "ipad",
84 | "scale" : "1x",
85 | "size" : "40x40"
86 | },
87 | {
88 | "filename" : "icon_40@2x-1.png",
89 | "idiom" : "ipad",
90 | "scale" : "2x",
91 | "size" : "40x40"
92 | },
93 | {
94 | "filename" : "icon_76@1x.png",
95 | "idiom" : "ipad",
96 | "scale" : "1x",
97 | "size" : "76x76"
98 | },
99 | {
100 | "filename" : "icon_76@2x.png",
101 | "idiom" : "ipad",
102 | "scale" : "2x",
103 | "size" : "76x76"
104 | },
105 | {
106 | "filename" : "icon_83.5@2x.png",
107 | "idiom" : "ipad",
108 | "scale" : "2x",
109 | "size" : "83.5x83.5"
110 | },
111 | {
112 | "filename" : "icon_1024@1x.png",
113 | "idiom" : "ios-marketing",
114 | "scale" : "1x",
115 | "size" : "1024x1024"
116 | }
117 | ],
118 | "info" : {
119 | "author" : "xcode",
120 | "version" : 1
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@2x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@1x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@1x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@2x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@2x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GroovinChip/call_manager/abf78a0ee52784b7dc352cf0cbbb9428fbe6d2fb/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CLIENT_ID
6 | 1053316160376-117rp70a5ps0s6nk98th54trgsacoaim.apps.googleusercontent.com
7 | REVERSED_CLIENT_ID
8 | com.googleusercontent.apps.1053316160376-117rp70a5ps0s6nk98th54trgsacoaim
9 | ANDROID_CLIENT_ID
10 | 1053316160376-5juugktuaas98do08thao9iplqmr5fn9.apps.googleusercontent.com
11 | API_KEY
12 | AIzaSyDHw5ZUSRFFr506s5tDwjRBXNVauqsZ854
13 | GCM_SENDER_ID
14 | 1053316160376
15 | PLIST_VERSION
16 | 1
17 | BUNDLE_ID
18 | dev.groovinchip.callmanager
19 | PROJECT_ID
20 | call-manager-flutter-db
21 | STORAGE_BUCKET
22 | call-manager-flutter-db.appspot.com
23 | IS_ADS_ENABLED
24 |
25 | IS_ANALYTICS_ENABLED
26 |
27 | IS_APPINVITE_ENABLED
28 |
29 | IS_GCM_ENABLED
30 |
31 | IS_SIGNIN_ENABLED
32 |
33 | GOOGLE_APP_ID
34 | 1:1053316160376:ios:3f44ce63a1c0a5fba4868d
35 | DATABASE_URL
36 | https://call-manager-flutter-db.firebaseio.com
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Call Manager
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | call_manager
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleURLTypes
24 |
25 |
26 | CFBundleTypeRole
27 | Editor
28 | CFBundleURLSchemes
29 |
30 | com.googleusercontent.apps.1053316160376-117rp70a5ps0s6nk98th54trgsacoaim
31 |
32 |
33 |
34 | CFBundleVersion
35 | $(FLUTTER_BUILD_NUMBER)
36 | LSRequiresIPhoneOS
37 |
38 | NSContactsUsageDescription
39 | Call Manager can autocomplete your contacts when you add a new call, if you allow this permission.
40 | PermissionGroupNotification
41 | Call Manager Pro would like to send you notifications
42 | UILaunchStoryboardName
43 | LaunchScreen
44 | UIMainStoryboardFile
45 | Main
46 | UISupportedInterfaceOrientations
47 |
48 | UIInterfaceOrientationPortrait
49 | UIInterfaceOrientationLandscapeLeft
50 | UIInterfaceOrientationLandscapeRight
51 |
52 | UISupportedInterfaceOrientations~ipad
53 |
54 | UIInterfaceOrientationPortrait
55 | UIInterfaceOrientationPortraitUpsideDown
56 | UIInterfaceOrientationLandscapeLeft
57 | UIInterfaceOrientationLandscapeRight
58 |
59 | UIViewControllerBasedStatusBarAppearance
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 | com.apple.developer.applesignin
8 |
9 | Default
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/lib/app.dart:
--------------------------------------------------------------------------------
1 | import 'package:call_manager/firebase/firebase.dart';
2 | import 'package:call_manager/screens/home_screen.dart';
3 | import 'package:call_manager/screens/login_screen.dart';
4 | import 'package:call_manager/services/contacts_utility.dart';
5 | import 'package:call_manager/services/notifications_service.dart';
6 | import 'package:call_manager/services/phone_utility.dart';
7 | import 'package:call_manager/services/prefs_service.dart';
8 | import 'package:call_manager/theme/app_colors.dart';
9 | import 'package:call_manager/theme/app_themes.dart';
10 | import 'package:firebase_auth/firebase_auth.dart';
11 | import 'package:flutter/material.dart';
12 | import 'package:provider/provider.dart';
13 | import 'package:wiredash/wiredash.dart';
14 |
15 | class CallManagerApp extends StatefulWidget {
16 | const CallManagerApp({
17 | Key? key,
18 | required this.contactsUtility,
19 | required this.notificationService,
20 | required this.phoneUtility,
21 | required this.prefsService,
22 | }) : super(key: key);
23 |
24 | final ContactsUtility contactsUtility;
25 | final NotificationService notificationService;
26 | final PhoneUtility phoneUtility;
27 | final PrefsService prefsService;
28 |
29 | @override
30 | _CallManagerAppState createState() => _CallManagerAppState();
31 | }
32 |
33 | class _CallManagerAppState extends State with FirebaseMixin {
34 | final _navigatorKey = GlobalKey();
35 |
36 | @override
37 | void initState() {
38 | super.initState();
39 | _onAuthStateChange();
40 | }
41 |
42 | void _onAuthStateChange() {
43 | auth.authStateChanges().listen((User? user) {
44 | if (user != null) {
45 | firestore.initStorageForUser(currentUser!.uid);
46 | firestore.recordLoginDate(currentUser!.uid);
47 | }
48 | });
49 | }
50 |
51 | Route? _onGenerateRoute(RouteSettings settings) {
52 | switch (settings.name) {
53 | case HomeScreen.routeName:
54 | return HomeScreen.route(settings: settings);
55 | case LoginScreen.routeName:
56 | return LoginScreen.route(settings: settings);
57 | default:
58 | return null;
59 | }
60 | }
61 |
62 | @override
63 | Widget build(BuildContext context) {
64 | return MultiProvider(
65 | providers: [
66 | Provider.value(value: widget.prefsService),
67 | Provider.value(value: widget.contactsUtility),
68 | Provider.value(value: widget.phoneUtility),
69 | Provider.value(value: widget.notificationService),
70 | ],
71 | child: StreamBuilder(
72 | stream: widget.prefsService.preferencesSubject,
73 | initialData: widget.prefsService.preferencesSubject.value,
74 | builder: (context, snapshot) {
75 | return Wiredash(
76 | projectId: 'call-manager-bk2ikve',
77 | secret: '6p356wjo9kyupuj9se49pd0q2e41xa1x4m68nnky0hvkeva8',
78 | navigatorKey: _navigatorKey,
79 | options: WiredashOptionsData(
80 | praiseButton: false,
81 | ),
82 | theme: WiredashThemeData(
83 | primaryColor: AppColors.primaryColor,
84 | //primaryBackgroundColor: AppColors.primaryColor,
85 | backgroundColor: AppColors.primaryColor,
86 | brightness: snapshot.data!.brightness,
87 | ),
88 | child: MaterialApp(
89 | navigatorKey: _navigatorKey,
90 | title: 'Call Manager',
91 | theme: AppThemes.lightTheme(),
92 | darkTheme: AppThemes.darkTheme(),
93 | themeMode: snapshot.data!.themeMode,
94 | initialRoute: currentUser != null
95 | ? HomeScreen.routeName
96 | : LoginScreen.routeName,
97 | onGenerateInitialRoutes: ((String initialRoute) => [
98 | _onGenerateRoute(RouteSettings(name: initialRoute))!,
99 | ]),
100 | onGenerateRoute: _onGenerateRoute,
101 | debugShowCheckedModeBanner: false,
102 | ),
103 | );
104 | },
105 | ),
106 | );
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/lib/data_models/call.dart:
--------------------------------------------------------------------------------
1 | class Call {
2 | Call({
3 | this.avatar,
4 | this.description,
5 | this.id,
6 | required this.name,
7 | required this.phoneNumber,
8 | this.reminderDate,
9 | this.reminderTime,
10 | this.timeCreated,
11 | this.lastEdited,
12 | this.completedAt,
13 | });
14 |
15 | factory Call.fromJsonWithDocId(Map json, String docId) {
16 | DateTime? timestamp;
17 | DateTime? _lastEdited;
18 | if (json['TimeCreated'] != 'null' && json['TimeCreated'] != null) {
19 | timestamp = DateTime.parse(json['TimeCreated']);
20 | }
21 |
22 | if (json['LastEdited'] != 'null' && json['LastEdited'] != null) {
23 | _lastEdited = DateTime.parse(json['LastEdited']);
24 | }
25 |
26 | return Call(
27 | avatar: json['Avatar'] ?? '',
28 | description: json['Description'],
29 | id: docId,
30 | name: json['Name'],
31 | phoneNumber: json['PhoneNumber'],
32 | reminderDate: json['ReminderDate'],
33 | reminderTime: json['ReminderTime'],
34 | timeCreated: timestamp,
35 | lastEdited: _lastEdited,
36 | completedAt: json['CompletedAt'],
37 | );
38 | }
39 |
40 | String? avatar;
41 | String? completedAt;
42 | String? description;
43 | String? id;
44 | DateTime? lastEdited;
45 | String? name;
46 | String? phoneNumber;
47 | String? reminderDate;
48 | String? reminderTime;
49 | DateTime? timeCreated;
50 |
51 | Map toJson() {
52 | return {
53 | 'Avatar': avatar,
54 | 'Description': description,
55 | 'Name': name,
56 | 'PhoneNumber': phoneNumber,
57 | 'ReminderDate': reminderDate?.toString() ?? '',
58 | 'ReminderTime': reminderTime?.toString() ?? '',
59 | 'TimeCreated': timeCreated.toString(),
60 | 'LastEdited': lastEdited.toString(),
61 | 'CompletedAt': completedAt ?? '',
62 | };
63 | }
64 | }
65 |
66 | extension CallX on Call {
67 | bool get hasAvatar => avatar != null && avatar!.isNotEmpty;
68 | bool get hasDescription => description != null && description!.isNotEmpty;
69 | bool get isNotCompleted => completedAt == null || completedAt!.isEmpty;
70 | }
71 |
--------------------------------------------------------------------------------
/lib/firebase/fb_type_aliases.dart:
--------------------------------------------------------------------------------
1 | import 'firebase.dart';
2 |
3 | typedef FirestoreCollection = CollectionReference