feat: Enhance TTS player functionality and UI

- Added resume functionality to TTS player when paused.
- Display voice name or language in TTS player UI.
- Improved error handling in reader provider with debug messages.
- Updated TTS service to configure Vietnamese voice and handle platform-specific audio settings.
- Removed wakelock dependency and related code.
- Fixed search screen error handling.
- Updated settings screen to navigate to home after sign out.
- Improved splash screen with timer management.
- Enhanced main app error handling with logging.
- Removed unused package_info_plus and wakelock_plus dependencies.
- Added environment variable support for mobile runtime.
- Integrated Google Sign-In configuration for Android.
- Created logging observer for Riverpod providers.
- Added scripts for environment setup and Google Sign-In validation.
This commit is contained in:
2026-03-30 11:38:04 +07:00
parent 8da9c4152c
commit 1afff18f4d
40 changed files with 1735 additions and 312 deletions
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
ENV_FILE="$ROOT_DIR/.env.mobile"
if [[ ! -f "$ENV_FILE" ]]; then
echo "Missing $ENV_FILE"
echo "Create it from .env.mobile.example"
exit 1
fi
get_env() {
local key="$1"
awk -F'=' -v k="$key" '$1==k{print substr($0, index($0,$2)); exit}' "$ENV_FILE" | sed 's/^"//; s/"$//'
}
BASE_URL="$(get_env BASE_URL)"
GOOGLE_SERVER_CLIENT_ID="$(get_env GOOGLE_SERVER_CLIENT_ID)"
GOOGLE_CLIENT_ID="$(get_env GOOGLE_CLIENT_ID)"
if [[ -z "$BASE_URL" ]]; then
echo "BASE_URL is required in $ENV_FILE"
exit 1
fi
if [[ -z "$GOOGLE_SERVER_CLIENT_ID" ]]; then
echo "GOOGLE_SERVER_CLIENT_ID is required in $ENV_FILE"
exit 1
fi
cd "$ROOT_DIR"
if [[ -n "$GOOGLE_CLIENT_ID" ]]; then
flutter run \
--dart-define=BASE_URL="$BASE_URL" \
--dart-define=GOOGLE_SERVER_CLIENT_ID="$GOOGLE_SERVER_CLIENT_ID" \
--dart-define=GOOGLE_CLIENT_ID="$GOOGLE_CLIENT_ID" \
"$@"
else
flutter run \
--dart-define=BASE_URL="$BASE_URL" \
--dart-define=GOOGLE_SERVER_CLIENT_ID="$GOOGLE_SERVER_CLIENT_ID" \
"$@"
fi
+48
View File
@@ -0,0 +1,48 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
APP_GRADLE="$ROOT_DIR/android/app/build.gradle.kts"
GOOGLE_SERVICES="$ROOT_DIR/android/app/google-services.json"
DEBUG_KEYSTORE="$HOME/.android/debug.keystore"
echo "== Google Sign-In Doctor (Android) =="
echo "Project: $ROOT_DIR"
if [[ -f "$APP_GRADLE" ]]; then
PKG=$(grep -E 'applicationId\s*=\s*"' "$APP_GRADLE" | head -n1 | sed -E 's/.*"([^"]+)".*/\1/')
echo "Package name: ${PKG:-<not-found>}"
else
echo "ERROR: Missing $APP_GRADLE"
fi
if [[ -f "$GOOGLE_SERVICES" ]]; then
echo "google-services.json: FOUND ($GOOGLE_SERVICES)"
if grep -q '"project_info"' "$GOOGLE_SERVICES"; then
echo "google-services.json format: OK"
else
echo "google-services.json format: INVALID (this does not look like Firebase Android config)"
fi
else
echo "google-services.json: MISSING ($GOOGLE_SERVICES)"
fi
CLIENT_SECRET_FILE=$(ls "$ROOT_DIR"/android/app/client_secret_*.json 2>/dev/null | head -n1 || true)
if [[ -n "$CLIENT_SECRET_FILE" ]]; then
echo "Found OAuth client secret file: $(basename "$CLIENT_SECRET_FILE")"
echo "NOTE: This file is NOT a replacement for google-services.json on Android."
fi
if [[ -f "$DEBUG_KEYSTORE" ]]; then
echo "\nDebug keystore fingerprints:"
keytool -list -v -alias androiddebugkey -keystore "$DEBUG_KEYSTORE" -storepass android -keypass android \
| grep -E 'SHA1:|SHA256:' || true
else
echo "\nDebug keystore: MISSING ($DEBUG_KEYSTORE)"
fi
echo "\nChecklist for ApiException: 10"
echo "1) Create Android app in Firebase with exact package name above."
echo "2) Add BOTH SHA1 and SHA256 shown above to Firebase Android app settings."
echo "3) Download new google-services.json and place it at android/app/google-services.json."
echo "4) Run app again (full restart, not hot reload)."