bug fix
This commit is contained in:
parent
cd0c924cff
commit
9bbf370aa7
@ -20,12 +20,12 @@ if (project.hasProperty('google-services.json')) {
|
|||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
|
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = "63"
|
flutterVersionCode = "5"
|
||||||
}
|
}
|
||||||
|
|
||||||
def flutterVersionName = localProperties.getProperty("flutter.versionName")
|
def flutterVersionName = localProperties.getProperty("flutter.versionName")
|
||||||
if (flutterVersionName == null) {
|
if (flutterVersionName == null) {
|
||||||
flutterVersionName = "1.0.62"
|
flutterVersionName = "1.0.5"
|
||||||
}
|
}
|
||||||
|
|
||||||
def keystorePropertiesFile = rootProject.file("key.properties")
|
def keystorePropertiesFile = rootProject.file("key.properties")
|
||||||
@ -33,7 +33,7 @@ def keystoreProperties = new Properties()
|
|||||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "ae.gov.fcsc.frontend"
|
namespace = "ae.gov.fcsc.stats"
|
||||||
compileSdk = flutter.compileSdkVersion
|
compileSdk = flutter.compileSdkVersion
|
||||||
// ndkVersion = flutter.ndkVersion
|
// ndkVersion = flutter.ndkVersion
|
||||||
ndkVersion = "25.1.8937393"
|
ndkVersion = "25.1.8937393"
|
||||||
@ -48,10 +48,10 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// 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.
|
// 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.
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||||
minSdk = 23
|
minSdkVersion = flutter.minSdkVersion
|
||||||
targetSdk = flutter.targetSdkVersion
|
targetSdk = flutter.targetSdkVersion
|
||||||
versionCode = flutterVersionCode.toInteger()
|
versionCode = flutterVersionCode.toInteger()
|
||||||
versionName = flutterVersionName
|
versionName = flutterVersionName
|
||||||
|
|||||||
@ -12,7 +12,12 @@
|
|||||||
"package_name": "ae.gov.fcsc.frontend"
|
"package_name": "ae.gov.fcsc.frontend"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oauth_client": [],
|
"oauth_client": [
|
||||||
|
{
|
||||||
|
"client_id": "62132243005-rnqthdakjs2ccs1ri7hnh79eh8t6hojl.apps.googleusercontent.com",
|
||||||
|
"client_type": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
"api_key": [
|
"api_key": [
|
||||||
{
|
{
|
||||||
"current_key": "AIzaSyB-QQbnq366f7rrKLVVFJKnSZgR9LcDWFI"
|
"current_key": "AIzaSyB-QQbnq366f7rrKLVVFJKnSZgR9LcDWFI"
|
||||||
@ -20,7 +25,41 @@
|
|||||||
],
|
],
|
||||||
"services": {
|
"services": {
|
||||||
"appinvite_service": {
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
|
||||||
<application
|
<application
|
||||||
android:label="UAE Stats"
|
android:label="UAE Stats"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package ae.gov.fcsc.frontend;
|
package ae.gov.fcsc.stats;
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity;
|
import io.flutter.embedding.android.FlutterActivity;
|
||||||
|
|
||||||
@ -21,6 +21,6 @@
|
|||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.0</string>
|
<string>1.0</string>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
<string>12.0</string>
|
<string>13.0</string>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -76,28 +76,28 @@ PODS:
|
|||||||
- AppCheckCore (~> 11.0)
|
- AppCheckCore (~> 11.0)
|
||||||
- GTMAppAuth (~> 5.0)
|
- GTMAppAuth (~> 5.0)
|
||||||
- GTMSessionFetcher/Core (~> 3.3)
|
- GTMSessionFetcher/Core (~> 3.3)
|
||||||
- GoogleUtilities/AppDelegateSwizzler (8.0.2):
|
- GoogleUtilities/AppDelegateSwizzler (8.1.0):
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Network
|
- GoogleUtilities/Network
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Environment (8.0.2):
|
- GoogleUtilities/Environment (8.1.0):
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Logger (8.0.2):
|
- GoogleUtilities/Logger (8.1.0):
|
||||||
- GoogleUtilities/Environment
|
- GoogleUtilities/Environment
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Network (8.0.2):
|
- GoogleUtilities/Network (8.1.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- "GoogleUtilities/NSData+zlib"
|
- "GoogleUtilities/NSData+zlib"
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Reachability
|
- GoogleUtilities/Reachability
|
||||||
- "GoogleUtilities/NSData+zlib (8.0.2)":
|
- "GoogleUtilities/NSData+zlib (8.1.0)":
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/Privacy (8.0.2)
|
- GoogleUtilities/Privacy (8.1.0)
|
||||||
- GoogleUtilities/Reachability (8.0.2):
|
- GoogleUtilities/Reachability (8.1.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GoogleUtilities/UserDefaults (8.0.2):
|
- GoogleUtilities/UserDefaults (8.1.0):
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- GoogleUtilities/Privacy
|
- GoogleUtilities/Privacy
|
||||||
- GTMAppAuth (5.0.0):
|
- GTMAppAuth (5.0.0):
|
||||||
@ -233,14 +233,14 @@ SPEC CHECKSUMS:
|
|||||||
FirebaseCoreInternal: ef4505d2afb1d0ebbc33162cb3795382904b5679
|
FirebaseCoreInternal: ef4505d2afb1d0ebbc33162cb3795382904b5679
|
||||||
FirebaseInstallations: 9980995bdd06ec8081dfb6ab364162bdd64245c3
|
FirebaseInstallations: 9980995bdd06ec8081dfb6ab364162bdd64245c3
|
||||||
FirebaseMessaging: 2b9f56aa4ed286e1f0ce2ee1d413aabb8f9f5cb9
|
FirebaseMessaging: 2b9f56aa4ed286e1f0ce2ee1d413aabb8f9f5cb9
|
||||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
|
||||||
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
|
flutter_native_splash: 6cad9122ea0fad137d23137dd14b937f3e90b145
|
||||||
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
|
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
|
||||||
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
|
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
|
||||||
google_sign_in_ios: 205742c688aea0e64db9da03c33121694a365109
|
google_sign_in_ios: 205742c688aea0e64db9da03c33121694a365109
|
||||||
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||||
GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77
|
GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77
|
||||||
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
|
GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
|
||||||
GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238
|
GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238
|
||||||
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||||
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
||||||
|
|||||||
@ -9,14 +9,14 @@
|
|||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
0A3628072DBA1754003BB600 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0A3628062DBA1754003BB600 /* GoogleService-Info.plist */; };
|
0A3628072DBA1754003BB600 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 0A3628062DBA1754003BB600 /* GoogleService-Info.plist */; };
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
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 */; };
|
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
|
||||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
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 */; };
|
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
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 */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
@ -43,22 +43,22 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference 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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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; };
|
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>"; };
|
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>"; };
|
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; };
|
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>"; };
|
||||||
5FA41CC2D981AE62980D7CDE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
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>"; };
|
||||||
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>"; };
|
|
||||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; 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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
||||||
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>"; };
|
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 */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -75,7 +75,7 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
24C5313A956552DACC6A2F25 /* Pods_Runner.framework in Frameworks */,
|
240B527598875F1FE339FA22 /* Pods_Runner.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -83,13 +83,22 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
8ED4634D514CEE8AAD6C53BF /* Pods_RunnerTests.framework in Frameworks */,
|
C95A12418F9FFCB720BD8393 /* Pods_RunnerTests.framework in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
28284A5C1F887F28AE69A945 /* Frameworks */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
21E5D4AD0E73EDB191B0D3AB /* Pods_Runner.framework */,
|
||||||
|
4469EAF9D5EEA501A0DFB6F8 /* Pods_RunnerTests.framework */,
|
||||||
|
);
|
||||||
|
name = Frameworks;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
331C8082294A63A400263BE5 /* RunnerTests */ = {
|
331C8082294A63A400263BE5 /* RunnerTests */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -98,15 +107,6 @@
|
|||||||
path = RunnerTests;
|
path = RunnerTests;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
749F29DBA04D4F0AC77B3B06 /* Frameworks */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
55598A82C8C267A1C98A4CAB /* Pods_Runner.framework */,
|
|
||||||
5FA41CC2D981AE62980D7CDE /* Pods_RunnerTests.framework */,
|
|
||||||
);
|
|
||||||
name = Frameworks;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -127,7 +127,7 @@
|
|||||||
97C146EF1CF9000F007C117D /* Products */,
|
97C146EF1CF9000F007C117D /* Products */,
|
||||||
331C8082294A63A400263BE5 /* RunnerTests */,
|
331C8082294A63A400263BE5 /* RunnerTests */,
|
||||||
F25EA3847C6F2AAFB1DC01FE /* Pods */,
|
F25EA3847C6F2AAFB1DC01FE /* Pods */,
|
||||||
749F29DBA04D4F0AC77B3B06 /* Frameworks */,
|
28284A5C1F887F28AE69A945 /* Frameworks */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@ -159,12 +159,12 @@
|
|||||||
F25EA3847C6F2AAFB1DC01FE /* Pods */ = {
|
F25EA3847C6F2AAFB1DC01FE /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
6CDA306B9D63C636C5E386EA /* Pods-Runner.debug.xcconfig */,
|
24B0F467E9CA8104D381B202 /* Pods-Runner.debug.xcconfig */,
|
||||||
D3C1C8E1C6847D14747D5CA0 /* Pods-Runner.release.xcconfig */,
|
DD3A539579E9051D3B376D8C /* Pods-Runner.release.xcconfig */,
|
||||||
F3C942613F32EA1A640F6253 /* Pods-Runner.profile.xcconfig */,
|
22E09441D41F6799CBD1B240 /* Pods-Runner.profile.xcconfig */,
|
||||||
0444FC1B1408261D7136E027 /* Pods-RunnerTests.debug.xcconfig */,
|
5B2FBD20ED5FAB8AE3E2ADF2 /* Pods-RunnerTests.debug.xcconfig */,
|
||||||
1A00CF12F959681F51F0DFF1 /* Pods-RunnerTests.release.xcconfig */,
|
A017ACC7D044E0AB9F6181D9 /* Pods-RunnerTests.release.xcconfig */,
|
||||||
7C6ACEA576E5C2F6C934190C /* Pods-RunnerTests.profile.xcconfig */,
|
64832D0DB3389F2E98B4DB8B /* Pods-RunnerTests.profile.xcconfig */,
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -176,7 +176,7 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
|
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
6F0848DEFB39009965C02737 /* [CP] Check Pods Manifest.lock */,
|
ABF7856C364A999DB2217720 /* [CP] Check Pods Manifest.lock */,
|
||||||
331C807D294A63A400263BE5 /* Sources */,
|
331C807D294A63A400263BE5 /* Sources */,
|
||||||
331C807F294A63A400263BE5 /* Resources */,
|
331C807F294A63A400263BE5 /* Resources */,
|
||||||
E02DE8038B90180AEC767AB8 /* Frameworks */,
|
E02DE8038B90180AEC767AB8 /* Frameworks */,
|
||||||
@ -195,15 +195,15 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
EE784DB7875630E76CDE549A /* [CP] Check Pods Manifest.lock */,
|
74896B3972D4DFE648762369 /* [CP] Check Pods Manifest.lock */,
|
||||||
9740EEB61CF901F6004384FC /* Run Script */,
|
9740EEB61CF901F6004384FC /* Run Script */,
|
||||||
97C146EA1CF9000F007C117D /* Sources */,
|
97C146EA1CF9000F007C117D /* Sources */,
|
||||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||||
97C146EC1CF9000F007C117D /* Resources */,
|
97C146EC1CF9000F007C117D /* Resources */,
|
||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
81850966CE8A19C86242963D /* [CP] Embed Pods Frameworks */,
|
D647B226474A988311A876B7 /* [CP] Embed Pods Frameworks */,
|
||||||
BBDC9308AF5C3BFCEC84ACC5 /* [CP] Copy Pods Resources */,
|
9DC7C3CC7EB907CC8713FB78 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -292,7 +292,61 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
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;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
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";
|
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;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
81850966CE8A19C86242963D /* [CP] Embed Pods Frameworks */ = {
|
D647B226474A988311A876B7 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
@ -322,77 +376,15 @@
|
|||||||
inputFileListPaths = (
|
inputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
||||||
);
|
);
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputFileListPaths = (
|
outputFileListPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
||||||
);
|
);
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
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 */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
@ -487,7 +479,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@ -506,7 +498,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 9;
|
CURRENT_PROJECT_VERSION = 13;
|
||||||
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
||||||
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@ -517,7 +509,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.8;
|
MARKETING_VERSION = 1.0.12;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -534,7 +526,7 @@
|
|||||||
};
|
};
|
||||||
331C8088294A63A400263BE5 /* Debug */ = {
|
331C8088294A63A400263BE5 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 0444FC1B1408261D7136E027 /* Pods-RunnerTests.debug.xcconfig */;
|
baseConfigurationReference = 5B2FBD20ED5FAB8AE3E2ADF2 /* Pods-RunnerTests.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@ -552,7 +544,7 @@
|
|||||||
};
|
};
|
||||||
331C8089294A63A400263BE5 /* Release */ = {
|
331C8089294A63A400263BE5 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 1A00CF12F959681F51F0DFF1 /* Pods-RunnerTests.release.xcconfig */;
|
baseConfigurationReference = A017ACC7D044E0AB9F6181D9 /* Pods-RunnerTests.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@ -568,7 +560,7 @@
|
|||||||
};
|
};
|
||||||
331C808A294A63A400263BE5 /* Profile */ = {
|
331C808A294A63A400263BE5 /* Profile */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7C6ACEA576E5C2F6C934190C /* Pods-RunnerTests.profile.xcconfig */;
|
baseConfigurationReference = 64832D0DB3389F2E98B4DB8B /* Pods-RunnerTests.profile.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
@ -632,7 +624,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_ENABLE_DEBUG_INFO = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
@ -684,7 +676,7 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SUPPORTED_PLATFORMS = iphoneos;
|
SUPPORTED_PLATFORMS = iphoneos;
|
||||||
@ -705,7 +697,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 9;
|
CURRENT_PROJECT_VERSION = 13;
|
||||||
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
||||||
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@ -716,7 +708,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.8;
|
MARKETING_VERSION = 1.0.12;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
@ -742,7 +734,7 @@
|
|||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 9;
|
CURRENT_PROJECT_VERSION = 13;
|
||||||
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
DEVELOPMENT_ASSET_PATHS = Runner/Assets.xcassets;
|
||||||
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
DEVELOPMENT_TEAM = 9N5SRFUGK2;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
@ -753,7 +745,7 @@
|
|||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 1.0.8;
|
MARKETING_VERSION = 1.0.12;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
PRODUCT_BUNDLE_IDENTIFIER = ae.gov.fcsc.frontend.ios;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
@ -54,6 +55,7 @@
|
|||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
|||||||
@ -58,8 +58,6 @@
|
|||||||
<string>We need camera access</string>
|
<string>We need camera access</string>
|
||||||
<key>NSLocalNetworkUsageDescription</key>
|
<key>NSLocalNetworkUsageDescription</key>
|
||||||
<string>This app uses the local network to debug and connect to the Flutter development service.</string>
|
<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>
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>UIBackgroundModes</key>
|
<key>UIBackgroundModes</key>
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// api_config.dart
|
// api_config.dart
|
||||||
// const String apiUrl = 'http://127.0.0.1:8090';
|
// const String apiUrl = 'http://127.0.0.1:8090';
|
||||||
// const String apiUrl = 'https://pbdev.venbait.in/';
|
// const String apiUrl = 'https://pbdev.venbait.in/';
|
||||||
// const String apiUrl = 'https://pb.venbait.in/';
|
const String apiUrl = 'https://pb.venbait.in/';
|
||||||
const String apiUrl = 'https://pocket.fcsc.gov.ae/';
|
// const String apiUrl = 'https://pocket.fcsc.gov.ae/';
|
||||||
|
|||||||
@ -61,7 +61,7 @@ class AppLinksHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void _openAppLinkSettingsAndroid() {
|
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(
|
final intent = AndroidIntent(
|
||||||
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
|
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
|
||||||
data: 'package:$packageName',
|
data: 'package:$packageName',
|
||||||
|
|||||||
@ -24,7 +24,7 @@ class _SessionCheckScreenState extends ConsumerState<SessionCheckScreen> {
|
|||||||
bool _isLoading = true;
|
bool _isLoading = true;
|
||||||
|
|
||||||
String get playStoreUrl =>
|
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
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
|||||||
@ -188,7 +188,7 @@ class _MainAppState extends ConsumerState<MainApp> {
|
|||||||
appsflyerSdk=AppsflyerSdk(
|
appsflyerSdk=AppsflyerSdk(
|
||||||
AppsFlyerOptions(
|
AppsFlyerOptions(
|
||||||
afDevKey: '7TwqHnPoWcAUuiFGpuCVtF',
|
afDevKey: '7TwqHnPoWcAUuiFGpuCVtF',
|
||||||
appId: 'ae.gov.fcsc.frontend',
|
appId: 'ae.gov.fcsc.stats',
|
||||||
showDebug: true,
|
showDebug: true,
|
||||||
timeToWaitForATTUserAuthorization: 0,
|
timeToWaitForATTUserAuthorization: 0,
|
||||||
),
|
),
|
||||||
|
|||||||
@ -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/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/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/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/Screens/profilepage.dart';
|
||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.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/my_toggle.dart';
|
||||||
@ -148,26 +149,9 @@ class _CreateNewPwState extends ConsumerState<CreateNewPw> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
isLoading = true;
|
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 = {
|
final headers = {
|
||||||
'Authorization': 'Bearer $token',
|
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
|
||||||
};
|
};
|
||||||
|
|
||||||
bool isPasswordValid =
|
bool isPasswordValid =
|
||||||
|
|||||||
@ -6,21 +6,20 @@ import 'package:pocketbase/pocketbase.dart';
|
|||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:uae_stat/config/api_config.dart';
|
import 'package:uae_stat/config/api_config.dart';
|
||||||
import 'package:uae_stat/config/connectivity_provider.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/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/domain/use_cases/language.dart';
|
||||||
import 'package:uae_stat/infrastructure/data/p_auth_repo.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/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/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/Screens/profilepage.dart';
|
||||||
import 'package:uae_stat/presentation/components/indicators/locale_provider.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/my_toggle.dart';
|
||||||
import 'package:uae_stat/presentation/components/space.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/config/my_theme.dart';
|
||||||
import 'package:uae_stat/presentation/routes/drawer_routes/Drawer%20Items/notification/notification.dart';
|
|
||||||
|
|
||||||
class ForgotPassword extends ConsumerStatefulWidget {
|
class ForgotPassword extends ConsumerStatefulWidget {
|
||||||
final String email;
|
final String email;
|
||||||
@ -43,9 +42,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
String? _newPassword;
|
String? _newPassword;
|
||||||
String? _confirmPassword;
|
String? _confirmPassword;
|
||||||
|
|
||||||
final fcscBanner = Image.asset(
|
final fcscBanner = Padding(
|
||||||
BannerAssetPath.fcscLogoLight,
|
padding: const EdgeInsets.all(30.0),
|
||||||
height: 40,
|
child: Image.asset(
|
||||||
|
BannerAssetPath.fcscLogoLight,
|
||||||
|
height: 40,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
String? _validateNewPassword(String? value) {
|
String? _validateNewPassword(String? value) {
|
||||||
@ -179,31 +181,17 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
// Authenticate as admin
|
// Authenticate as admin
|
||||||
// final adminAuth = await _pb.admins
|
// final adminAuth = await _pb.admins
|
||||||
// .authWithPassword('pb@venbainfotech.com', 'pb@venbainfotech.com');
|
// .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 token = adminAuth.token;
|
||||||
|
|
||||||
final themeService = ThemeBaseService();
|
|
||||||
final token = await themeService.getAdminToken(
|
|
||||||
email: auth.email,
|
|
||||||
password: auth.password,
|
|
||||||
);
|
|
||||||
|
|
||||||
final headers = {
|
final headers = {
|
||||||
'Authorization': 'Bearer $token',
|
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
|
||||||
};
|
};
|
||||||
|
|
||||||
// Step 1: Find User by Email
|
// Step 1: Find User by Email
|
||||||
final result = await _pb.collection('users').getList(
|
final result = await _pb.collection('users').getList(
|
||||||
filter: 'email = "$email"',
|
filter: 'email = "$email"',
|
||||||
headers: headers,
|
headers: headers,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (result.items.isEmpty) {
|
if (result.items.isEmpty) {
|
||||||
// throw Exception("User not found");
|
// throw Exception("User not found");
|
||||||
@ -213,9 +201,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
'User not found',
|
'User not found',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
backgroundColor: Colors.red,
|
backgroundColor: Colors.red,
|
||||||
),
|
),
|
||||||
@ -226,13 +214,13 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
|
|
||||||
// Step 3: Update Password
|
// Step 3: Update Password
|
||||||
await _pb.collection('users').update(
|
await _pb.collection('users').update(
|
||||||
userId,
|
userId,
|
||||||
body: {
|
body: {
|
||||||
'password': newPassword,
|
'password': newPassword,
|
||||||
'passwordConfirm': newPassword,
|
'passwordConfirm': newPassword,
|
||||||
},
|
},
|
||||||
headers: headers,
|
headers: headers,
|
||||||
);
|
);
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
@ -245,9 +233,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
AppLocalizations.of(context)!.password_update_successfully,
|
AppLocalizations.of(context)!.password_update_successfully,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
backgroundColor: Colors.green,
|
backgroundColor: Colors.green,
|
||||||
),
|
),
|
||||||
@ -265,9 +253,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
'Failed to update password: $e',
|
'Failed to update password: $e',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'Roboto',
|
||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
backgroundColor: Colors.red,
|
backgroundColor: Colors.red,
|
||||||
),
|
),
|
||||||
@ -295,14 +283,13 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// final themeMode = ref.read(themeProvider);
|
final themeMode = ref.read(themeProvider);
|
||||||
// final themeMode = ThemeMode.dark;
|
final isDarkTheme = themeMode == ThemeMode.dark ||
|
||||||
final isDarkTheme = ref.read(themeProvider) == ThemeMode.dark ||
|
(themeMode == ThemeMode.system &&
|
||||||
(ref.read(themeProvider) == ThemeMode.system &&
|
|
||||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: isDarkTheme ? Color(0xFF111111) : Colors.white,
|
||||||
body: Stack(children: [
|
body: Stack(children: [
|
||||||
SingleChildScrollView(
|
SingleChildScrollView(
|
||||||
child: SafeArea(
|
child: SafeArea(
|
||||||
@ -313,9 +300,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
),
|
),
|
||||||
if (isLoading)
|
if (isLoading)
|
||||||
Container(
|
Container(
|
||||||
color: isDarkTheme
|
color: Color(0x98FFFCE5), // Semi-transparent background
|
||||||
? Colors.black
|
|
||||||
: Colors.white, // Semi-transparent background
|
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
@ -325,9 +310,9 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
child: LinearProgressIndicator(
|
child: LinearProgressIndicator(
|
||||||
minHeight: 5, // Adjust thickness
|
minHeight: 5, // Adjust thickness
|
||||||
backgroundColor:
|
backgroundColor:
|
||||||
Colors.grey[100], // Optional: Background color
|
Colors.grey[100], // Optional: Background color
|
||||||
valueColor: AlwaysStoppedAnimation<Color>(
|
valueColor: AlwaysStoppedAnimation<Color>(
|
||||||
Color(0xFFAA8E83)), // Loader color
|
Color(0xFFB68A34)), // Loader color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -338,6 +323,10 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
|
|
||||||
Widget _buildPasswordForm(
|
Widget _buildPasswordForm(
|
||||||
WidgetRef ref, double screenHeight, double screenWidth) {
|
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);
|
final passwordLocale = ref.watch(localeProvider);
|
||||||
return Form(
|
return Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
@ -363,7 +352,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
// Icons.close,
|
// Icons.close,
|
||||||
Icons.arrow_back_ios,
|
Icons.arrow_back_ios,
|
||||||
size: 24, // Icon size
|
size: 24, // Icon size
|
||||||
color: Colors.black, // Icon color
|
color: isDarkTheme ? Colors.white : Colors.black, // Icon color
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
), // Left icon
|
), // Left icon
|
||||||
@ -412,6 +401,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontWeight: FontWeight.w300,
|
fontWeight: FontWeight.w300,
|
||||||
|
color: isDarkTheme ? Colors.white : Color(0xFF111111),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
@ -426,7 +416,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize:
|
fontSize:
|
||||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
color: Color(0xFF898C81),
|
color: Color(0xFF898C81),
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
@ -443,7 +433,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
'NotoKufi',
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
fontSize:
|
fontSize:
|
||||||
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
passwordLocale?.languageCode == 'ar' ? 14 : 15,
|
||||||
color: Color(0xFF898C81),
|
color: Color(0xFF898C81),
|
||||||
fontWeight: FontWeight.w700),
|
fontWeight: FontWeight.w700),
|
||||||
),
|
),
|
||||||
@ -480,10 +470,17 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
height: 25,
|
height: 25,
|
||||||
width: 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(
|
suffixIcon: IconButton(
|
||||||
// icon: Icon(
|
// icon: Icon(
|
||||||
// _obscureNewPassword
|
// _obscureNewPassword
|
||||||
@ -511,15 +508,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
),
|
),
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(color: Color(0xFFB68A34), width: 1),
|
||||||
color:
|
|
||||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
|
||||||
width: 1),
|
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: Colors.deepPurple, width: 2), // Focused border
|
color: Color(0xFFB68A34), width: 2), // Focused border
|
||||||
),
|
),
|
||||||
errorBorder: OutlineInputBorder(
|
errorBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -563,10 +557,16 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
fit: BoxFit.fitHeight,
|
fit: BoxFit.fitHeight,
|
||||||
height: 25,
|
height: 25,
|
||||||
width: 25,
|
width: 25,
|
||||||
color: MyTheme.topicColor(IndicatorTopic.economy).shade300,
|
color: Color(0xFFB68A34),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
errorStyle: TextStyle(
|
||||||
|
color: Color(0xFFD83731),
|
||||||
|
fontFamily: context.translate(
|
||||||
|
'Roboto',
|
||||||
|
'NotoKufi',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
suffixIcon: IconButton(
|
suffixIcon: IconButton(
|
||||||
// icon: Icon(
|
// icon: Icon(
|
||||||
// _obscureConfirmPassword
|
// _obscureConfirmPassword
|
||||||
@ -594,15 +594,12 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
// border: OutlineInputBorder(),
|
// border: OutlineInputBorder(),
|
||||||
enabledBorder: OutlineInputBorder(
|
enabledBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(color: Color(0xFFB68A34), width: 1),
|
||||||
color:
|
|
||||||
MyTheme.topicColor(IndicatorTopic.economy).shade400,
|
|
||||||
width: 1),
|
|
||||||
),
|
),
|
||||||
focusedBorder: OutlineInputBorder(
|
focusedBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
borderSide: BorderSide(
|
borderSide: BorderSide(
|
||||||
color: Colors.deepPurple, width: 2), // Focused border
|
color: Color(0xFFB68A34), width: 2), // Focused border
|
||||||
),
|
),
|
||||||
errorBorder: OutlineInputBorder(
|
errorBorder: OutlineInputBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -635,7 +632,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
style: ElevatedButton.styleFrom(
|
style: ElevatedButton.styleFrom(
|
||||||
backgroundColor: Colors.brown[300],
|
backgroundColor: Color(0xFFB68A34),
|
||||||
padding: EdgeInsets.symmetric(horizontal: 80, vertical: 16),
|
padding: EdgeInsets.symmetric(horizontal: 80, vertical: 16),
|
||||||
shape: RoundedRectangleBorder(
|
shape: RoundedRectangleBorder(
|
||||||
borderRadius: BorderRadius.circular(10),
|
borderRadius: BorderRadius.circular(10),
|
||||||
@ -648,7 +645,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
AppLocalizations.of(context)!.save,
|
AppLocalizations.of(context)!.save,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize:
|
fontSize:
|
||||||
passwordLocale?.languageCode == 'ar' ? 14 : 18,
|
passwordLocale?.languageCode == 'ar' ? 14 : 18,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontFamily: context.translate(
|
fontFamily: context.translate(
|
||||||
'Roboto',
|
'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) {
|
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');
|
print('IN');
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.all(20.0),
|
padding: EdgeInsets.all(20.0),
|
||||||
@ -732,7 +742,7 @@ class _ForgotPasswordState extends ConsumerState<ForgotPassword> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
backgroundColor: WidgetStatePropertyAll(
|
backgroundColor: WidgetStatePropertyAll(
|
||||||
MyTheme.topicColor(IndicatorTopic.social),
|
Color(0xFFB68A34),
|
||||||
),
|
),
|
||||||
// surfaceTintColor: MaterialStatePropertyAll(
|
// surfaceTintColor: MaterialStatePropertyAll(
|
||||||
// MyTheme.economy[800],
|
// 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,
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -144,29 +144,11 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
final prefs = await SharedPreferences.getInstance();
|
final prefs = await SharedPreferences.getInstance();
|
||||||
final userID = prefs.getString('userId');
|
final userID = prefs.getString('userId');
|
||||||
try {
|
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(
|
final result = await _pb.collection('bookmark').getList(
|
||||||
filter: "user_id = '${userID}' && dataset = '${widget.dataSets}'",
|
filter: "user_id = '${userID}' && dataset = '${widget.dataSets}'",
|
||||||
headers: {
|
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 prefs = await SharedPreferences.getInstance();
|
||||||
final userID = prefs.getString('userId');
|
final userID = prefs.getString('userId');
|
||||||
try {
|
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: {
|
final response = await _pb.collection('bookmark').create(body: {
|
||||||
'user_id': userID,
|
'user_id': userID,
|
||||||
'dataset': widget.dataSets,
|
'dataset': widget.dataSets,
|
||||||
@ -204,7 +177,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
|||||||
'title': widget.title,
|
'title': widget.title,
|
||||||
'keyParam': widget.keyParam,
|
'keyParam': widget.keyParam,
|
||||||
}, headers: {
|
}, headers: {
|
||||||
'Authorization': PocketBaseService.authStore.token
|
'Authorization': 'Bearer ${PocketBaseService.authStore.token}'
|
||||||
});
|
});
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -101,7 +101,9 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
// print(widget.userId);
|
// print(widget.userId);
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
_fetchUserData();
|
||||||
|
});
|
||||||
_selectedCountry ??= ISOCountry.numeric784;
|
_selectedCountry ??= ISOCountry.numeric784;
|
||||||
|
|
||||||
final themeMode = ref.read(themeProvider);
|
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
|
@override
|
||||||
@ -165,25 +167,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _fetchUserData() async {
|
Future<void> _fetchUserData() async {
|
||||||
|
print('userId: ${widget.userId}');
|
||||||
try {
|
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(
|
final userDetailsResponse = await _pb.collection('users').getOne(
|
||||||
widget.userId,
|
widget.userId,
|
||||||
headers: {
|
headers: {
|
||||||
@ -191,6 +176,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
print('userDetails: $userDetailsResponse');
|
print('userDetails: $userDetailsResponse');
|
||||||
|
print(userDetailsResponse.data['email']);
|
||||||
setState(() {
|
setState(() {
|
||||||
_usernameController.text = userDetailsResponse.data['uname'] ?? '';
|
_usernameController.text = userDetailsResponse.data['uname'] ?? '';
|
||||||
_emailController.text = userDetailsResponse.data['email'] ?? '';
|
_emailController.text = userDetailsResponse.data['email'] ?? '';
|
||||||
@ -395,7 +381,7 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add headers (if required, e.g., authorization)
|
// Add headers (if required, e.g., authorization)
|
||||||
request.headers['Authorization'] = 'Bearer ${_pb.authStore.token}';
|
request.headers['Authorization'] = 'Bearer ${PocketBaseService.authStore.token}';
|
||||||
|
|
||||||
// Send the request
|
// Send the request
|
||||||
final response = await request.send();
|
final response = await request.send();
|
||||||
@ -592,10 +578,10 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
scrolledUnderElevation: 0,
|
scrolledUnderElevation: 0,
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
leading: IconButton(
|
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 {
|
onPressed: () async {
|
||||||
final prefs = await SharedPreferences.getInstance();
|
final prefs = await SharedPreferences.getInstance();
|
||||||
await _authRepo.logout();
|
await _authRepo.logout();
|
||||||
@ -1450,6 +1436,8 @@ class _ProfileScreenState extends ConsumerState<ProfileScreen> {
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
final userId = widget.userId;
|
final userId = widget.userId;
|
||||||
final email = _emailController.text;
|
final email = _emailController.text;
|
||||||
|
print(userId);
|
||||||
|
print(email);
|
||||||
|
|
||||||
context.push('/createNewPw/$userId/$email');
|
context.push('/createNewPw/$userId/$email');
|
||||||
},
|
},
|
||||||
|
|||||||
@ -328,7 +328,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
|
|
||||||
void openAppLinkSettings() {
|
void openAppLinkSettings() {
|
||||||
const packageName =
|
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(
|
final intent = AndroidIntent(
|
||||||
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
|
action: 'android.settings.APP_OPEN_BY_DEFAULT_SETTINGS',
|
||||||
data: 'package:$packageName',
|
data: 'package:$packageName',
|
||||||
@ -456,7 +456,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
|
|
||||||
Future<void> loginCountApi(String userId) async {
|
Future<void> loginCountApi(String userId) async {
|
||||||
if (userId.isNotEmpty) {
|
if (userId.isNotEmpty) {
|
||||||
final url = Uri.parse('$apiUrl/api/login_success?id=$userId');
|
final url = Uri.parse('${apiUrl}api/login_success?id=$userId');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final response = await http
|
final response = await http
|
||||||
@ -481,7 +481,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
|
|
||||||
Future<void> updateOAuthUserDetails(
|
Future<void> updateOAuthUserDetails(
|
||||||
String userId, metaDetails, WidgetRef ref) async {
|
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 {
|
try {
|
||||||
// // Authenticate admin (Persist session globally instead)
|
// // Authenticate admin (Persist session globally instead)
|
||||||
@ -489,42 +489,59 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
// 'pb@venbainfotech.com',
|
// 'pb@venbainfotech.com',
|
||||||
// 'pb@venbainfotech.com',
|
// 'pb@venbainfotech.com',
|
||||||
// );
|
// );
|
||||||
final auth = ref.watch(authProvider);
|
// final auth = ref.watch(authProvider);
|
||||||
|
|
||||||
// await pb.admins.authWithPassword(
|
// await pb.admins.authWithPassword(
|
||||||
// auth.email,
|
// auth.email,
|
||||||
// auth.password,
|
// auth.password,
|
||||||
// );
|
// );
|
||||||
|
|
||||||
final themeService = ThemeBaseService();
|
// final themeService = ThemeBaseService();
|
||||||
// final adminToken = await themeService.getAdminToken(
|
// final adminToken = await themeService.getAdminToken(
|
||||||
// email: auth.email,
|
// email: auth.email,
|
||||||
// password: auth.password,
|
// password: auth.password,
|
||||||
// );
|
// );
|
||||||
final userDetails = metaDetails['rawUser'];
|
final userDetails = metaDetails['rawUser'];
|
||||||
print('oauthDetails $userDetails');
|
print('oauthDetails $userDetails');
|
||||||
|
print("Updating user with ID: ${pb.authStore.model.id}");
|
||||||
final response = await http.patch(
|
final userId = pb.authStore.model.id;
|
||||||
Uri.parse(url),
|
final response = await pb.collection('users').update(
|
||||||
|
userId,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json', // Add this
|
'Content-Type': 'application/json', // Add this
|
||||||
'Authorization': PocketBaseService.authStore.token, // Correct way to send auth token
|
'Authorization': PocketBaseService.authStore.token, // Correct way to send auth token
|
||||||
},
|
},
|
||||||
body: jsonEncode({
|
body: {
|
||||||
"user_mail_verify": true,
|
"user_mail_verify": true,
|
||||||
"reviewed": true,
|
"reviewed": true,
|
||||||
"role": 'user',
|
"role": 'user',
|
||||||
"uname": userDetails['name'],
|
"uname": userDetails['name'],
|
||||||
"status": 'Approved',
|
"status": 'Approved',
|
||||||
"is_oauth_login": 1,
|
"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) {
|
// if (response.statusCode == 200) {
|
||||||
print("✅ Device token updated successfully!");
|
// print("✅ Device token updated successfully!");
|
||||||
} else {
|
// } else {
|
||||||
print("❌ Failed to update device token: ${response.body}");
|
// print("❌ Failed to update device token: ${response.body}");
|
||||||
}
|
// }
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print("🚨 Error updating device token: $e");
|
print("🚨 Error updating device token: $e");
|
||||||
}
|
}
|
||||||
@ -1197,7 +1214,7 @@ class LoginRoute extends HookConsumerWidget {
|
|||||||
final dontHaveAnAccountRegisterBtn = TextButton(
|
final dontHaveAnAccountRegisterBtn = TextButton(
|
||||||
onPressed: () => {context.push('/register')},
|
onPressed: () => {context.push('/register')},
|
||||||
// onPressed: () =>
|
// onPressed: () =>
|
||||||
// {context.push('/forgot-password/surendar.m@venbainfotech.com')},
|
// {context.push('/forgot-password/surendarsuri30@gmail.com')},
|
||||||
child: Text.rich(
|
child: Text.rich(
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
TextSpan(
|
TextSpan(
|
||||||
|
|||||||
@ -275,7 +275,7 @@ class _BookMarkState extends ConsumerState<BookMark> {
|
|||||||
// print('adminTokenETRE- $adminToken');
|
// print('adminTokenETRE- $adminToken');
|
||||||
|
|
||||||
await _pb.collection('bookmark').delete(bookmarkId!, headers: {
|
await _pb.collection('bookmark').delete(bookmarkId!, headers: {
|
||||||
'Authorization': PocketBaseService.authStore.token,
|
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
|
||||||
});
|
});
|
||||||
|
|
||||||
// currentTheme = ref.read(themeProvider);
|
// currentTheme = ref.read(themeProvider);
|
||||||
|
|||||||
@ -186,23 +186,7 @@ class _EditProfileState extends ConsumerState<EditProfile> {
|
|||||||
Future<void> _fetchUserData() async {
|
Future<void> _fetchUserData() async {
|
||||||
try {
|
try {
|
||||||
print('EDIT PROFILE isPageLoad');
|
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(
|
final userDetailsResponse = await _pb.collection('users').getOne(
|
||||||
userId,
|
userId,
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@ -134,25 +134,8 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
|
|||||||
try {
|
try {
|
||||||
String? fetchedUserId = await getUserId();
|
String? fetchedUserId = await getUserId();
|
||||||
userID = fetchedUserId;
|
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(
|
final userDetailsResponse = await _pb.collection('users').getOne(
|
||||||
fetchedUserId!,
|
userID,
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
|
'Authorization': 'Bearer ${PocketBaseService.authStore.token}',
|
||||||
},
|
},
|
||||||
|
|||||||
@ -13,7 +13,7 @@ class SessionCheckScreen extends StatefulWidget {
|
|||||||
class _SessionCheckScreenState extends State<SessionCheckScreen> {
|
class _SessionCheckScreenState extends State<SessionCheckScreen> {
|
||||||
final PAuthRepo _authRepo = PAuthRepo();
|
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
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
"relation": ["delegate_permission/common.handle_all_urls"],
|
"relation": ["delegate_permission/common.handle_all_urls"],
|
||||||
"target": {
|
"target": {
|
||||||
"namespace": "android_app",
|
"namespace": "android_app",
|
||||||
"package_name": "ae.gov.fcsc.frontend",
|
"package_name": "ae.gov.fcsc.stats",
|
||||||
"sha256_cert_fingerprints": [
|
"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"
|
"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"
|
||||||
]
|
]
|
||||||
|
|||||||
22
pubspec.lock
22
pubspec.lock
@ -1072,26 +1072,26 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.9"
|
version: "11.0.1"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.9"
|
version: "3.0.10"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.2"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1603,10 +1603,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
|
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.4"
|
version: "0.7.6"
|
||||||
the_validator:
|
the_validator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1747,10 +1747,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.2.0"
|
||||||
video_player:
|
video_player:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1904,5 +1904,5 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.1.3"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.7.0 <4.0.0"
|
dart: ">=3.8.0-0 <4.0.0"
|
||||||
flutter: ">=3.27.0"
|
flutter: ">=3.27.0"
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
name: uae_stat
|
name: uae_stat
|
||||||
description: "View statistics about the UAE from the Federal Center for Statistics and Competitiveness."
|
description: "View statistics about the UAE from the Federal Center for Statistics and Competitiveness."
|
||||||
publish_to: "none"
|
publish_to: "none"
|
||||||
#version: 1.0.62+63
|
#version: 1.0.65+66
|
||||||
version: 1.0.8+9
|
version: 1.0.12+13
|
||||||
|
#version: 1.0.5+5
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.2.3 <4.0.0"
|
sdk: ">=3.2.3 <4.0.0"
|
||||||
@ -268,4 +269,4 @@ flutter:
|
|||||||
weight: 900
|
weight: 900
|
||||||
- asset: assets/fonts/Roboto/Roboto-BlackItalic.ttf
|
- asset: assets/fonts/Roboto/Roboto-BlackItalic.ttf
|
||||||
style: italic
|
style: italic
|
||||||
weight: 900
|
weight: 900
|
||||||
Loading…
Reference in New Issue
Block a user