This commit is contained in:
Surendiran 2025-09-17 19:51:46 +05:30
parent cd0c924cff
commit 9bbf370aa7
26 changed files with 803 additions and 705 deletions

View File

@ -20,12 +20,12 @@ if (project.hasProperty('google-services.json')) {
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {
flutterVersionCode = "63"
flutterVersionCode = "5"
}
def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {
flutterVersionName = "1.0.62"
flutterVersionName = "1.0.5"
}
def keystorePropertiesFile = rootProject.file("key.properties")
@ -33,7 +33,7 @@ def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
namespace = "ae.gov.fcsc.frontend"
namespace = "ae.gov.fcsc.stats"
compileSdk = flutter.compileSdkVersion
// ndkVersion = flutter.ndkVersion
ndkVersion = "25.1.8937393"
@ -48,10 +48,10 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "ae.gov.fcsc.frontend"
applicationId = "ae.gov.fcsc.stats"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk = 23
minSdkVersion = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutterVersionCode.toInteger()
versionName = flutterVersionName

View File

@ -12,7 +12,12 @@
"package_name": "ae.gov.fcsc.frontend"
}
},
"oauth_client": [],
"oauth_client": [
{
"client_id": "62132243005-rnqthdakjs2ccs1ri7hnh79eh8t6hojl.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyB-QQbnq366f7rrKLVVFJKnSZgR9LcDWFI"
@ -20,7 +25,41 @@
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
"other_platform_oauth_client": [
{
"client_id": "62132243005-rnqthdakjs2ccs1ri7hnh79eh8t6hojl.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:62132243005:android:a50184ce50e0407d7c7854",
"android_client_info": {
"package_name": "ae.gov.fcsc.stats"
}
},
"oauth_client": [
{
"client_id": "62132243005-rnqthdakjs2ccs1ri7hnh79eh8t6hojl.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyB-QQbnq366f7rrKLVVFJKnSZgR9LcDWFI"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "62132243005-rnqthdakjs2ccs1ri7hnh79eh8t6hojl.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}

View File

@ -2,6 +2,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application
android:label="UAE Stats"
android:name="${applicationName}"

View File

@ -1,4 +1,4 @@
package ae.gov.fcsc.frontend;
package ae.gov.fcsc.stats;
import io.flutter.embedding.android.FlutterActivity;

View File

@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>12.0</string>
<string>13.0</string>
</dict>
</plist>

View File

@ -76,28 +76,28 @@ PODS:
- AppCheckCore (~> 11.0)
- GTMAppAuth (~> 5.0)
- GTMSessionFetcher/Core (~> 3.3)
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
- GoogleUtilities/AppDelegateSwizzler (8.1.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Privacy
- GoogleUtilities/Environment (8.0.2):
- GoogleUtilities/Environment (8.1.0):
- GoogleUtilities/Privacy
- GoogleUtilities/Logger (8.0.2):
- GoogleUtilities/Logger (8.1.0):
- GoogleUtilities/Environment
- GoogleUtilities/Privacy
- GoogleUtilities/Network (8.0.2):
- GoogleUtilities/Network (8.1.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Privacy
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (8.0.2)":
- "GoogleUtilities/NSData+zlib (8.1.0)":
- GoogleUtilities/Privacy
- GoogleUtilities/Privacy (8.0.2)
- GoogleUtilities/Reachability (8.0.2):
- GoogleUtilities/Privacy (8.1.0)
- GoogleUtilities/Reachability (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- GoogleUtilities/UserDefaults (8.0.2):
- GoogleUtilities/UserDefaults (8.1.0):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- GTMAppAuth (5.0.0):
@ -233,14 +233,14 @@ SPEC CHECKSUMS:
FirebaseCoreInternal: ef4505d2afb1d0ebbc33162cb3795382904b5679
FirebaseInstallations: 9980995bdd06ec8081dfb6ab364162bdd64245c3
FirebaseMessaging: 2b9f56aa4ed286e1f0ce2ee1d413aabb8f9f5cb9
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
google_sign_in_ios: 205742c688aea0e64db9da03c33121694a365109
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a

View File

@ -9,14 +9,14 @@
/* Begin PBXBuildFile section */
0A3628072DBA1754003BB600 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0A3628062DBA1754003BB600 /* GoogleService-Info.plist */; };
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
24C5313A956552DACC6A2F25 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55598A82C8C267A1C98A4CAB /* Pods_Runner.framework */; };
240B527598875F1FE339FA22 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21E5D4AD0E73EDB191B0D3AB /* Pods_Runner.framework */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
8ED4634D514CEE8AAD6C53BF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FA41CC2D981AE62980D7CDE /* Pods_RunnerTests.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
C95A12418F9FFCB720BD8393 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4469EAF9D5EEA501A0DFB6F8 /* Pods_RunnerTests.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -43,22 +43,22 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
0444FC1B1408261D7136E027 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
0A3628062DBA1754003BB600 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
1A00CF12F959681F51F0DFF1 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
21E5D4AD0E73EDB191B0D3AB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
22E09441D41F6799CBD1B240 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
24B0F467E9CA8104D381B202 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
4469EAF9D5EEA501A0DFB6F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4DE1959C2C14DFF100B07B30 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
55598A82C8C267A1C98A4CAB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
5FA41CC2D981AE62980D7CDE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6CDA306B9D63C636C5E386EA /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
5B2FBD20ED5FAB8AE3E2ADF2 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
64832D0DB3389F2E98B4DB8B /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7C6ACEA576E5C2F6C934190C /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -66,8 +66,8 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
D3C1C8E1C6847D14747D5CA0 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
F3C942613F32EA1A640F6253 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
A017ACC7D044E0AB9F6181D9 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
DD3A539579E9051D3B376D8C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -75,7 +75,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
24C5313A956552DACC6A2F25 /* Pods_Runner.framework in Frameworks */,
240B527598875F1FE339FA22 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -83,13 +83,22 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8ED4634D514CEE8AAD6C53BF /* Pods_RunnerTests.framework in Frameworks */,
C95A12418F9FFCB720BD8393 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
28284A5C1F887F28AE69A945 /* Frameworks */ = {
isa = PBXGroup;
children = (
21E5D4AD0E73EDB191B0D3AB /* Pods_Runner.framework */,
4469EAF9D5EEA501A0DFB6F8 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
@ -98,15 +107,6 @@
path = RunnerTests;
sourceTree = "<group>";
};
749F29DBA04D4F0AC77B3B06 /* Frameworks */ = {
isa = PBXGroup;
children = (
55598A82C8C267A1C98A4CAB /* Pods_Runner.framework */,
5FA41CC2D981AE62980D7CDE /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@ -127,7 +127,7 @@
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
F25EA3847C6F2AAFB1DC01FE /* Pods */,
749F29DBA04D4F0AC77B3B06 /* Frameworks */,
28284A5C1F887F28AE69A945 /* Frameworks */,
);
sourceTree = "<group>";
};
@ -159,12 +159,12 @@
F25EA3847C6F2AAFB1DC01FE /* Pods */ = {
isa = PBXGroup;
children = (
6CDA306B9D63C636C5E386EA /* Pods-Runner.debug.xcconfig */,
D3C1C8E1C6847D14747D5CA0 /* Pods-Runner.release.xcconfig */,
F3C942613F32EA1A640F6253 /* Pods-Runner.profile.xcconfig */,
0444FC1B1408261D7136E027 /* Pods-RunnerTests.debug.xcconfig */,
1A00CF12F959681F51F0DFF1 /* Pods-RunnerTests.release.xcconfig */,
7C6ACEA576E5C2F6C934190C /* Pods-RunnerTests.profile.xcconfig */,
24B0F467E9CA8104D381B202 /* Pods-Runner.debug.xcconfig */,
DD3A539579E9051D3B376D8C /* Pods-Runner.release.xcconfig */,
22E09441D41F6799CBD1B240 /* Pods-Runner.profile.xcconfig */,
5B2FBD20ED5FAB8AE3E2ADF2 /* Pods-RunnerTests.debug.xcconfig */,
A017ACC7D044E0AB9F6181D9 /* Pods-RunnerTests.release.xcconfig */,
64832D0DB3389F2E98B4DB8B /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
@ -176,7 +176,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
6F0848DEFB39009965C02737 /* [CP] Check Pods Manifest.lock */,
ABF7856C364A999DB2217720 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
E02DE8038B90180AEC767AB8 /* Frameworks */,
@ -195,15 +195,15 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
EE784DB7875630E76CDE549A /* [CP] Check Pods Manifest.lock */,
74896B3972D4DFE648762369 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
81850966CE8A19C86242963D /* [CP] Embed Pods Frameworks */,
BBDC9308AF5C3BFCEC84ACC5 /* [CP] Copy Pods Resources */,
D647B226474A988311A876B7 /* [CP] Embed Pods Frameworks */,
9DC7C3CC7EB907CC8713FB78 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -292,7 +292,61 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
6F0848DEFB39009965C02737 /* [CP] Check Pods Manifest.lock */ = {
74896B3972D4DFE648762369 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
9DC7C3CC7EB907CC8713FB78 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
ABF7856C364A999DB2217720 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -314,7 +368,7 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
81850966CE8A19C86242963D /* [CP] Embed Pods Frameworks */ = {
D647B226474A988311A876B7 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@ -322,77 +376,15 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
BBDC9308AF5C3BFCEC84ACC5 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
EE784DB7875630E76CDE549A /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -487,7 +479,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -506,7 +498,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
CURRENT_PROJECT_VERSION = 13;
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
DEVELOPMENT_TEAM = 9N5SRFUGK2;
ENABLE_BITCODE = NO;
@ -517,7 +509,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.8;
MARKETING_VERSION = 1.0.12;
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -534,7 +526,7 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 0444FC1B1408261D7136E027 /* Pods-RunnerTests.debug.xcconfig */;
baseConfigurationReference = 5B2FBD20ED5FAB8AE3E2ADF2 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -552,7 +544,7 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1A00CF12F959681F51F0DFF1 /* Pods-RunnerTests.release.xcconfig */;
baseConfigurationReference = A017ACC7D044E0AB9F6181D9 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -568,7 +560,7 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7C6ACEA576E5C2F6C934190C /* Pods-RunnerTests.profile.xcconfig */;
baseConfigurationReference = 64832D0DB3389F2E98B4DB8B /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@ -632,7 +624,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -684,7 +676,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -705,7 +697,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
CURRENT_PROJECT_VERSION = 13;
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
DEVELOPMENT_TEAM = 9N5SRFUGK2;
ENABLE_BITCODE = NO;
@ -716,7 +708,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.8;
MARKETING_VERSION = 1.0.12;
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -742,7 +734,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 9;
CURRENT_PROJECT_VERSION = 13;
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
DEVELOPMENT_TEAM = 9N5SRFUGK2;
ENABLE_BITCODE = NO;
@ -753,7 +745,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.8;
MARKETING_VERSION = 1.0.12;
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
@ -54,6 +55,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@ -58,8 +58,6 @@
<string>We need camera access</string>
<key>NSLocalNetworkUsageDescription</key>
<string>This app uses the local network to debug and connect to the Flutter development service.</string>
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UIBackgroundModes</key>

View File

@ -1,5 +1,5 @@
// api_config.dart
// const String apiUrl = 'http://127.0.0.1:8090';
// const String apiUrl = 'https://pbdev.venbait.in/';
// const String apiUrl = 'https://pb.venbait.in/';
const String apiUrl = 'https://pocket.fcsc.gov.ae/';
const String apiUrl = 'https://pb.venbait.in/';
// const String apiUrl = 'https://pocket.fcsc.gov.ae/';

View File

@ -61,7 +61,7 @@ class AppLinksHelper {
}
static void _openAppLinkSettingsAndroid() {
const packageName = 'ae.gov.fcsc.frontend'; // 🔁 Replace with your app's package
const packageName = 'ae.gov.fcsc.stats'; // 🔁 Replace with your app's package
final intent = AndroidIntent(
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
data: 'package:$packageName',

View File

@ -24,7 +24,7 @@ class _SessionCheckScreenState extends ConsumerState<SessionCheckScreen> {
bool _isLoading = true;
String get playStoreUrl =>
"https://play.google.com/store/apps/details?id=ae.gov.fcsc.frontend";
"https://play.google.com/store/apps/details?id=ae.gov.fcsc.stats";
@override
void initState() {

View File

@ -188,7 +188,7 @@ class _MainAppState extends ConsumerState<MainApp> {
appsflyerSdk=AppsflyerSdk(
AppsFlyerOptions(
afDevKey: '7TwqHnPoWcAUuiFGpuCVtF',
appId: 'ae.gov.fcsc.frontend',
appId: 'ae.gov.fcsc.stats',
showDebug: true,
timeToWaitForATTUserAuthorization: 0,
),

View File

@ -14,6 +14,7 @@ import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
import 'package:uae_stat/infrastructure/services/pocketbase_service.dart';
import 'package:uae_stat/presentation/Screens/profilepage.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:uae_stat/presentation/components/my_toggle.dart';
@ -148,26 +149,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
setState(() {
isLoading = true;
});
// Authenticate as admin
// final adminAuth = await _pb.admins
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final auth = ref.watch(authProvider);
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
// final token = adminAuth.token;
final themeService = ThemeBaseService();
final token = await themeService.getAdminToken(
email: auth.email,
password: auth.password,
);
final headers = {
'Authorization': 'Bearer $token',
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
};
bool isPasswordValid =

View File

@ -6,21 +6,20 @@ import 'package:pocketbase/pocketbase.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:uae_stat/config/api_config.dart';
import 'package:uae_stat/config/connectivity_provider.dart';
import 'package:uae_stat/config/my_router.dart';
import 'package:uae_stat/config/theme/auth_provider.dart';
import 'package:uae_stat/config/theme/service.dart';
import 'package:uae_stat/config/theme/theme_provider.dart';
import 'package:uae_stat/config/my_router.dart';
import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/banner_asset_path.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
import 'package:uae_stat/l10n/app_localizations.dart';
import 'package:uae_stat/infrastructure/services/pocketbase_service.dart';
import 'package:uae_stat/presentation/Screens/profilepage.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:uae_stat/presentation/components/my_toggle.dart';
import 'package:uae_stat/presentation/components/space.dart';
// import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:uae_stat/l10n/app_localizations.dart';
import 'package:uae_stat/config/my_theme.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/notification/notification.dart';
class ForgotPassword extends ConsumerStatefulWidget {
final String email;
@ -43,9 +42,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
String? _newPassword;
String? _confirmPassword;
final fcscBanner = Image.asset(
BannerAssetPath.fcscLogoLight,
height: 40,
final fcscBanner = Padding(
padding: const EdgeInsets.all(30.0),
child: Image.asset(
BannerAssetPath.fcscLogoLight,
height: 40,
),
);
String? _validateNewPassword(String? value) {
@ -179,31 +181,17 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
// Authenticate as admin
// final adminAuth = await _pb.admins
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final auth = ref.watch(authProvider);
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
//
// final token = adminAuth.token;
final themeService = ThemeBaseService();
final token = await themeService.getAdminToken(
email: auth.email,
password: auth.password,
);
final headers = {
'Authorization': 'Bearer $token',
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
};
// Step 1: Find User by Email
final result = await _pb.collection('users').getList(
filter: 'email = "$email"',
headers: headers,
);
filter: 'email = "$email"',
headers: headers,
);
if (result.items.isEmpty) {
// throw Exception("User not found");
@ -213,9 +201,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
'User not found',
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
'Roboto',
'NotoKufi',
)),
),
backgroundColor: Colors.red,
),
@ -226,13 +214,13 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
// Step 3: Update Password
await _pb.collection('users').update(
userId,
body: {
'password': newPassword,
'passwordConfirm': newPassword,
},
headers: headers,
);
userId,
body: {
'password': newPassword,
'passwordConfirm': newPassword,
},
headers: headers,
);
setState(() {
isLoading = false;
@ -245,9 +233,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
AppLocalizations.of(context)!.password_update_successfully,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
'Roboto',
'NotoKufi',
)),
),
backgroundColor: Colors.green,
),
@ -265,9 +253,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
'Failed to update password: $e',
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
)),
'Roboto',
'NotoKufi',
)),
),
backgroundColor: Colors.red,
),
@ -295,14 +283,13 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
}
});
// final themeMode = ref.read(themeProvider);
// final themeMode = ThemeMode.dark;
final isDarkTheme = ref.read(themeProvider) == ThemeMode.dark ||
(ref.read(themeProvider) == ThemeMode.system &&
final themeMode = ref.read(themeProvider);
final isDarkTheme = themeMode == ThemeMode.dark ||
(themeMode == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
return Scaffold(
backgroundColor: Colors.white,
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
body: Stack(children: [
SingleChildScrollView(
child: SafeArea(
@ -313,9 +300,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
),
if (isLoading)
Container(
color: isDarkTheme
? Colors.black
: Colors.white, // Semi-transparent background
color: Color(0x98FFFCE5), // Semi-transparent background
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
@ -325,9 +310,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
child: LinearProgressIndicator(
minHeight: 5, // Adjust thickness
backgroundColor:
Colors.grey[100], // Optional: Background color
Colors.grey[100], // Optional: Background color
valueColor: AlwaysStoppedAnimation<Color>(
Color(0xFFAA8E83)), // Loader color
Color(0xFFB68A34)), // Loader color
),
),
],
@ -338,6 +323,10 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
Widget _buildPasswordForm(
WidgetRef ref, double screenHeight, double screenWidth) {
final themeMode = ref.read(themeProvider);
final isDarkTheme = themeMode == ThemeMode.dark ||
(themeMode == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
final passwordLocale = ref.watch(localeProvider);
return Form(
key: _formKey,
@ -363,7 +352,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
// Icons.close,
Icons.arrow_back_ios,
size: 24, // Icon size
color: Colors.black, // Icon color
color: isDarkTheme ? Colors.white : Colors.black, // Icon color
),
),
), // Left icon
@ -412,6 +401,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
'NotoKufi',
),
fontWeight: FontWeight.w300,
color: isDarkTheme ? Colors.white : Color(0xFF111111),
),
),
SizedBox(height: 10),
@ -426,7 +416,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
),
style: TextStyle(
fontSize:
passwordLocale?.languageCode == 'ar' ? 14 : 15,
passwordLocale?.languageCode == 'ar' ? 14 : 15,
fontWeight: FontWeight.w700,
color: Color(0xFF898C81),
fontFamily: context.translate(
@ -443,7 +433,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
'NotoKufi',
),
fontSize:
passwordLocale?.languageCode == 'ar' ? 14 : 15,
passwordLocale?.languageCode == 'ar' ? 14 : 15,
color: Color(0xFF898C81),
fontWeight: FontWeight.w700),
),
@ -480,10 +470,17 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
fit: BoxFit.fitHeight,
height: 25,
width: 25,
color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
color: Color(0xFFB68A34),
// color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
),
),
errorStyle: TextStyle(
color: Color(0xFFD83731),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
suffixIcon: IconButton(
// icon: Icon(
// _obscureNewPassword
@ -511,15 +508,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color:
MyTheme.topicColor(IndicatorTopic.economy).shade400,
width: 1),
borderSide: BorderSide(color: Color(0xFFB68A34), width: 1),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Colors.deepPurple, width: 2), // Focused border
color: Color(0xFFB68A34), width: 2), // Focused border
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
@ -563,10 +557,16 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
fit: BoxFit.fitHeight,
height: 25,
width: 25,
color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
color: Color(0xFFB68A34),
),
),
errorStyle: TextStyle(
color: Color(0xFFD83731),
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
),
suffixIcon: IconButton(
// icon: Icon(
// _obscureConfirmPassword
@ -594,15 +594,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
// border: OutlineInputBorder(),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color:
MyTheme.topicColor(IndicatorTopic.economy).shade400,
width: 1),
borderSide: BorderSide(color: Color(0xFFB68A34), width: 1),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: BorderSide(
color: Colors.deepPurple, width: 2), // Focused border
color: Color(0xFFB68A34), width: 2), // Focused border
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
@ -635,7 +632,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
}
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.brown[300],
backgroundColor: Color(0xFFB68A34),
padding: EdgeInsets.symmetric(horizontal: 80, vertical: 16),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
@ -648,7 +645,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
AppLocalizations.of(context)!.save,
style: TextStyle(
fontSize:
passwordLocale?.languageCode == 'ar' ? 14 : 18,
passwordLocale?.languageCode == 'ar' ? 14 : 18,
color: Colors.white,
fontFamily: context.translate(
'Roboto',
@ -677,7 +674,14 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
// ),
// ),
// ),
child: fcscBanner,
child: Padding(
padding: EdgeInsets.all(30.0),
child: Image.asset(
isDarkTheme ? BannerAssetPath.fcscLogoDark :
BannerAssetPath.fcscLogoLight,
height: 40,
),
),
),
],
),
@ -686,6 +690,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
}
Widget _buildSuccessContent(double screenHeight, double screenWidth) {
final themeMode = ref.read(themeProvider);
final isDarkTheme = themeMode == ThemeMode.dark ||
(themeMode == ThemeMode.system &&
MediaQuery.of(context).platformBrightness == Brightness.dark);
print('IN');
return Padding(
padding: EdgeInsets.all(20.0),
@ -732,7 +742,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
),
),
backgroundColor: WidgetStatePropertyAll(
MyTheme.topicColor(IndicatorTopic.social),
Color(0xFFB68A34),
),
// surfaceTintColor: MaterialStatePropertyAll(
// MyTheme.economy[800],
@ -776,10 +786,17 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
// ),
// ),
// ),
child: fcscBanner,
child: Padding(
padding: EdgeInsets.all(30.0),
child: Image.asset(
isDarkTheme ? BannerAssetPath.fcscLogoDark :
BannerAssetPath.fcscLogoLight,
height: 40,
),
),
),
],
),
);
}
}
}

View File

@ -144,29 +144,11 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
final prefs = await SharedPreferences.getInstance();
final userID = prefs.getString('userId');
try {
// final adminAuth = await _pb.admins.authWithPassword(
// 'pb@venbainfotech.com',
// 'pb@venbainfotech.com',
// );
final auth = ref.watch(authProvider);
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
// final adminToken = adminAuth.token;
final themeService = ThemeBaseService();
// final adminToken = await themeService.getAdminToken(
// email: auth.email,
// password: auth.password,
// );
final result = await _pb.collection('bookmark').getList(
filter: "user_id = '${userID}' && dataset = '${widget.dataSets}'",
headers: {
'Authorization': PocketBaseService.authStore.token, // Pass the admin token
'Authorization': 'Bearer ${PocketBaseService.authStore.token}' // Pass the admin token
},
);
@ -186,16 +168,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
final prefs = await SharedPreferences.getInstance();
final userID = prefs.getString('userId');
try {
// final adminAuth = await _pb.admins
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final auth = ref.watch(authProvider);
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
// final adminToken = adminAuth.token;
final response = await _pb.collection('bookmark').create(body: {
'user_id': userID,
'dataset': widget.dataSets,
@ -204,7 +177,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
'title': widget.title,
'keyParam': widget.keyParam,
}, headers: {
'Authorization': PocketBaseService.authStore.token
'Authorization': 'Bearer ${PocketBaseService.authStore.token}'
});
setState(() {

File diff suppressed because it is too large Load Diff

View File

@ -101,7 +101,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
void initState() {
super.initState();
// print(widget.userId);
WidgetsBinding.instance.addPostFrameCallback((_) {
_fetchUserData();
});
_selectedCountry ??= ISOCountry.numeric784;
final themeMode = ref.read(themeProvider);
@ -151,7 +153,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
}
}
_fetchUserData(); // Call the function to fetch user data
// Call the function to fetch user data
}
@override
@ -165,25 +167,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
}
Future<void> _fetchUserData() async {
print('userId: ${widget.userId}');
try {
// final adminAuth = await _pb.admins
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final auth = ref.watch(authProvider);
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
//
// final adminToken = adminAuth.token;
final themeService = ThemeBaseService();
// final adminToken = await themeService.getAdminToken(
// email: auth.email,
// password: auth.password,
// );
// print('adminToken- ${adminToken}');
final userDetailsResponse = await _pb.collection('users').getOne(
widget.userId,
headers: {
@ -191,6 +176,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
},
);
print('userDetails: $userDetailsResponse');
print(userDetailsResponse.data['email']);
setState(() {
_usernameController.text = userDetailsResponse.data['uname'] ?? '';
_emailController.text = userDetailsResponse.data['email'] ?? '';
@ -395,7 +381,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
}
// Add headers (if required, e.g., authorization)
request.headers['Authorization'] = 'Bearer ${_pb.authStore.token}';
request.headers['Authorization'] = 'Bearer ${PocketBaseService.authStore.token}';
// Send the request
final response = await request.send();
@ -592,10 +578,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
child: Scaffold(
appBar: AppBar(
scrolledUnderElevation: 0,
backgroundColor: Colors.white,
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
elevation: 0,
leading: IconButton(
icon: Icon(Icons.arrow_back_ios_new, color: Colors.black),
icon: Icon(Icons.arrow_back_ios_new, color: isDarkTheme ? Colors.white : Colors.black),
onPressed: () async {
final prefs = await SharedPreferences.getInstance();
await _authRepo.logout();
@ -1450,6 +1436,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
onTap: () {
final userId = widget.userId;
final email = _emailController.text;
print(userId);
print(email);
context.push('/createNewPw/$userId/$email');
},

View File

@ -328,7 +328,7 @@ class LoginRoute extends HookConsumerWidget {
void openAppLinkSettings() {
const packageName =
'ae.gov.fcsc.frontend'; // Replace with your app's package
'ae.gov.fcsc.stats'; // Replace with your app's package
final intent = AndroidIntent(
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
data: 'package:$packageName',
@ -456,7 +456,7 @@ class LoginRoute extends HookConsumerWidget {
Future<void> loginCountApi(String userId) async {
if (userId.isNotEmpty) {
final url = Uri.parse('$apiUrl/api/login_success?id=$userId');
final url = Uri.parse('${apiUrl}api/login_success?id=$userId');
try {
final response = await http
@ -481,7 +481,7 @@ class LoginRoute extends HookConsumerWidget {
Future<void> updateOAuthUserDetails(
String userId, metaDetails, WidgetRef ref) async {
final url = "${pb.baseUrl}/api/collections/users/records/$userId";
// final url = "${pb.baseUrl}api/collections/users/records/$userId";
try {
// // Authenticate admin (Persist session globally instead)
@ -489,42 +489,59 @@ class LoginRoute extends HookConsumerWidget {
// 'pb@venbainfotech.com',
// 'pb@venbainfotech.com',
// );
final auth = ref.watch(authProvider);
// final auth = ref.watch(authProvider);
// await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
final themeService = ThemeBaseService();
// final themeService = ThemeBaseService();
// final adminToken = await themeService.getAdminToken(
// email: auth.email,
// password: auth.password,
// );
final userDetails = metaDetails['rawUser'];
print('oauthDetails $userDetails');
final response = await http.patch(
Uri.parse(url),
print("Updating user with ID: ${pb.authStore.model.id}");
final userId = pb.authStore.model.id;
final response = await pb.collection('users').update(
userId,
headers: {
'Content-Type': 'application/json', // Add this
'Authorization': PocketBaseService.authStore.token, // Correct way to send auth token
},
body: jsonEncode({
body: {
"user_mail_verify": true,
"reviewed": true,
"role": 'user',
"uname": userDetails['name'],
"status": 'Approved',
"is_oauth_login": 1,
}),
},
);
print('User response $response');
// final response = await http.patch(
// Uri.parse(url),
// headers: {
// 'Content-Type': 'application/json', // Add this
// 'Authorization': PocketBaseService.authStore.token, // Correct way to send auth token
// },
// body: jsonEncode({
// "user_mail_verify": true,
// "reviewed": true,
// "role": 'user',
// "uname": userDetails['name'],
// "status": 'Approved',
// "is_oauth_login": 1,
// }),
// );
if (response.statusCode == 200) {
print("✅ Device token updated successfully!");
} else {
print("❌ Failed to update device token: ${response.body}");
}
// if (response.statusCode == 200) {
// print("✅ Device token updated successfully!");
// } else {
// print("❌ Failed to update device token: ${response.body}");
// }
} catch (e) {
print("🚨 Error updating device token: $e");
}
@ -1197,7 +1214,7 @@ class LoginRoute extends HookConsumerWidget {
final dontHaveAnAccountRegisterBtn = TextButton(
onPressed: () => {context.push('/register')},
// onPressed: () =>
// {context.push('/forgot-password/surendar.m@venbainfotech.com')},
// {context.push('/forgot-password/surendarsuri30@gmail.com')},
child: Text.rich(
textAlign: TextAlign.center,
TextSpan(

View File

@ -275,7 +275,7 @@ class _BookMarkState extends ConsumerState<BookMark> {
// print('adminTokenETRE- $adminToken');
await _pb.collection('bookmark').delete(bookmarkId!, headers: {
'Authorization': PocketBaseService.authStore.token,
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
});
// currentTheme = ref.read(themeProvider);

View File

@ -186,23 +186,7 @@ class _EditProfileState extends ConsumerState<EditProfile> {
Future<void> _fetchUserData() async {
try {
print('EDIT PROFILE isPageLoad');
// final adminAuth = await _pb.admins
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final auth = ref.watch(authProvider);
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
// final adminToken = adminAuth.token;
final themeService = ThemeBaseService();
// final adminToken = await themeService.getAdminToken(
// email: auth.email,
// password: auth.password,
// );
// print('adminToken- $adminToken');
final userDetailsResponse = await _pb.collection('users').getOne(
userId,
headers: {

View File

@ -134,25 +134,8 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
try {
String? fetchedUserId = await getUserId();
userID = fetchedUserId;
// final adminAuth = await _pb.admins
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
final auth = ref.watch(authProvider);
//
// final adminAuth = await pb.admins.authWithPassword(
// auth.email,
// auth.password,
// );
// final adminToken = adminAuth.token;
final themeService = ThemeBaseService();
// final adminToken = await themeService.getAdminToken(
// email: auth.email,
// password: auth.password,
// );
// print('adminToken- ${adminToken}');
final userDetailsResponse = await _pb.collection('users').getOne(
fetchedUserId!,
userID,
headers: {
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
},

View File

@ -13,7 +13,7 @@ class SessionCheckScreen extends StatefulWidget {
class _SessionCheckScreenState extends State<SessionCheckScreen> {
final PAuthRepo _authRepo = PAuthRepo();
String get playStoreUrl => "https://play.google.com/store/apps/details?id=ae.gov.fcsc.frontend";
String get playStoreUrl => "https://play.google.com/store/apps/details?id=ae.gov.fcsc.stats";
@override
void initState() {

View File

@ -3,7 +3,7 @@
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "ae.gov.fcsc.frontend",
"package_name": "ae.gov.fcsc.stats",
"sha256_cert_fingerprints": [
"e0:b4:6f:b9:8b:96:66:5b:ec:14:98:53:07:01:d4:df:39:24:e8:1f:cd:a2:9e:e4:77:66:e0:b4:5b:c2:e0:94"
]

View File

@ -1072,26 +1072,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0"
url: "https://pub.dev"
source: hosted
version: "10.0.9"
version: "11.0.1"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
source: hosted
version: "3.0.9"
version: "3.0.10"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.0.2"
lints:
dependency: transitive
description:
@ -1603,10 +1603,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
url: "https://pub.dev"
source: hosted
version: "0.7.4"
version: "0.7.6"
the_validator:
dependency: "direct main"
description:
@ -1747,10 +1747,10 @@ packages:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
source: hosted
version: "2.1.4"
version: "2.2.0"
video_player:
dependency: "direct main"
description:
@ -1904,5 +1904,5 @@ packages:
source: hosted
version: "3.1.3"
sdks:
dart: ">=3.7.0 <4.0.0"
dart: ">=3.8.0-0 <4.0.0"
flutter: ">=3.27.0"

View File

@ -1,8 +1,9 @@
name: uae_stat
description: "View statistics about the UAE from the Federal Center for Statistics and Competitiveness."
publish_to: "none"
#version: 1.0.62+63
version: 1.0.8+9
#version: 1.0.65+66
version: 1.0.12+13
#version: 1.0.5+5
environment:
sdk: ">=3.2.3 <4.0.0"
@ -268,4 +269,4 @@ flutter:
weight: 900
- asset: assets/fonts/Roboto/Roboto-BlackItalic.ttf
style: italic
weight: 900
weight: 900