diff --git a/.qwen/settings.json b/.qwen/settings.json index 5fdfaa1..1e1ec9f 100644 --- a/.qwen/settings.json +++ b/.qwen/settings.json @@ -1,8 +1,22 @@ { + "security": { + "auth": { + "selectedType": "openai" + } + }, + "env": { + "OPENAI_BASE_URL": "https://claude-local.wibudev.com/v1", + "OPENAI_API_KEY": "sk-T8mDcFAe83WWOQsHGx0JxvTmgBVdTQ2uFKzIRjZpwrh0H4Bg", + "OPENAI_MODEL": "claude-sonnet-4-6" + }, + "projectContext": { + "enabled": false + }, + "agent": { + "enabled": false + }, "permissions": { - "allow": [ - "Bash(git add *)" - ] + "allow": [] }, "$version": 3 } \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 8bf495e..81c8f20 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -100,8 +100,8 @@ packagingOptions { applicationId 'com.bip.hipmimobileapp' minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 5 - versionName "1.0.2" + versionCode 6 + versionName "1.0.3" buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\"" } diff --git a/app.config.js b/app.config.js index 9ae93d9..7e4ab0a 100644 --- a/app.config.js +++ b/app.config.js @@ -15,7 +15,7 @@ require("dotenv").config(); export default { name: "HIPMI Badung Connect", slug: "hipmi-mobile", - version: "1.0.2", + version: "1.0.3", orientation: "portrait", icon: "./assets/images/icon.png", scheme: "hipmimobile", @@ -34,7 +34,7 @@ export default { associatedDomains: [ "applinks:hipmi.muku.id", ], - buildNumber: "7", + buildNumber: "1", }, android: { @@ -45,7 +45,7 @@ export default { }, edgeToEdgeEnabled: true, package: "com.bip.hipmimobileapp", - versionCode: 5, + versionCode: 6, // softwareKeyboardLayoutMode: 'resize', // option: untuk mengatur keyboard pada room chst collaboration intentFilters: [ { diff --git a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj index baa851f..70a6b11 100644 --- a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj +++ b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 4E87CF87BA9AA4220368EDFB /* libPods-HIPMIBadungConnect.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D5A9741563BD72C2928D733 /* libPods-HIPMIBadungConnect.a */; }; BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + BD4249202F908FB400754DF5 /* MapLibre in Frameworks */ = {isa = PBXBuildFile; productRef = AD5A82CAC40A33915A65A771 /* MapLibre */; }; E5450BFC7FF940E5A98B96B1 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = D38C393141A147BB9A94B313 /* GoogleService-Info.plist */; }; F11748422D0307B40044C1D9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F11748412D0307B40044C1D9 /* AppDelegate.swift */; }; /* End PBXBuildFile section */ @@ -27,7 +28,7 @@ BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; CCC6C2285082EE43E9D124C0 /* Pods-HIPMIBadungConnect.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HIPMIBadungConnect.release.xcconfig"; path = "Target Support Files/Pods-HIPMIBadungConnect/Pods-HIPMIBadungConnect.release.xcconfig"; sourceTree = ""; }; D38C393141A147BB9A94B313 /* GoogleService-Info.plist */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "HIPMIBadungConnect/GoogleService-Info.plist"; sourceTree = ""; }; - D9D3941539EFB04898D28F06 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = HIPMIBadungConnect/PrivacyInfo.xcprivacy; sourceTree = ""; }; + D9D3941539EFB04898D28F06 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = HIPMIBadungConnect/PrivacyInfo.xcprivacy; sourceTree = ""; }; E88DBD185F2AA1CF7405FD5A /* Pods-HIPMIBadungConnect.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HIPMIBadungConnect.debug.xcconfig"; path = "Target Support Files/Pods-HIPMIBadungConnect/Pods-HIPMIBadungConnect.debug.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; F11748412D0307B40044C1D9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = HIPMIBadungConnect/AppDelegate.swift; sourceTree = ""; }; @@ -39,6 +40,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + BD4249202F908FB400754DF5 /* MapLibre in Frameworks */, 4E87CF87BA9AA4220368EDFB /* libPods-HIPMIBadungConnect.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -52,7 +54,6 @@ E88DBD185F2AA1CF7405FD5A /* Pods-HIPMIBadungConnect.debug.xcconfig */, CCC6C2285082EE43E9D124C0 /* Pods-HIPMIBadungConnect.release.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -157,6 +158,13 @@ B122FE573BBA4E8C86B8F1C3 /* Remove signature files (Xcode workaround) */, ADB72F0A1419463BA2155F49 /* Remove signature files (Xcode workaround) */, 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */, + 68B0527F16EB480D947616AD /* Remove signature files (Xcode workaround) */, + BCB3EABBACE541EA85BE7A9B /* Remove signature files (Xcode workaround) */, + D86DE8E103D142B99AA4AAF4 /* Remove signature files (Xcode workaround) */, + FB1CA54F65454B8285FD9DCE /* Remove signature files (Xcode workaround) */, + 4F2C21A68727480B982EA6AB /* Remove signature files (Xcode workaround) */, + E5C45B7060DD4A2CACEAC29D /* Remove signature files (Xcode workaround) */, + 43D4863905C74C5CA5DDCF43 /* Remove signature files (Xcode workaround) */, ); buildRules = ( ); @@ -259,6 +267,20 @@ 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; }; + 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; 3F53CC1C3B278545F11A1CAE /* [CP-User] [RNFB] Core Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -268,10 +290,26 @@ "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", ); name = "[CP-User] [RNFB] Core Configuration"; + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##########################################################################\n##########################################################################\n#\n# NOTE THAT IF YOU CHANGE THIS FILE YOU MUST RUN pod install AFTERWARDS\n#\n# This file is installed as an Xcode build script in the project file\n# by cocoapods, and you will not see your changes until you pod install\n#\n##########################################################################\n##########################################################################\n\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"note: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"note: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"note: -> RNFB build script started\"\necho \"note: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"note: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"note: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n if ! _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\"); then\n echo \"error: Failed to parse firebase.json, check for syntax errors.\"\n exit 1\n fi\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"error: python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_analytics_storage\n _ANALYTICS_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_analytics_storage\")\n if [[ $_ANALYTICS_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_storage\n _ANALYTICS_AD_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_storage\")\n if [[ $_ANALYTICS_AD_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_user_data\n _ANALYTICS_AD_USER_DATA=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_user_data\")\n if [[ $_ANALYTICS_AD_USER_DATA ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_USER_DATA\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"note: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"note: <- RNFB build script finished\"\n"; }; + 43D4863905C74C5CA5DDCF43 /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; 46ED08049A384B869D77364E /* Remove signature files (Xcode workaround) */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -300,6 +338,34 @@ shellPath = /bin/sh; shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; }; + 4F2C21A68727480B982EA6AB /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; + 68B0527F16EB480D947616AD /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -444,6 +510,20 @@ shellPath = /bin/sh; shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; }; + BCB3EABBACE541EA85BE7A9B /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; D15DF02DDCF369B4F14B238B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -466,6 +546,34 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HIPMIBadungConnect/Pods-HIPMIBadungConnect-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + D86DE8E103D142B99AA4AAF4 /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; + E5C45B7060DD4A2CACEAC29D /* Remove signature files (Xcode workaround) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Remove signature files (Xcode workaround)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; + }; F3F766D8527B15CE8E82F6F9 /* [Expo] Configure project */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -490,22 +598,19 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-HIPMIBadungConnect/expo-configure-project.sh\"\n"; }; - 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */ = { + FB1CA54F65454B8285FD9DCE /* Remove signature files (Xcode workaround) */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - runOnlyForDeploymentPostprocessing = 0; - name = "Remove signature files (Xcode workaround)"; inputPaths = ( ); + name = "Remove signature files (Xcode workaround)"; outputPaths = ( ); + runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = " - echo \"Remove signature files (Xcode workaround)\"; - rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\"; - "; + shellScript = "\n echo \"Remove signature files (Xcode workaround)\";\n rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";\n "; }; /* End PBXShellScriptBuildPhase section */ @@ -549,7 +654,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.hipmi-mobile"; - PRODUCT_NAME = "HIPMIBadungConnect"; + PRODUCT_NAME = HIPMIBadungConnect; SWIFT_OBJC_BRIDGING_HEADER = "HIPMIBadungConnect/HIPMIBadungConnect-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -566,6 +671,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = HIPMIBadungConnect/HIPMIBadungConnect.entitlements; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = BMY6GT6W3D; INFOPLIST_FILE = HIPMIBadungConnect/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( @@ -580,7 +686,7 @@ ); OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.hipmi-mobile"; - PRODUCT_NAME = "HIPMIBadungConnect"; + PRODUCT_NAME = HIPMIBadungConnect; SWIFT_OBJC_BRIDGING_HEADER = "HIPMIBadungConnect/HIPMIBadungConnect-Bridging-Header.h"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/ios/HIPMIBadungConnect/Info.plist b/ios/HIPMIBadungConnect/Info.plist index 0bded65..75ed68e 100644 --- a/ios/HIPMIBadungConnect/Info.plist +++ b/ios/HIPMIBadungConnect/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.0.2 + 1.0.3 CFBundleSignature ???? CFBundleURLTypes @@ -39,7 +39,7 @@ CFBundleVersion - 7 + 1 ITSAppUsesNonExemptEncryption LSMinimumSystemVersion diff --git a/screens/UserSeach/MainView_V2.tsx b/screens/UserSeach/MainView_V2.tsx index 4852cc5..50cfb9d 100644 --- a/screens/UserSeach/MainView_V2.tsx +++ b/screens/UserSeach/MainView_V2.tsx @@ -2,23 +2,23 @@ import { AvatarComp, ClickableCustom, Grid, - NewWrapper, + OS_Wrapper, StackCustom, TextCustom, - TextInputCustom, + TextInputCustom } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { ICON_SIZE_SMALL, + PADDING_INLINE, PAGINATION_DEFAULT_TAKE, } from "@/constants/constans-value"; import { createPaginationComponents } from "@/helpers/paginationHelpers"; import { usePagination } from "@/hooks/use-pagination"; import { apiAllUser } from "@/service/api-client/api-user"; import { Ionicons } from "@expo/vector-icons"; -import { router, useFocusEffect } from "expo-router"; -import _ from "lodash"; -import { useCallback, useRef, useState } from "react"; +import { router } from "expo-router"; +import { useRef, useState } from "react"; import { RefreshControl, View } from "react-native"; const PAGE_SIZE = PAGINATION_DEFAULT_TAKE; @@ -140,7 +140,8 @@ export default function UserSearchMainView_V2() { }); return ( - > http://192.168.1.112:3000/api/mobile/file` + `[ERROR] [AxiosError: Request failed with status code 500]` -- **Status:** ❌ Belum diperbaiki - akan diperbaiki besok -- **Note Penting:** Fitur Investment **belum sepenuhnya rampung** - masih ada issue upload file yang perlu diinvestigasi lebih lanjut. Kemungkinan masalah di server upload service atau environment development. Production saat ini masih aman. +- **Status:** ✅ Diperbaiki - (2026-04-17) --- @@ -366,9 +365,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 2: Voting Management - COMPLETED (2026-04-14) @@ -388,9 +387,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 3: Donation Management - COMPLETED (2026-04-15) @@ -416,9 +415,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 4: Forum Management - COMPLETED (2026-04-15) @@ -436,9 +435,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 8: App Information - COMPLETED (2026-04-15) @@ -463,9 +462,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ --- @@ -488,9 +487,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ⏳ Admin Phase 5: Collaboration Management - PENDING @@ -523,9 +522,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 7: Investment Admin - COMPLETED (2026-04-15) @@ -542,9 +541,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 8: App Information - COMPLETED (2026-04-15) @@ -569,9 +568,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 9: User Access - COMPLETED (2026-04-09) @@ -583,9 +582,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ ## ✅ Admin Phase 10: Dashboard & Maps - COMPLETED (2026-04-15) @@ -597,9 +596,9 @@ import { OS_Wrapper } from "@/components"; **Testing Status:** - ✅ TypeScript: No errors -- ⏳ Build: Pending -- ⏳ iOS Testing: Pending -- ⏳ Android Testing: Pending +- ✅ Build: Success +- ✅ iOS Testing: Complete ✅ +- ✅ Android Testing: Complete ✅ --- @@ -684,14 +683,14 @@ import { OS_Wrapper } from "@/components"; | Phase | Total Files | Migrated | Testing | Status | |-------|-------------|----------|---------|--------| | User Phase 1 (Job) | 9 | 9 | ✅ Complete | ✅ Complete | -| User Phase 2 (Profile + Others) | 10 | 10 | ⏳ Pending | ✅ Complete | -| User Phase 3 (Portfolio) | 6 | 6 | ⏳ Pending | ✅ Complete | -| User Phase 4 (Maps) | 2 | 2 | ⏳ Pending | ✅ Complete | -| User Phase 5 (Forum) | 17 | 17 | ⏳ Pending | ✅ Complete | -| User Phase 6 (Event) | 16 | 16 | ⏳ Pending | ✅ Complete | -| User Phase 7 (Voting) | 11 | 11 | ✅ No errors | ✅ Complete | -| User Phase 8 (Donation + Others) | 31 | 31 | ✅ No errors | ✅ Complete | -| User Phase 9 (Investment) | 24 | 24 | ✅ No errors | ✅ Complete | +| User Phase 2 (Profile + Others) | 10 | 10 | ✅ Complete | ✅ Complete | +| User Phase 3 (Portfolio) | 6 | 6 | ✅ Complete | ✅ Complete | +| User Phase 4 (Maps) | 2 | 2 | ✅ Complete | ✅ Complete | +| User Phase 5 (Forum) | 17 | 17 | ✅ Complete | ✅ Complete | +| User Phase 6 (Event) | 16 | 16 | ✅ Complete | ✅ Complete | +| User Phase 7 (Voting) | 11 | 11 | ✅ Complete | ✅ Complete | +| User Phase 8 (Donation + Others) | 31 | 31 | ✅ Complete | ✅ Complete | +| User Phase 9 (Investment) | 24 | 24 | ✅ Complete | ✅ Complete | | User Phase 10 (Collaboration) | ~3 | 0 | 0 | ⏳ Pending | | User Phase 11 (Others) | ~3 | 0 | 0 | ⏳ Pending | | **User Total** | **~132** | **126** | **10** | **~95% Complete** | @@ -699,16 +698,16 @@ import { OS_Wrapper } from "@/components"; ### Admin Phases: | Phase | Total Files | Migrated | Testing | Status | |-------|-------------|----------|---------|--------| -| Admin Phase 1 (Event) | 8 | 8 | ✅ No errors | ✅ Complete | -| Admin Phase 2 (Voting) | 6 | 6 | ✅ No errors | ✅ Complete | -| Admin Phase 3 (Donation) | 12 | 12 | ✅ No errors | ✅ Complete | -| Admin Phase 4 (Forum) | 6 | 6 | ✅ No errors | ✅ Complete | +| Admin Phase 1 (Event) | 8 | 8 | ✅ Complete | ✅ Complete | +| Admin Phase 2 (Voting) | 6 | 6 | ✅ Complete | ✅ Complete | +| Admin Phase 3 (Donation) | 12 | 12 | ✅ Complete | ✅ Complete | +| Admin Phase 4 (Forum) | 6 | 6 | ✅ Complete | ✅ Complete | | Admin Phase 5 (Collaboration) | ~8 | 0 | 0 | ⏳ Pending | -| Admin Phase 6 (Job) | 4 | 4 | ✅ No errors | ✅ Complete | -| Admin Phase 7 (Investment) | 3 | 3 | ✅ No errors | ✅ Complete | -| Admin Phase 8 (App Info) | 9 | 9 | ✅ No errors | ✅ Complete | -| Admin Phase 9 (User Access) | 2 | 2 | ✅ No errors | ✅ Complete | -| Admin Phase 10 (Dashboard & Maps) | 2 | 2 | ✅ No errors | ✅ Complete | +| Admin Phase 6 (Job) | 4 | 4 | ✅ Complete | ✅ Complete | +| Admin Phase 7 (Investment) | 3 | 3 | ✅ Complete | ✅ Complete | +| Admin Phase 8 (App Info) | 9 | 9 | ✅ Complete | ✅ Complete | +| Admin Phase 9 (User Access) | 2 | 2 | ✅ Complete | ✅ Complete | +| Admin Phase 10 (Dashboard & Maps) | 2 | 2 | ✅ Complete | ✅ Complete | | **Admin Total** | **~52** | **52** | **0** | **100% Complete** | ### Grand Total: @@ -730,7 +729,7 @@ Jika ada issue yang tidak bisa di-fix dalam 1 jam: **Co-authored-by**: Qwen-Coder **Created**: 2026-04-06 -**Last Updated**: 2026-04-15 -**Status**: User Phase 1-9 Complete ✅ | Admin Phase 1-4, 6-10 Complete ✅ (178 files migrated) -**Current**: Admin Phase 1-10 Complete ✅ (kecuali Phase 5 Collaboration) +**Last Updated**: 2026-04-17 +**Status**: User Phase 1-9 Complete ✅ | Admin Phase 1-4, 6-10 Complete ✅ (178 files migrated) | Semua testing iOS & Android Complete ✅ +**Current**: Investment upload issue RESOLVED ✅ | Full device testing selesai ✅ **Next**: Admin Phase 5 (Collaboration, ~8 files) + User Phase 10-11 (Collaboration, ~14 files) - PENDING