# YPChat Android

Native Android-App fuer den bestehenden SingleChat/YPChat-Server.

## Stack

- Kotlin
- Jetpack Compose
- Retrofit/OkHttp fuer REST
- Socket.IO Android Client fuer den Chat
- persistente OkHttp `CookieJar`, damit REST und Socket dieselbe `connect.sid`-Session nutzen

## Projekt Oeffnen

Den Ordner `android/` in Android Studio oeffnen. Das Projekt ist auf Android Gradle Plugin `8.13.2`, Gradle `8.13`, JDK 17 und `compileSdk = 36` ausgelegt.

Falls Android Studio keinen Gradle Wrapper erzeugt, kann er in diesem Ordner mit einer lokalen Gradle-Installation nachgezogen werden:

```powershell
gradle wrapper --gradle-version 8.13
```

Danach:

```powershell
.\gradlew.bat :app:assembleDebug
```

## Backend-URLs

Debug und Release verwenden standardmaessig:

```text
https://www.ypchat.net
```

Fuer lokale Tests kann die URL in `android/local.properties` ueberschrieben werden:

```properties
ypchat.baseUrl=http://10.0.2.2:3300
```

`10.0.2.2` zeigt im Android Emulator auf den lokalen Rechner. Auf einem echten Geraet muss stattdessen die LAN-IP des Rechners oder ein Dev-Tunnel verwendet werden, z.B.:

```properties
ypchat.baseUrl=http://192.168.178.42:3300
```

## Implementierter Durchstich

- `GET /api/session`
- Socket.IO Connect mit WebSocket zuerst und Polling-Fallback
- `setSessionId`
- `login`
- `userList`
- `requestConversation`
- Textnachrichten ueber `message`
- `requestOpenConversations`
- `requestHistory`
- `userSearch`
- `blockUser`
- `POST /api/logout`
- Laenderliste im Login ueber `/api/countries`
- Upload-Client fuer `/api/upload-image` im Repository vorbereitet

## Noch Offen

- Android Photo Picker an `uploadImage()` anschliessen
- lokale Logout-Markierung analog Web-Frontend speichern
- Reconnect-Feinschliff nach App-Background testen
- Play-Store-Texte, Datenschutz, Impressum und App-Icons finalisieren
