# daily-notification-test

This template should help get you started developing with Vue 3 in Vite.

## Recommended IDE Setup

[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).

## Recommended Browser Setup

- Chromium-based browsers (Chrome, Edge, Brave, etc.):
  - [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) 
  - [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters)
- Firefox:
  - [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/)
  - [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/)

## Type Support for `.vue` Imports in TS

TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.

## Customize configuration

See [Vite Configuration Reference](https://vite.dev/config/).

## Project Setup

```sh
npm install
```

**Note**: The `postinstall` script automatically fixes Capacitor configuration files after installation.

## Building for Android and iOS

### Quick Build (Recommended)

Use the unified build script for both platforms:

```bash
# Build and run both platforms on emulator/simulator
./scripts/build.sh --run

# Build both platforms (no run)
./scripts/build.sh

# Build Android only
./scripts/build.sh --android

# Build iOS only
./scripts/build.sh --ios

# Build and run Android on emulator
./scripts/build.sh --run-android

# Build and run iOS on simulator
./scripts/build.sh --run-ios
```

**See**: `docs/BUILD_QUICK_REFERENCE.md` for detailed build instructions.

### Manual Build Steps

#### Capacitor Sync

**Important**: Use the wrapper script instead of `npx cap sync` directly to automatically fix plugin paths:

```sh
# Sync both platforms
npm run cap:sync

# Sync Android only
npm run cap:sync:android

# Sync iOS only
npm run cap:sync:ios
```

This will:
1. Run `npx cap sync` (or platform-specific sync)
2. Automatically fix `capacitor.settings.gradle` (corrects plugin path from `android/` to `android/plugin/`)
3. Ensure `capacitor.plugins.json` has the correct plugin registration

If you run `npx cap sync` directly, you can manually fix afterward:
```sh
node scripts/fix-capacitor-plugins.js
```

### Compile and Hot-Reload for Development

```sh
npm run dev
```

### Type-Check, Compile and Minify for Production

```sh
npm run build
```

### Lint with [ESLint](https://eslint.org/)

```sh
npm run lint
```

## ADB Commands for Android Testing

**Package Name**: `org.timesafari.dailynotification.test`

### Check Device Connection

```sh
adb devices
```

### Install App

Install the debug APK to a connected device or emulator:

```sh
# From project root
cd android
./gradlew installDebug

# Or from test-apps/daily-notification-test directory
cd android && ./gradlew installDebug
```

### List Installed Packages

Check if the app is installed:

```sh
# List all packages (filter for this app)
adb shell pm list packages | grep timesafari

# List only this app's package
adb shell pm list packages org.timesafari.dailynotification.test
```

### Launch/Raise the App

Launch the app or bring it to foreground:

```sh
# Launch the main activity
adb shell am start -n org.timesafari.dailynotification.test/.MainActivity

# Launch with explicit intent
adb shell am start -a android.intent.action.MAIN -n org.timesafari.dailynotification.test/.MainActivity
```

### Uninstall App

Remove the app from the device:

```sh
# Uninstall by package name
adb uninstall org.timesafari.dailynotification.test

# Force uninstall (if regular uninstall fails)
adb shell pm uninstall -k --user 0 org.timesafari.dailynotification.test
```

### Additional Useful ADB Commands

**View App Logs**:
```sh
# Filter logs for this app
adb logcat | grep -E "timesafari|DailyNotification|DNP"

# Clear logs before testing
adb logcat -c
```

**Check App Info**:
```sh
# Get app version and info
adb shell dumpsys package org.timesafari.dailynotification.test | grep -A 5 "versionName\|versionCode"
```

**Force Stop App**:
```sh
# Force stop the app (useful for testing recovery scenarios)
adb shell am force-stop org.timesafari.dailynotification.test
```

**Clear App Data**:
```sh
# Clear app data (resets to fresh install state)
adb shell pm clear org.timesafari.dailynotification.test
```
