diff --git a/mobile-app/DEVELOPMENT.md b/mobile-app/DEVELOPMENT.md
index 49ce48b9..19761c97 100644
--- a/mobile-app/DEVELOPMENT.md
+++ b/mobile-app/DEVELOPMENT.md
@@ -63,7 +63,7 @@ Testest du mit der **LAN-IP deines PCs** (echtes Gerät), musst du diese IP dort
2. **Alte Installation / Build-Cache:** Emulator-App deinstallieren, Clean, neu installieren:
```bash
cd mobile-app
- adb uninstall de.tt_tagebuch.app
+ adb uninstall de.tsschulz.tt_tagebuch
./gradlew :composeApp:clean :composeApp:installDebug --no-configuration-cache
```
Oder das Skript: `./scripts/install-debug-emulator.sh`
diff --git a/mobile-app/TODO.md b/mobile-app/TODO.md
index 3177b0a2..53a5d062 100644
--- a/mobile-app/TODO.md
+++ b/mobile-app/TODO.md
@@ -165,49 +165,19 @@ Web: `DiaryView.vue` (sehr groß). API-Cluster (Auszug – in Web nach `apiClien
- [x] **Ausstehende Freigaben** – `ClubApprovalsApi`, `PendingApprovalsManager`, Screen unter „Mehr“ → Club-Verwaltung (`ClubAdminScreens.kt`)
- [x] **Team-Management (Mannschaften + Editor)** – `TeamManagementScreen` + `TeamEditorScreen`: Saison, Suche, CRUD Mannschaften; Tabs Stammdaten, Spielerstatistik (Liga), **Aufstellung/Meldung**, Dokumente, Scheduler-Jobs, MyTT (`ClubTeamsApi`, `MatchesApi`, `TeamDocumentsApi`, `ApiLogsApi`, `MyTischtennisApi`, Rechte `canReadTeams`/`canWriteTeams`)
-- [ ] **Mannschafts-Planung (Android)** – siehe Unterabschnitt **Phase 8a** (Web hat das Planungsboard bereits; mobil bewusst **offen**)
+- [x] **Mannschafts-Planung (Android)** – `TeamManagementScreen` **Mannschaften | Planung**; `TeamPlanningScreen` / `TeamPlanningLogic`; `MembersApi` Play-Interest (`TeamEditorModels`) – Details **Phase 8a**
- [x] **Berechtigungen** – erweiterte `PermissionsApi`, `PermissionsAdminManager`, UI Rolle/Status/Anpassen mit `RolePermissionMatrix` (`ClubAdminScreens.kt`)
- [x] **Logs** – `ApiLogsApi`, `ApiLogsManager`, Liste + Pagination + Detail (`ClubAdminScreens.kt`); `AppDependencies` / Logout / 401 räumen Manager auf
-### Phase 8a – Mannschafts-Planung auf Android (Backlog / Plan)
+### Phase 8a – Mannschafts-Planung auf Android (umgesetzt, Stand 2026-05)
-**Ziel:** Gleiche **fachliche** Funktion wie Web **Team-Verwaltung → Planung**: Pool „möchte spielen“, mehrere Mannschaften der Saison parallel, Spieler nur **eligibility-konform** zuordnen, lokale Stammdaten (Name, geplante Liga, AK/GK) pro Team, **Meldung (Lineup)** je Team und gewählter **Halbserie** lesen/schreiben, optional **Debounced Autosave** wie Web.
+- [x] `GET/POST` **`/api/clubmembers/play-interest/:clubId`** – `MembersApi` + DTOs `MemberPlayInterestRowDto` / `MemberPlayInterestSetBody`
+- [x] **UI:** `TeamPlanningScreen.kt` – Halbserie, Pool, Interesse markieren, Mannschaft hinzufügen, pro Team Stammdaten + Meldung, QTTR-Abstand, „Im Editor öffnen“
+- [x] **Einstieg:** `TeamManagementScreen` – Segment **Mannschaften | Planung**
+- [x] **Logik:** `TeamPlanningLogic.kt` – Normalisierung Zuordnungen, Eligibility über `TeamEditorLineupLogic`, Default-Halbserie
+- [ ] **Optional später:** Drag-and-Drop statt Menüs; Debounced Autosave wie Web; dedizierte Tests Serialisierung
-**Web-Referenz (1:1 zum Durchlesen der Logik):**
-
-| Bereich | Datei / Abschnitt |
-|--------|-------------------|
-| Umschalter „Mannschaften“ / „Planung“, Board einbinden | `frontend/src/views/TeamManagementView.vue` (`activeMainSection`, `TeamPlanningBoard`) |
-| UI Pool, Teams, Suche, Interesse markieren | `frontend/src/components/team/TeamPlanningBoard.vue` |
-| Lanes / Drag-Drop | `frontend/src/components/team/TeamPlanningLane.vue` |
-
-**Backend-APIs (aus Web `apiClient`; im `shared` ergänzen, falls noch fehlend):**
-
-- [ ] `GET /api/clubmembers/play-interest/:clubId` mit Query `seasonId`, `lineupHalf` – geladene **Interessen** für Pool (`loadPlanningInterestedMemberIds`)
-- [ ] `POST /api/clubmembers/play-interest/:clubId` – Body `memberId`, `seasonId`, `lineupHalf`, `interested` – Mitglied als „interessiert“ markieren (`onPlanningMarkMemberInterested`)
-- [x] `GET /api/clubmembers/get/:clubId/:showAll` – bereits `MembersApi.listMembers`
-- [x] `GET /api/club-teams/...` Mannschaften Saison, `GET …/lineup?half=`, `PUT …/lineup` – `ClubTeamsApi` (Planung lädt Lineups **aller** Teams der Saison parallel wie Web `loadPlanningAssignments`)
-- [x] `PUT /api/club-teams/:id` – Stammdaten Planungsteam (`updateClubTeam`)
-- [x] `POST /api/club-teams/club/:clubId` – neue Planungs-Mannschaft (`createClubTeam` o. ä.)
-- [x] `DELETE /api/club-teams/:id` – Planungs-Mannschaft löschen
-
-**Shared / Domäne:**
-
-- [ ] DTOs für Play-Interest (Response-Zeilen: `memberId`, `interested`, …) + `MembersApi` Erweiterung
-- [ ] Optional: **PlanningState**-Use-Case (normalisierte Zuordnungen `teamId`/`memberId`/`position`, Halbserie, Recompute bei AK/GK-Wechsel) – Web: `normalizePlanningAssignments`, `removeAllIneligiblePlanningAssignments`, `isEligibleForPlanningTeam` (analog `TeamEditorLineupLogic.isEligibleForTeam` + Team-spezifische AK/GK aus `planningLocalTeams`)
-
-**Android UI (Vorschlag für Umsetzungsschritte):**
-
-1. [ ] **Einstieg:** In `TeamManagementScreen` (oder `AppRoot`) zweiter Modus **„Planung“** neben **„Mannschaften“** (wie Web-Workspace-Buttons), gleiche Saison-Auswahl wie Liste
-2. [ ] **Screen** `TeamPlanningScreen.kt` (oder modular `TeamPlanningPool.kt` / `TeamPlanningTeamCard.kt`): Pool + Liste der Teams; kein 1:1-Spiegel der Web-Grid-Optik nötig, aber **alle Aktionen** abdeckbar
-3. [ ] **Drag-and-Drop:** Entweder Compose **Drag-and-Drop** (Plattform-API) oder **Fallback** ohne DnD: „Mitglied auswählen → Ziel-Mannschaft“ / „Aus Mannschaft entfernen“ / Reihenfolge **↑↓** in der Lane (wie Aufstellungs-Tab)
-4. [ ] **Halbserie** (VR/RR) gemeinsam mit Web-Parameter `lineupHalf` an Play-Interest und Lineup-Requests
-5. [ ] **„In Workspace öffnen“** / Team-Editor: Web `convertPlanningTeamToRegular` prüfen – ggf. nur Navigation zum bestehenden `TeamEditorScreen` statt Konvertierungs-API
-6. [ ] **Autosave:** Web nutzt Debounce (`schedulePlanningTeamAutosave`) – mobil entweder gleichziehen oder explizit **„Speichern“** pro Team + Konflikt-Hinweis (Produktentscheidung)
-7. [ ] **i18n:** Keys aus `teamManagement.planning*` / `markAsInterested` usw. in `MobileStrings` oder Fallback-Kette wie andere Admin-Screens
-8. [ ] **Tests:** Serialisierung Play-Interest; optional Snapshot der Normalisierung `planningAssignments`
-
-**Hinweis im Code:** Solange 8a offen ist, kann im Tab Aufstellung ein kurzer Verweis auf die **zukünftige** in-App-Planung stehen (nach Umsetzung Text anpassen oder entfernen).
+**Hinweis im Code:** Tab Aufstellung (`TeamEditorScreen`) verweist auf den Reiter **Planung** in derselben Team-Verwaltung.
---
diff --git a/mobile-app/composeApp/build.gradle.kts b/mobile-app/composeApp/build.gradle.kts
index b5eb7b4c..93dd2aba 100644
--- a/mobile-app/composeApp/build.gradle.kts
+++ b/mobile-app/composeApp/build.gradle.kts
@@ -51,11 +51,11 @@ kotlin {
}
android {
- namespace = "de.tt_tagebuch.app"
+ namespace = "de.tsschulz.tt_tagebuch"
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
- applicationId = "de.tt_tagebuch.app"
+ applicationId = "de.tsschulz.tt_tagebuch"
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 1
diff --git a/mobile-app/composeApp/release/composeApp-release.aab b/mobile-app/composeApp/release/composeApp-release.aab
new file mode 100644
index 00000000..9c53f8a3
Binary files /dev/null and b/mobile-app/composeApp/release/composeApp-release.aab differ
diff --git a/mobile-app/composeApp/src/androidMain/AndroidManifest.xml b/mobile-app/composeApp/src/androidMain/AndroidManifest.xml
index 9ae3a259..ba6a58d1 100644
--- a/mobile-app/composeApp/src/androidMain/AndroidManifest.xml
+++ b/mobile-app/composeApp/src/androidMain/AndroidManifest.xml
@@ -4,16 +4,16 @@
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/AppDependencies.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/AppDependencies.kt
similarity index 55%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/AppDependencies.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/AppDependencies.kt
index aa298831..5b653790 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/AppDependencies.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/AppDependencies.kt
@@ -1,59 +1,60 @@
-package de.tt_tagebuch.app
+package de.tsschulz.tt_tagebuch.app
import android.content.Context
-import de.tt_tagebuch.shared.api.BillingApi
-import de.tt_tagebuch.shared.api.CalendarHolidayApi
-import de.tt_tagebuch.shared.api.AccidentApi
-import de.tt_tagebuch.shared.api.ApiLogsApi
-import de.tt_tagebuch.shared.api.ClubApprovalsApi
-import de.tt_tagebuch.shared.api.ClickTtAccountApi
-import de.tt_tagebuch.shared.api.ApiConfig
-import de.tt_tagebuch.shared.api.AuthApi
-import de.tt_tagebuch.shared.api.PublicAuthApi
-import de.tt_tagebuch.shared.api.ClubTeamsApi
-import de.tt_tagebuch.shared.api.ClubsApi
-import de.tt_tagebuch.shared.api.DiaryApi
-import de.tt_tagebuch.shared.api.DiaryMemberActivitiesApi
-import de.tt_tagebuch.shared.api.DiaryMemberApi
-import de.tt_tagebuch.shared.api.GroupApi
-import de.tt_tagebuch.shared.api.ParticipantsApi
-import de.tt_tagebuch.shared.api.PredefinedActivitiesApi
-import de.tt_tagebuch.shared.api.MatchesApi
-import de.tt_tagebuch.shared.api.MemberActivitiesApi
-import de.tt_tagebuch.shared.api.MemberGroupPhotosApi
-import de.tt_tagebuch.shared.api.MemberTransferConfigApi
-import de.tt_tagebuch.shared.api.MemberOrdersApi
-import de.tt_tagebuch.shared.api.TrainingCancellationApi
-import de.tt_tagebuch.shared.api.MembersApi
-import de.tt_tagebuch.shared.api.MyTischtennisApi
-import de.tt_tagebuch.shared.api.OfficialTournamentsApi
-import de.tt_tagebuch.shared.api.PermissionsApi
-import de.tt_tagebuch.shared.api.SeasonsApi
-import de.tt_tagebuch.shared.api.SessionApi
-import de.tt_tagebuch.shared.api.TeamDocumentsApi
-import de.tt_tagebuch.shared.api.TrainingGroupsApi
-import de.tt_tagebuch.shared.api.TrainingStatsApi
-import de.tt_tagebuch.shared.api.TrainingTimesApi
-import de.tt_tagebuch.shared.api.TournamentsApi
-import de.tt_tagebuch.shared.api.http.AndroidHttpClientEngineFactory
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.http.PublicHttpClient
-import de.tt_tagebuch.shared.state.AndroidClubStorage
-import de.tt_tagebuch.shared.state.AndroidLanguageStorage
-import de.tt_tagebuch.shared.state.AndroidTokenStorage
-import de.tt_tagebuch.shared.state.ApiLogsManager
-import de.tt_tagebuch.shared.state.AuthManager
-import de.tt_tagebuch.shared.state.ClubInternalTournamentsManager
-import de.tt_tagebuch.shared.state.ClubManager
-import de.tt_tagebuch.shared.state.DiaryManager
-import de.tt_tagebuch.shared.state.LanguageManager
-import de.tt_tagebuch.shared.state.MembersManager
-import de.tt_tagebuch.shared.state.MutableTokenProvider
-import de.tt_tagebuch.shared.state.OfficialTournamentsReadManager
-import de.tt_tagebuch.shared.state.PendingApprovalsManager
-import de.tt_tagebuch.shared.state.PermissionsAdminManager
-import de.tt_tagebuch.shared.state.ScheduleManager
-import de.tt_tagebuch.shared.state.TrainingStatsManager
+import de.tsschulz.tt_tagebuch.BuildConfig
+import de.tsschulz.tt_tagebuch.shared.api.BillingApi
+import de.tsschulz.tt_tagebuch.shared.api.CalendarHolidayApi
+import de.tsschulz.tt_tagebuch.shared.api.AccidentApi
+import de.tsschulz.tt_tagebuch.shared.api.ApiLogsApi
+import de.tsschulz.tt_tagebuch.shared.api.ClubApprovalsApi
+import de.tsschulz.tt_tagebuch.shared.api.ClickTtAccountApi
+import de.tsschulz.tt_tagebuch.shared.api.ApiConfig
+import de.tsschulz.tt_tagebuch.shared.api.AuthApi
+import de.tsschulz.tt_tagebuch.shared.api.PublicAuthApi
+import de.tsschulz.tt_tagebuch.shared.api.ClubTeamsApi
+import de.tsschulz.tt_tagebuch.shared.api.ClubsApi
+import de.tsschulz.tt_tagebuch.shared.api.DiaryApi
+import de.tsschulz.tt_tagebuch.shared.api.DiaryMemberActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.DiaryMemberApi
+import de.tsschulz.tt_tagebuch.shared.api.GroupApi
+import de.tsschulz.tt_tagebuch.shared.api.ParticipantsApi
+import de.tsschulz.tt_tagebuch.shared.api.PredefinedActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.MatchesApi
+import de.tsschulz.tt_tagebuch.shared.api.MemberActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.MemberGroupPhotosApi
+import de.tsschulz.tt_tagebuch.shared.api.MemberTransferConfigApi
+import de.tsschulz.tt_tagebuch.shared.api.MemberOrdersApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingCancellationApi
+import de.tsschulz.tt_tagebuch.shared.api.MembersApi
+import de.tsschulz.tt_tagebuch.shared.api.MyTischtennisApi
+import de.tsschulz.tt_tagebuch.shared.api.OfficialTournamentsApi
+import de.tsschulz.tt_tagebuch.shared.api.PermissionsApi
+import de.tsschulz.tt_tagebuch.shared.api.SeasonsApi
+import de.tsschulz.tt_tagebuch.shared.api.SessionApi
+import de.tsschulz.tt_tagebuch.shared.api.TeamDocumentsApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingGroupsApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingStatsApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingTimesApi
+import de.tsschulz.tt_tagebuch.shared.api.TournamentsApi
+import de.tsschulz.tt_tagebuch.shared.api.http.AndroidHttpClientEngineFactory
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.http.PublicHttpClient
+import de.tsschulz.tt_tagebuch.shared.state.AndroidClubStorage
+import de.tsschulz.tt_tagebuch.shared.state.AndroidLanguageStorage
+import de.tsschulz.tt_tagebuch.shared.state.AndroidTokenStorage
+import de.tsschulz.tt_tagebuch.shared.state.ApiLogsManager
+import de.tsschulz.tt_tagebuch.shared.state.AuthManager
+import de.tsschulz.tt_tagebuch.shared.state.ClubInternalTournamentsManager
+import de.tsschulz.tt_tagebuch.shared.state.ClubManager
+import de.tsschulz.tt_tagebuch.shared.state.DiaryManager
+import de.tsschulz.tt_tagebuch.shared.state.LanguageManager
+import de.tsschulz.tt_tagebuch.shared.state.MembersManager
+import de.tsschulz.tt_tagebuch.shared.state.MutableTokenProvider
+import de.tsschulz.tt_tagebuch.shared.state.OfficialTournamentsReadManager
+import de.tsschulz.tt_tagebuch.shared.state.PendingApprovalsManager
+import de.tsschulz.tt_tagebuch.shared.state.PermissionsAdminManager
+import de.tsschulz.tt_tagebuch.shared.state.ScheduleManager
+import de.tsschulz.tt_tagebuch.shared.state.TrainingStatsManager
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/MainActivity.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/MainActivity.kt
similarity index 89%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/MainActivity.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/MainActivity.kt
index d441d54e..a898623c 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/MainActivity.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/MainActivity.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app
+package de.tsschulz.tt_tagebuch.app
import android.os.Bundle
import androidx.activity.ComponentActivity
@@ -9,8 +9,8 @@ import androidx.compose.material.Surface
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
-import de.tt_tagebuch.app.ui.AppRoot
-import de.tt_tagebuch.app.ui.TtTagebuchTheme
+import de.tsschulz.tt_tagebuch.app.ui.AppRoot
+import de.tsschulz.tt_tagebuch.app.ui.TtTagebuchTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/MainApplication.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/MainApplication.kt
similarity index 66%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/MainApplication.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/MainApplication.kt
index f6eacc37..e7e252ec 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/MainApplication.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/MainApplication.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app
+package de.tsschulz.tt_tagebuch.app
import android.app.Application
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/calendar/CalendarAggregator.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/calendar/CalendarAggregator.kt
similarity index 95%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/calendar/CalendarAggregator.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/calendar/CalendarAggregator.kt
index b0f89ff4..aae9d10d 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/calendar/CalendarAggregator.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/calendar/CalendarAggregator.kt
@@ -1,14 +1,14 @@
-package de.tt_tagebuch.app.calendar
+package de.tsschulz.tt_tagebuch.app.calendar
-import de.tt_tagebuch.shared.api.models.CalendarHolidayRowDto
-import de.tt_tagebuch.shared.api.models.ClubCalendarHolidaysEnvelope
-import de.tt_tagebuch.shared.api.models.DiaryDate
-import de.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
-import de.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchDto
-import de.tt_tagebuch.shared.api.models.TrainingCancellationDto
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.TrainingTimeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.CalendarHolidayRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubCalendarHolidaysEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingCancellationDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingTimeDto
import java.time.DayOfWeek
import java.time.LocalDate
import java.time.LocalTime
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/DiaryPdfExporter.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/DiaryPdfExporter.kt
similarity index 93%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/DiaryPdfExporter.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/DiaryPdfExporter.kt
index e60a7631..3f2fe1cd 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/DiaryPdfExporter.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/DiaryPdfExporter.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.pdf
+package de.tsschulz.tt_tagebuch.app.pdf
import android.graphics.Canvas
import android.graphics.Color
@@ -8,12 +8,12 @@ import android.graphics.pdf.PdfDocument
import android.text.Layout
import android.text.StaticLayout
import android.text.TextPaint
-import de.tt_tagebuch.shared.api.models.DiaryDateActivityItem
-import de.tt_tagebuch.shared.api.models.DiaryFreeformActivity
-import de.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.displayTitle
-import de.tt_tagebuch.shared.api.models.isPresentParticipant
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDateActivityItem
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryFreeformActivity
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.displayTitle
+import de.tsschulz.tt_tagebuch.shared.api.models.isPresentParticipant
import java.io.File
import java.io.FileOutputStream
import java.util.Locale
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/DiaryPdfShare.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/DiaryPdfShare.kt
similarity index 90%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/DiaryPdfShare.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/DiaryPdfShare.kt
index b508f0ca..4f0b7694 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/DiaryPdfShare.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/DiaryPdfShare.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.app.pdf
+package de.tsschulz.tt_tagebuch.app.pdf
import android.content.Context
import android.content.Intent
import androidx.core.content.FileProvider
-import de.tt_tagebuch.app.BuildConfig
+import de.tsschulz.tt_tagebuch.BuildConfig
import java.io.File
fun shareFileWithMime(context: Context, file: File, mimeType: String, chooserTitle: String) {
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/MembersPhoneListPdf.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/MembersPhoneListPdf.kt
similarity index 96%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/MembersPhoneListPdf.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/MembersPhoneListPdf.kt
index 949e3f5c..eaebc6ed 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/pdf/MembersPhoneListPdf.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/pdf/MembersPhoneListPdf.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.pdf
+package de.tsschulz.tt_tagebuch.app.pdf
import android.graphics.Canvas
import android.graphics.Color
@@ -8,8 +8,8 @@ import android.graphics.pdf.PdfDocument
import android.text.Layout
import android.text.StaticLayout
import android.text.TextPaint
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.MemberContactDto
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberContactDto
import java.io.File
import java.io.FileOutputStream
import java.time.LocalDate
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/stats/TrainingStatsDerived.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/stats/TrainingStatsDerived.kt
similarity index 96%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/stats/TrainingStatsDerived.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/stats/TrainingStatsDerived.kt
index c6e26db1..115919d7 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/stats/TrainingStatsDerived.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/stats/TrainingStatsDerived.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.app.stats
+package de.tsschulz.tt_tagebuch.app.stats
-import de.tt_tagebuch.shared.api.models.TrainingStatsDay
-import de.tt_tagebuch.shared.api.models.TrainingStatsMember
-import de.tt_tagebuch.shared.api.models.TrainingStatsMemberDistribution
-import de.tt_tagebuch.shared.api.models.TrainingStatsMonthlyTrend
-import de.tt_tagebuch.shared.api.models.TrainingStatsWeekdayBucket
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsDay
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsMember
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsMemberDistribution
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsMonthlyTrend
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsWeekdayBucket
import java.time.DayOfWeek
import java.time.LocalDate
import java.util.Locale
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/AppRoot.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/AppRoot.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/AppRoot.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/AppRoot.kt
index f962f314..433f1fa4 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/AppRoot.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/AppRoot.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.content.Intent
import android.net.Uri
@@ -89,61 +89,61 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import kotlin.math.max
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.pdf.sharePdfFile
-import de.tt_tagebuch.app.pdf.writeMembersPhoneListPdf
-import de.tt_tagebuch.app.pdf.writeTrainingDaySummaryPdf
-import de.tt_tagebuch.app.pdf.writeTrainingPlanPdf
-import de.tt_tagebuch.shared.api.memberProfileImagePath
-import de.tt_tagebuch.shared.api.toAbsoluteUrl
-import de.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
-import de.tt_tagebuch.shared.api.models.canReadApprovals
-import de.tt_tagebuch.shared.api.models.canReadClubPermissions
-import de.tt_tagebuch.shared.api.models.canReadClubSettings
-import de.tt_tagebuch.shared.api.models.canReadPredefinedActivities
-import de.tt_tagebuch.shared.api.models.canReadDiary
-import de.tt_tagebuch.shared.api.models.canReadTeams
-import de.tt_tagebuch.shared.api.models.canReadMembers
-import de.tt_tagebuch.shared.api.models.canReadSchedule
-import de.tt_tagebuch.shared.api.models.canReadStatistics
-import de.tt_tagebuch.shared.api.models.canReadTournaments
-import de.tt_tagebuch.shared.api.models.canWriteDiary
-import de.tt_tagebuch.shared.api.models.canWriteMembers
-import de.tt_tagebuch.shared.api.models.canWriteMyTischtennis
-import de.tt_tagebuch.shared.api.models.mainActivityImagePath
-import de.tt_tagebuch.shared.api.models.nestedActivityImagePath
-import de.tt_tagebuch.shared.api.models.AccidentReportDto
-import de.tt_tagebuch.shared.api.models.Club
-import de.tt_tagebuch.shared.api.models.DiaryDate
-import de.tt_tagebuch.shared.api.models.DiaryFreeformActivity
-import de.tt_tagebuch.shared.api.models.AddDiaryPlanGroupActivityRequest
-import de.tt_tagebuch.shared.api.models.CreateDiaryPlanActivityRequest
-import de.tt_tagebuch.shared.api.models.DiaryDateActivityItem
-import de.tt_tagebuch.shared.api.models.DiaryPlanGroup
-import de.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityRequest
-import de.tt_tagebuch.shared.api.models.DiaryMemberNoteDto
-import de.tt_tagebuch.shared.api.models.DiaryMemberTagLinkDto
-import de.tt_tagebuch.shared.api.models.DiaryTag
-import de.tt_tagebuch.shared.api.models.PredefinedActivityDto
-import de.tt_tagebuch.shared.api.models.displayLabel as predefinedDtoDisplayLabel
-import de.tt_tagebuch.shared.api.models.tagDefinitionId
-import de.tt_tagebuch.shared.api.models.tagDisplayName
-import de.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
-import de.tt_tagebuch.shared.api.models.isPresentParticipant
-import de.tt_tagebuch.shared.api.models.displayLabel
-import de.tt_tagebuch.shared.api.models.displayTitle
-import de.tt_tagebuch.shared.api.models.memberLabel
-import de.tt_tagebuch.shared.api.models.MemberActivityStatDto
-import de.tt_tagebuch.shared.api.models.MemberContactDto
-import de.tt_tagebuch.shared.api.models.MemberContactSetBody
-import de.tt_tagebuch.shared.api.models.MemberDataQualityRequirements
-import de.tt_tagebuch.shared.api.models.MemberLastParticipationDto
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.TrainingTimeDto
-import de.tt_tagebuch.shared.api.models.toSetBody
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.UserClubPermissions
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.pdf.sharePdfFile
+import de.tsschulz.tt_tagebuch.app.pdf.writeMembersPhoneListPdf
+import de.tsschulz.tt_tagebuch.app.pdf.writeTrainingDaySummaryPdf
+import de.tsschulz.tt_tagebuch.app.pdf.writeTrainingPlanPdf
+import de.tsschulz.tt_tagebuch.shared.api.memberProfileImagePath
+import de.tsschulz.tt_tagebuch.shared.api.toAbsoluteUrl
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadApprovals
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadClubPermissions
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadClubSettings
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadPredefinedActivities
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadDiary
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadTeams
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadMembers
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadSchedule
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadStatistics
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadTournaments
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteDiary
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteMembers
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteMyTischtennis
+import de.tsschulz.tt_tagebuch.shared.api.models.mainActivityImagePath
+import de.tsschulz.tt_tagebuch.shared.api.models.nestedActivityImagePath
+import de.tsschulz.tt_tagebuch.shared.api.models.AccidentReportDto
+import de.tsschulz.tt_tagebuch.shared.api.models.Club
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryFreeformActivity
+import de.tsschulz.tt_tagebuch.shared.api.models.AddDiaryPlanGroupActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateDiaryPlanActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDateActivityItem
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryPlanGroup
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberTagLinkDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTag
+import de.tsschulz.tt_tagebuch.shared.api.models.PredefinedActivityDto
+import de.tsschulz.tt_tagebuch.shared.api.models.displayLabel as predefinedDtoDisplayLabel
+import de.tsschulz.tt_tagebuch.shared.api.models.tagDefinitionId
+import de.tsschulz.tt_tagebuch.shared.api.models.tagDisplayName
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
+import de.tsschulz.tt_tagebuch.shared.api.models.isPresentParticipant
+import de.tsschulz.tt_tagebuch.shared.api.models.displayLabel
+import de.tsschulz.tt_tagebuch.shared.api.models.displayTitle
+import de.tsschulz.tt_tagebuch.shared.api.models.memberLabel
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberActivityStatDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberContactDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberContactSetBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberDataQualityRequirements
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberLastParticipationDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingTimeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.toSetBody
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.UserClubPermissions
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.async
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.delay
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/AuthenticatedAsyncImage.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/AuthenticatedAsyncImage.kt
similarity index 96%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/AuthenticatedAsyncImage.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/AuthenticatedAsyncImage.kt
index ab4e13c7..e9931631 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/AuthenticatedAsyncImage.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/AuthenticatedAsyncImage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/BillingOrdersScreens.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/BillingOrdersScreens.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/BillingOrdersScreens.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/BillingOrdersScreens.kt
index 7654aca1..77897401 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/BillingOrdersScreens.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/BillingOrdersScreens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.content.Context
import androidx.activity.compose.rememberLauncherForActivityResult
@@ -46,16 +46,16 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.pdf.sharePdfFile
-import de.tt_tagebuch.shared.api.models.BillingCreateRunBody
-import de.tt_tagebuch.shared.api.models.BillingRunDto
-import de.tt_tagebuch.shared.api.models.BillingTemplateDto
-import de.tt_tagebuch.shared.api.models.MemberOrderDto
-import de.tt_tagebuch.shared.api.models.MemberOrderPatchBody
-import de.tt_tagebuch.shared.api.models.canReadMembers
-import de.tt_tagebuch.shared.api.models.canWriteMembers
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.pdf.sharePdfFile
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingCreateRunBody
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingRunDto
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingTemplateDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberOrderDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberOrderPatchBody
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadMembers
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteMembers
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/CalendarScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/CalendarScreen.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/CalendarScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/CalendarScreen.kt
index ff496b0a..2c2bb7aa 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/CalendarScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/CalendarScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@@ -37,16 +37,16 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.calendar.CalendarAggregator
-import de.tt_tagebuch.app.calendar.CalendarEventAction
-import de.tt_tagebuch.app.calendar.CalendarEventType
-import de.tt_tagebuch.app.calendar.CalendarUiEvent
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.calendar.CalendarAggregator
+import de.tsschulz.tt_tagebuch.app.calendar.CalendarEventAction
+import de.tsschulz.tt_tagebuch.app.calendar.CalendarEventType
+import de.tsschulz.tt_tagebuch.app.calendar.CalendarUiEvent
import android.util.Log
-import de.tt_tagebuch.shared.api.http.ApiException
-import de.tt_tagebuch.shared.api.models.ClubCalendarHolidaysEnvelope
-import de.tt_tagebuch.shared.api.models.TrainingCancellationUpsertBody
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.shared.api.http.ApiException
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubCalendarHolidaysEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingCancellationUpsertBody
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import kotlinx.coroutines.supervisorScope
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubAdminScreens.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubAdminScreens.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubAdminScreens.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubAdminScreens.kt
index 8b212bc9..8df1d330 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubAdminScreens.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubAdminScreens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.Arrangement
@@ -45,16 +45,16 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.RolePermissionMatrix
-import de.tt_tagebuch.shared.api.models.ApiLogDetailDto
-import de.tt_tagebuch.shared.api.models.ClubPermissionMemberDto
-import de.tt_tagebuch.shared.api.models.PermissionResourceDto
-import de.tt_tagebuch.shared.api.models.canReadApprovals
-import de.tt_tagebuch.shared.api.models.canReadClubPermissions
-import de.tt_tagebuch.shared.api.models.canWriteApprovals
-import de.tt_tagebuch.shared.api.models.canWriteClubPermissions
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.RolePermissionMatrix
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogDetailDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubPermissionMemberDto
+import de.tsschulz.tt_tagebuch.shared.api.models.PermissionResourceDto
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadApprovals
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadClubPermissions
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteApprovals
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteClubPermissions
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.launch
import kotlinx.serialization.json.JsonNull
import kotlinx.serialization.json.JsonObject
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubSettingsScreens.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubSettingsScreens.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubSettingsScreens.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubSettingsScreens.kt
index f5f7bb9a..5c843b40 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubSettingsScreens.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubSettingsScreens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -45,20 +45,20 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.models.Club
-import de.tt_tagebuch.shared.api.models.CreateTrainingTimeBody
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.MemberDataQualityRequirements
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.TrainingGroupMemberBrief
-import de.tt_tagebuch.shared.api.models.TrainingTimeDto
-import de.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
-import de.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
-import de.tt_tagebuch.shared.api.models.canReadClubSettings
-import de.tt_tagebuch.shared.api.models.canReadMembers
-import de.tt_tagebuch.shared.api.models.canWriteClubSettings
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.Club
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberDataQualityRequirements
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupMemberBrief
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingTimeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadClubSettings
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadMembers
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteClubSettings
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.launch
private val ClubSettingsPad = 20.dp
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubStammdatenScreens.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubStammdatenScreens.kt
similarity index 94%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubStammdatenScreens.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubStammdatenScreens.kt
index f3dcf4e7..85698a90 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ClubStammdatenScreens.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ClubStammdatenScreens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.Arrangement
@@ -44,23 +44,23 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.PredefinedActivitiesApi
-import de.tt_tagebuch.shared.api.models.MemberTransferConfigEnvelope
-import de.tt_tagebuch.shared.api.models.MemberTransferConfigSaveBody
-import de.tt_tagebuch.shared.api.models.PredefinedActivityDto
-import de.tt_tagebuch.shared.api.models.PredefinedActivityUpsertBody
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.TrainingTimeDto
-import de.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
-import de.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
-import de.tt_tagebuch.shared.api.models.canReadClubSettings
-import de.tt_tagebuch.shared.api.models.canReadMembers
-import de.tt_tagebuch.shared.api.models.canReadPredefinedActivities
-import de.tt_tagebuch.shared.api.models.canWriteMembers
-import de.tt_tagebuch.shared.api.models.canWritePredefinedActivities
-import de.tt_tagebuch.shared.api.models.displayLabel
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.PredefinedActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferConfigEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferConfigSaveBody
+import de.tsschulz.tt_tagebuch.shared.api.models.PredefinedActivityDto
+import de.tsschulz.tt_tagebuch.shared.api.models.PredefinedActivityUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingTimeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadClubSettings
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadMembers
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadPredefinedActivities
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteMembers
+import de.tsschulz.tt_tagebuch.shared.api.models.canWritePredefinedActivities
+import de.tsschulz.tt_tagebuch.shared.api.models.displayLabel
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.launch
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.buildJsonObject
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentEditorDetailTabs.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentEditorDetailTabs.kt
similarity index 95%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentEditorDetailTabs.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentEditorDetailTabs.kt
index a394e9f9..b2746eff 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentEditorDetailTabs.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentEditorDetailTabs.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -31,23 +31,23 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.TournamentsApi
-import de.tt_tagebuch.shared.api.models.AddTournamentClassBody
-import de.tt_tagebuch.shared.api.models.CreateTournamentPairingBody
-import de.tt_tagebuch.shared.api.models.TournamentAddInternalParticipantBody
-import de.tt_tagebuch.shared.api.models.TournamentAddMatchResultBody
-import de.tt_tagebuch.shared.api.models.TournamentClassDto
-import de.tt_tagebuch.shared.api.models.TournamentDeleteKnockoutBody
-import de.tt_tagebuch.shared.api.models.TournamentExternalParticipantRowDto
-import de.tt_tagebuch.shared.api.models.TournamentFinishMatchBody
-import de.tt_tagebuch.shared.api.models.TournamentMatchDto
-import de.tt_tagebuch.shared.api.models.TournamentParticipantRowDto
-import de.tt_tagebuch.shared.api.models.TournamentRemoveInternalParticipantBody
-import de.tt_tagebuch.shared.api.models.UpdateParticipantClassBody
-import de.tt_tagebuch.shared.api.models.UpdateTournamentClassBody
-import de.tt_tagebuch.shared.api.models.AddExternalTournamentParticipantBody
-import de.tt_tagebuch.shared.api.models.RemoveExternalTournamentParticipantBody
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.TournamentsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.AddTournamentClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTournamentPairingBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentAddInternalParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentAddMatchResultBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentClassDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentDeleteKnockoutBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentExternalParticipantRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentFinishMatchBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentParticipantRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentRemoveInternalParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateParticipantClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTournamentClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AddExternalTournamentParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.RemoveExternalTournamentParticipantBody
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentEditorScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentEditorScreen.kt
similarity index 94%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentEditorScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentEditorScreen.kt
index ce1abb40..49296ae5 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentEditorScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentEditorScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -38,20 +38,20 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.models.InternalTournamentDetailDto
-import de.tt_tagebuch.shared.api.models.SetTournamentModusBody
-import de.tt_tagebuch.shared.api.models.TournamentClassDto
-import de.tt_tagebuch.shared.api.models.TournamentClubTournamentBody
-import de.tt_tagebuch.shared.api.models.TournamentCreateGroupMatchesBody
-import de.tt_tagebuch.shared.api.models.TournamentCreateGroupsBody
-import de.tt_tagebuch.shared.api.models.TournamentExternalParticipantRowDto
-import de.tt_tagebuch.shared.api.models.TournamentGetExternalParticipantsBody
-import de.tt_tagebuch.shared.api.models.TournamentGetParticipantsBody
-import de.tt_tagebuch.shared.api.models.TournamentMatchDto
-import de.tt_tagebuch.shared.api.models.TournamentParticipantRowDto
-import de.tt_tagebuch.shared.api.models.UpdateTournamentMetaBody
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentDetailDto
+import de.tsschulz.tt_tagebuch.shared.api.models.SetTournamentModusBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentClassDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentClubTournamentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentCreateGroupMatchesBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentCreateGroupsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentExternalParticipantRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentGetExternalParticipantsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentGetParticipantsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentParticipantRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTournamentMetaBody
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -59,7 +59,7 @@ import kotlinx.serialization.json.JsonElement
/**
* Vollständiger Turnier-Workspace (analog Web [TournamentTab]): Stammdaten, Ablauf/Gruppen,
- * Klassen, Teilnehmer, Spiele, Doppel-Paarungen. Lädt und speichert über [de.tt_tagebuch.shared.api.TournamentsApi].
+ * Klassen, Teilnehmer, Spiele, Doppel-Paarungen. Lädt und speichert über [de.tsschulz.tt_tagebuch.shared.api.TournamentsApi].
*/
@Composable
internal fun InternalTournamentEditorScreen(
@@ -347,7 +347,7 @@ private fun TournamentEditorFlowTab(
detail: InternalTournamentDetailDto,
groupsJson: JsonElement?,
tr: (String, String) -> String,
- api: de.tt_tagebuch.shared.api.TournamentsApi,
+ api: de.tsschulz.tt_tagebuch.shared.api.TournamentsApi,
scope: kotlinx.coroutines.CoroutineScope,
onReload: () -> Unit,
onError: (String?) -> Unit,
@@ -500,7 +500,7 @@ private fun TournamentEditorFlowTab(
runCatching {
kotlinx.coroutines.withContext(Dispatchers.IO) {
api.startKnockout(
- de.tt_tagebuch.shared.api.models.TournamentStartKnockoutBody(clubId, tournamentId),
+ de.tsschulz.tt_tagebuch.shared.api.models.TournamentStartKnockoutBody(clubId, tournamentId),
)
}
}.onFailure { onError(it.message) }
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentStatsDialog.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentStatsDialog.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentStatsDialog.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentStatsDialog.kt
index a8b50116..2b9e32b9 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/InternalTournamentStatsDialog.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/InternalTournamentStatsDialog.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@@ -28,10 +28,10 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.models.InternalTournamentStatsAgeOption
-import de.tt_tagebuch.shared.api.models.InternalTournamentStatsDto
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentStatsAgeOption
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentStatsDto
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
private fun allBandKeysFromOptions(options: List): Set {
val seen = mutableSetOf()
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/LanguageLocals.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/LanguageLocals.kt
similarity index 59%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/LanguageLocals.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/LanguageLocals.kt
index ca33f9c9..071aa790 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/LanguageLocals.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/LanguageLocals.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.runtime.compositionLocalOf
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
internal val LocalLanguageCode = compositionLocalOf { MobileStrings.DEFAULT_LANGUAGE }
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MemberGroupPortraitCropRoute.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberGroupPortraitCropRoute.kt
similarity index 99%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MemberGroupPortraitCropRoute.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberGroupPortraitCropRoute.kt
index 5b6364d6..8e62ffc2 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MemberGroupPortraitCropRoute.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberGroupPortraitCropRoute.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.graphics.Bitmap
import android.graphics.BitmapFactory
@@ -60,9 +60,9 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MemberPortraitCrop.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberPortraitCrop.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MemberPortraitCrop.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberPortraitCrop.kt
index 609af2d4..c718017f 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MemberPortraitCrop.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberPortraitCrop.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.app.Activity
import android.content.Context
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MembersExtraScreens.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MembersExtraScreens.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MembersExtraScreens.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MembersExtraScreens.kt
index 0ac9e84b..750112af 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MembersExtraScreens.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MembersExtraScreens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.activity.compose.BackHandler
import androidx.activity.compose.rememberLauncherForActivityResult
@@ -37,12 +37,12 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
-import de.tt_tagebuch.shared.api.models.MemberTransferConfigEnvelope
-import de.tt_tagebuch.shared.api.models.MemberTransferRunBody
-import de.tt_tagebuch.shared.api.toAbsoluteUrl
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferConfigEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferRunBody
+import de.tsschulz.tt_tagebuch.shared.api.toAbsoluteUrl
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.launch
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.booleanOrNull
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MembersTtAge.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MembersTtAge.kt
similarity index 95%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MembersTtAge.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MembersTtAge.kt
index f74691fd..bb4e877c 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/MembersTtAge.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MembersTtAge.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
-import de.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
import java.time.LocalDate
import java.time.Period
import java.time.ZoneId
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceLogic.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceLogic.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceLogic.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceLogic.kt
index 98002465..8370f3b1 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceLogic.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceLogic.kt
@@ -1,14 +1,14 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
-import de.tt_tagebuch.app.util.OfficialTournamentEligibility
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.OfficialCompetitionMemberStateDto
-import de.tt_tagebuch.shared.api.models.OfficialParsedCompetitionDto
-import de.tt_tagebuch.shared.api.models.OfficialParsedDataDto
-import de.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
-import de.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
-import de.tt_tagebuch.shared.api.models.OfficialParticipationEntryDto
-import de.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
+import de.tsschulz.tt_tagebuch.app.util.OfficialTournamentEligibility
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialCompetitionMemberStateDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedCompetitionDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedDataDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipationEntryDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonNull
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceScreen.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceScreen.kt
index 2975dc53..2e67da88 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/OfficialTournamentsWorkspaceScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
@@ -55,18 +55,18 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.util.OfficialTournamentEligibility
-import de.tt_tagebuch.shared.api.models.OfficialParsedCompetitionDto
-import de.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
-import de.tt_tagebuch.shared.api.models.OfficialPatchTournamentBody
-import de.tt_tagebuch.shared.api.models.OfficialParticipantStatusBody
-import de.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
-import de.tt_tagebuch.shared.api.models.OfficialUpsertParticipationBody
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.canReadTournaments
-import de.tt_tagebuch.shared.api.models.canWriteTournaments
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.util.OfficialTournamentEligibility
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedCompetitionDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialPatchTournamentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipantStatusBody
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialUpsertParticipationBody
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadTournaments
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteTournaments
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/PersonalHubScreens.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/PersonalHubScreens.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/PersonalHubScreens.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/PersonalHubScreens.kt
index aae53c99..6d29eea6 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/PersonalHubScreens.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/PersonalHubScreens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.annotation.SuppressLint
import android.view.ViewGroup
@@ -49,15 +49,15 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.http.ApiException
-import de.tt_tagebuch.shared.api.models.ClickTtAccountDto
-import de.tt_tagebuch.shared.api.models.ClickTtAccountStatusDto
-import de.tt_tagebuch.shared.api.models.ClickTtAccountUpsertBody
-import de.tt_tagebuch.shared.api.models.MyTischtennisAccountDto
-import de.tt_tagebuch.shared.api.models.MyTischtennisAccountUpsertBody
-import de.tt_tagebuch.shared.api.models.MyTischtennisStatusDto
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.http.ApiException
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountStatusDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisAccountDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisAccountUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisStatusDto
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.launch
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
@@ -349,7 +349,7 @@ private fun MyTischtennisEditorDialog(
onSaved: () -> Unit,
onLoggedIn: () -> Unit,
scope: kotlinx.coroutines.CoroutineScope,
- api: de.tt_tagebuch.shared.api.MyTischtennisApi,
+ api: de.tsschulz.tt_tagebuch.shared.api.MyTischtennisApi,
) {
var email by remember(account?.id, loginMode) { mutableStateOf(account?.email.orEmpty()) }
var password by remember(account?.id, loginMode) { mutableStateOf("") }
@@ -614,7 +614,7 @@ private fun ClickTtEditorDialog(
onSaved: () -> Unit,
onLoggedIn: () -> Unit,
scope: kotlinx.coroutines.CoroutineScope,
- api: de.tt_tagebuch.shared.api.ClickTtAccountApi,
+ api: de.tsschulz.tt_tagebuch.shared.api.ClickTtAccountApi,
) {
var username by remember(account?.id, loginMode) { mutableStateOf(account?.username.orEmpty()) }
var password by remember(account?.id, loginMode) { mutableStateOf("") }
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ScheduleScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ScheduleScreen.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ScheduleScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ScheduleScreen.kt
index bccd12b9..f2c70167 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/ScheduleScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ScheduleScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.content.Intent
import android.net.Uri
@@ -46,14 +46,14 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.stats.TrainingStatsDerived
-import de.tt_tagebuch.shared.api.models.ScheduleMatchDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchScope
-import de.tt_tagebuch.shared.api.models.ScheduleViewMode
-import de.tt_tagebuch.shared.api.models.canReadSchedule
-import de.tt_tagebuch.shared.api.models.canWriteSchedule
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.stats.TrainingStatsDerived
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchScope
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleViewMode
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadSchedule
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteSchedule
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.launch
private val SchedulePad = 20.dp
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamEditorLineupLogic.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamEditorLineupLogic.kt
similarity index 98%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamEditorLineupLogic.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamEditorLineupLogic.kt
index 37c571f8..96962831 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamEditorLineupLogic.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamEditorLineupLogic.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
-import de.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
import java.util.Calendar
import java.util.GregorianCalendar
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamEditorScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamEditorScreen.kt
similarity index 96%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamEditorScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamEditorScreen.kt
index 7fa17c2a..dc0d22ca 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamEditorScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamEditorScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import android.content.Context
import androidx.activity.compose.rememberLauncherForActivityResult
@@ -49,19 +49,19 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.pdf.shareFileWithMime
-import de.tt_tagebuch.shared.api.models.ClubLeagueOptionDto
-import de.tt_tagebuch.shared.api.models.ClubTeamCreateBody
-import de.tt_tagebuch.shared.api.models.ClubTeamDto
-import de.tt_tagebuch.shared.api.models.ClubTeamLineupRowDto
-import de.tt_tagebuch.shared.api.models.ClubTeamUpdateBody
-import de.tt_tagebuch.shared.api.models.LeaguePlayerStatDto
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.TeamLineupAssignmentItem
-import de.tt_tagebuch.shared.api.models.TeamLineupUpdateBody
-import de.tt_tagebuch.shared.api.models.canWriteTeams
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.pdf.shareFileWithMime
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubLeagueOptionDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamCreateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamLineupRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamUpdateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.LeaguePlayerStatDto
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamLineupAssignmentItem
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamLineupUpdateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteTeams
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
@@ -196,13 +196,13 @@ internal fun TeamEditorScreen(
var loadingLineup by remember { mutableStateOf(false) }
var savingLineup by remember { mutableStateOf(false) }
- var documents by remember { mutableStateOf>(emptyList()) }
+ var documents by remember { mutableStateOf>(emptyList()) }
var loadingDocs by remember { mutableStateOf(false) }
var parsingDocId by remember { mutableStateOf(null) }
var schedulerLoaded by remember { mutableStateOf(false) }
var schedulerBlock by remember {
- mutableStateOf(
+ mutableStateOf(
null,
)
}
@@ -617,7 +617,7 @@ internal fun TeamEditorScreen(
runCatching {
withContext(Dispatchers.IO) {
dependencies.myTischtennisApi.configureTeam(
- de.tt_tagebuch.shared.api.models.MyTtConfigureTeamBody(
+ de.tsschulz.tt_tagebuch.shared.api.models.MyTtConfigureTeamBody(
url = myTtUrl.trim(),
clubTeamId = team!!.id,
createLeague = createLeague,
@@ -640,7 +640,7 @@ internal fun TeamEditorScreen(
runCatching {
withContext(Dispatchers.IO) {
dependencies.myTischtennisApi.configureLeague(
- de.tt_tagebuch.shared.api.models.MyTtConfigureLeagueBody(
+ de.tsschulz.tt_tagebuch.shared.api.models.MyTtConfigureLeagueBody(
url = myTtLeagueUrl.trim(),
createSeason = createSeasonLeague,
),
@@ -1091,13 +1091,13 @@ private fun LineupTab(
Card(elevation = 0.dp, modifier = Modifier.fillMaxWidth(), backgroundColor = MaterialTheme.colors.surface) {
Column(Modifier.padding(12.dp), verticalArrangement = Arrangement.spacedBy(6.dp)) {
Text(
- t("mobile.teamPlanningTitle", "Mannschafts-Planung (Web)"),
+ t("mobile.teamPlanningTitle", "Mannschafts-Planung"),
fontWeight = FontWeight.Medium,
)
Text(
t(
"mobile.teamPlanningBody",
- "Die Planungs-Ansicht mit Pool, mehreren Mannschaften und Drag-and-Drop gibt es in der Web-App unter Team-Verwaltung → Planung. In dieser App bearbeitest du die Meldung je Mannschaft hier im Tab Aufstellung.",
+ "Die übergreifende Planung (Pool „Möchte spielen“, mehrere Mannschaften) findest du in der Team-Verwaltung unter dem Reiter „Planung“. Hier pflegst du die Meldung nur für diese eine Mannschaft.",
),
style = MaterialTheme.typography.caption,
color = MaterialTheme.colors.onSurface.copy(alpha = 0.82f),
@@ -1118,12 +1118,12 @@ private fun DocumentsTab(
t: (String, String) -> String,
canWrite: Boolean,
team: ClubTeamDto,
- documents: List,
+ documents: List,
loading: Boolean,
parsingId: Int?,
onPickUpload: (String) -> Unit,
- onParse: (de.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
- onOpen: (de.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
+ onParse: (de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
+ onOpen: (de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
) {
fun latest(type: String) = documents.filter { it.documentType == type }.maxByOrNull { it.id }
Column(Modifier.verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.spacedBy(12.dp)) {
@@ -1154,12 +1154,12 @@ private fun DocumentsTab(
@Composable
private fun DocCard(
title: String,
- latest: de.tt_tagebuch.shared.api.models.TeamDocumentDto?,
+ latest: de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentDto?,
canWrite: Boolean,
parsingId: Int?,
onUpload: () -> Unit,
- onParse: (de.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
- onOpen: (de.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
+ onParse: (de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
+ onOpen: (de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentDto) -> Unit,
t: (String, String) -> String,
) {
Card(elevation = 1.dp, modifier = Modifier.fillMaxWidth()) {
@@ -1192,7 +1192,7 @@ private fun DocCard(
@Composable
private fun JobsTab(
t: (String, String) -> String,
- block: de.tt_tagebuch.shared.api.models.SchedulerJobBlockDto?,
+ block: de.tsschulz.tt_tagebuch.shared.api.models.SchedulerJobBlockDto?,
teamId: Int,
) {
val detail = block?.teamDetails?.find { it.clubTeamId == teamId }
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamManagementScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamManagementScreen.kt
similarity index 59%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamManagementScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamManagementScreen.kt
index 314601c6..fc15c39e 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TeamManagementScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamManagementScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -38,14 +38,14 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.ScheduleLogic
-import de.tt_tagebuch.shared.api.models.ClubLeagueOptionDto
-import de.tt_tagebuch.shared.api.models.ClubTeamDto
-import de.tt_tagebuch.shared.api.models.SeasonDto
-import de.tt_tagebuch.shared.api.models.canReadTeams
-import de.tt_tagebuch.shared.api.models.canWriteTeams
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.ScheduleLogic
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubLeagueOptionDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.SeasonDto
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadTeams
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteTeams
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -53,6 +53,11 @@ import kotlinx.coroutines.withContext
private val TeamPad = 20.dp
+private enum class TeamWorkspaceSection {
+ Teams,
+ Planning,
+}
+
@Composable
internal fun TeamManagementScreen(
dependencies: AppDependencies,
@@ -81,6 +86,8 @@ internal fun TeamManagementScreen(
var editorOpen by remember { mutableStateOf(false) }
var editorTeamId by remember { mutableStateOf(null) }
+ var workspace by remember { mutableStateOf(TeamWorkspaceSection.Teams) }
+
var seasonMenu by remember { mutableStateOf(false) }
var deleteTarget by remember { mutableStateOf(null) }
@@ -172,7 +179,7 @@ internal fun TeamManagementScreen(
fontWeight = FontWeight.SemiBold,
modifier = Modifier.weight(1f),
)
- if (canWrite) {
+ if (canWrite && workspace == TeamWorkspaceSection.Teams) {
Button(
onClick = { openNewTeamEditor() },
enabled = !loading && selectedSeasonId != null,
@@ -187,11 +194,19 @@ internal fun TeamManagementScreen(
return@Column
}
- Text(
- getMobileString("mobile.teamsIntro", "Mannschaften pro Saison verwalten (Name, Liga, geplante Liga, Geschlechtsklasse, Altersklasse)."),
- style = MaterialTheme.typography.caption,
- color = MaterialTheme.colors.onSurface.copy(alpha = 0.72f),
- )
+ if (workspace == TeamWorkspaceSection.Teams) {
+ Text(
+ getMobileString("mobile.teamsIntro", "Mannschaften pro Saison verwalten (Name, Liga, geplante Liga, Geschlechtsklasse, Altersklasse)."),
+ style = MaterialTheme.typography.caption,
+ color = MaterialTheme.colors.onSurface.copy(alpha = 0.72f),
+ )
+ } else {
+ Text(
+ getMobileString("teamManagement.planningSubtitle", "Spieler dem Pool „Möchte spielen“ zuordnen und auf Mannschaften verteilen."),
+ style = MaterialTheme.typography.caption,
+ color = MaterialTheme.colors.onSurface.copy(alpha = 0.72f),
+ )
+ }
Spacer(Modifier.height(8.dp))
Row(Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(8.dp)) {
@@ -217,78 +232,131 @@ internal fun TeamManagementScreen(
}
Spacer(Modifier.height(8.dp))
- OutlinedTextField(
- value = search,
- onValueChange = { search = it },
- modifier = Modifier.fillMaxWidth(),
- singleLine = true,
- label = { Text(getMobileString("mobile.teamSearch", "Mannschaft suchen")) },
- )
-
- error?.let {
- Spacer(Modifier.height(8.dp))
- Text(it, color = MaterialTheme.colors.error)
- }
-
- if (loading && teams.isEmpty()) {
- Box(Modifier.fillMaxWidth().padding(top = 24.dp), contentAlignment = Alignment.Center) {
- CircularProgressIndicator()
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
+ if (workspace == TeamWorkspaceSection.Teams) {
+ Button(onClick = { }, enabled = false, modifier = Modifier.weight(1f)) {
+ Text(getMobileString("mobile.teamWorkspaceTeams", "Mannschaften"))
+ }
+ } else {
+ OutlinedButton(onClick = { workspace = TeamWorkspaceSection.Teams }, modifier = Modifier.weight(1f)) {
+ Text(getMobileString("mobile.teamWorkspaceTeams", "Mannschaften"))
+ }
+ }
+ if (workspace == TeamWorkspaceSection.Planning) {
+ Button(onClick = { }, enabled = false, modifier = Modifier.weight(1f)) {
+ Text(getMobileString("mobile.teamWorkspacePlanning", "Planung"))
+ }
+ } else {
+ OutlinedButton(
+ onClick = { workspace = TeamWorkspaceSection.Planning },
+ enabled = selectedSeasonId != null,
+ modifier = Modifier.weight(1f),
+ ) {
+ Text(getMobileString("mobile.teamWorkspacePlanning", "Planung"))
+ }
}
- return@Column
}
- if (!loading && teams.isEmpty()) {
- Spacer(Modifier.height(16.dp))
- Text(getMobileString("mobile.noTeams", "Keine Mannschaften für diese Saison."))
- return@Column
- }
+ Spacer(Modifier.height(8.dp))
- LazyColumn(
- modifier = Modifier
- .weight(1f)
- .fillMaxWidth(),
- verticalArrangement = Arrangement.spacedBy(8.dp),
- ) {
- items(filtered, key = { it.id }) { team ->
- Card(elevation = 1.dp, modifier = Modifier.fillMaxWidth()) {
- Column(Modifier.padding(12.dp)) {
- Text(team.name.ifBlank { "#${team.id}" }, fontWeight = FontWeight.SemiBold)
- val lg = team.league?.name?.takeIf { it.isNotBlank() }
- ?: getMobileString("mobile.noLeague", "Keine Liga")
- Text(lg, style = MaterialTheme.typography.caption)
- team.season?.season?.takeIf { it.isNotBlank() }?.let {
- Text(it, style = MaterialTheme.typography.caption)
- }
- team.plannedLeagueName?.takeIf { it.isNotBlank() }?.let { pl ->
- Text(
- getMobileString("mobile.plannedLeagueShort", "Geplant: ") + pl,
- style = MaterialTheme.typography.caption,
- )
- }
- val g = team.teamGender ?: "open"
- val a = team.teamAgeGroup ?: "adult"
- val genShort = getMobileString("mobile.teamGenderShort", "Geschlecht")
- val ageShort = getMobileString("mobile.teamAgeShort", "AK")
- Text(
- "$genShort: ${labelGender(getMobileString, g)} · $ageShort: ${labelAge(getMobileString, a)}",
- style = MaterialTheme.typography.caption,
- )
- team.myTischtennisTeamId?.takeIf { it.isNotBlank() }?.let { mid ->
- Text("myTischtennis: $mid", style = MaterialTheme.typography.caption)
- }
- if (canWrite) {
- Row(Modifier.padding(top = 8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
- TextButton(onClick = { openEditor(team) }) {
- Text(getMobileString("common.edit", "Bearbeiten"))
+ when (workspace) {
+ TeamWorkspaceSection.Teams -> {
+ OutlinedTextField(
+ value = search,
+ onValueChange = { search = it },
+ modifier = Modifier.fillMaxWidth(),
+ singleLine = true,
+ label = { Text(getMobileString("mobile.teamSearch", "Mannschaft suchen")) },
+ )
+
+ error?.let {
+ Spacer(Modifier.height(8.dp))
+ Text(it, color = MaterialTheme.colors.error)
+ }
+
+ if (loading && teams.isEmpty()) {
+ Box(Modifier.fillMaxWidth().padding(top = 24.dp), contentAlignment = Alignment.Center) {
+ CircularProgressIndicator()
+ }
+ return@Column
+ }
+
+ if (!loading && teams.isEmpty()) {
+ Spacer(Modifier.height(16.dp))
+ Text(getMobileString("mobile.noTeams", "Keine Mannschaften für diese Saison."))
+ return@Column
+ }
+
+ LazyColumn(
+ modifier = Modifier
+ .weight(1f)
+ .fillMaxWidth(),
+ verticalArrangement = Arrangement.spacedBy(8.dp),
+ ) {
+ items(filtered, key = { it.id }) { team ->
+ Card(elevation = 1.dp, modifier = Modifier.fillMaxWidth()) {
+ Column(Modifier.padding(12.dp)) {
+ Text(team.name.ifBlank { "#${team.id}" }, fontWeight = FontWeight.SemiBold)
+ val lg = team.league?.name?.takeIf { it.isNotBlank() }
+ ?: getMobileString("mobile.noLeague", "Keine Liga")
+ Text(lg, style = MaterialTheme.typography.caption)
+ team.season?.season?.takeIf { it.isNotBlank() }?.let {
+ Text(it, style = MaterialTheme.typography.caption)
}
- TextButton(onClick = { deleteTarget = team }) {
- Text(getMobileString("common.delete", "Löschen"), color = MaterialTheme.colors.error)
+ team.plannedLeagueName?.takeIf { it.isNotBlank() }?.let { pl ->
+ Text(
+ getMobileString("mobile.plannedLeagueShort", "Geplant: ") + pl,
+ style = MaterialTheme.typography.caption,
+ )
+ }
+ val g = team.teamGender ?: "open"
+ val a = team.teamAgeGroup ?: "adult"
+ val genShort = getMobileString("mobile.teamGenderShort", "Geschlecht")
+ val ageShort = getMobileString("mobile.teamAgeShort", "AK")
+ Text(
+ "$genShort: ${labelGender(getMobileString, g)} · $ageShort: ${labelAge(getMobileString, a)}",
+ style = MaterialTheme.typography.caption,
+ )
+ team.myTischtennisTeamId?.takeIf { it.isNotBlank() }?.let { mid ->
+ Text("myTischtennis: $mid", style = MaterialTheme.typography.caption)
+ }
+ if (canWrite) {
+ Row(Modifier.padding(top = 8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
+ TextButton(onClick = { openEditor(team) }) {
+ Text(getMobileString("common.edit", "Bearbeiten"))
+ }
+ TextButton(onClick = { deleteTarget = team }) {
+ Text(getMobileString("common.delete", "Löschen"), color = MaterialTheme.colors.error)
+ }
+ }
}
}
}
}
}
}
+ TeamWorkspaceSection.Planning -> {
+ val sid = selectedSeasonId
+ if (sid == null) {
+ Text(getMobileString("mobile.seasonPick", "Saison wählen"))
+ } else {
+ TeamPlanningScreen(
+ dependencies = dependencies,
+ clubId = clubId,
+ seasonId = sid,
+ seasonLabel = seasons.find { it.id == sid }?.season.orEmpty(),
+ teams = teams,
+ canWrite = canWrite,
+ onTeamsChanged = { loadTick++ },
+ onOpenTeamEditor = { tid ->
+ editorTeamId = tid
+ editorOpen = true
+ },
+ t = getMobileString,
+ modifier = Modifier.weight(1f).fillMaxWidth(),
+ )
+ }
+ }
}
}
}
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamPlanningLogic.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamPlanningLogic.kt
new file mode 100644
index 00000000..141e9ed8
--- /dev/null
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamPlanningLogic.kt
@@ -0,0 +1,101 @@
+package de.tsschulz.tt_tagebuch.app.ui
+
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import java.util.Calendar
+import java.util.GregorianCalendar
+
+/**
+ * Zuordnungen Spieler ↔ Mannschaft in der Saison-Planung (Halbserie),
+ * analog `planningAssignments` / `normalizePlanningTeamAssignments` in `TeamManagementView.vue`.
+ */
+internal data class PlanningAssignment(
+ val teamId: Int,
+ val memberId: Int,
+ val position: Int,
+)
+
+internal object TeamPlanningLogic {
+
+ fun defaultLineupHalf(): String =
+ if (isSecondHalfSeason()) "second_half" else "first_half"
+
+ private fun isSecondHalfSeason(): Boolean {
+ val now = GregorianCalendar()
+ val seasonStart = GregorianCalendar(now.get(Calendar.YEAR), Calendar.JULY, 1, 0, 0, 0)
+ if (seasonStart.after(now)) {
+ seasonStart.add(Calendar.YEAR, -1)
+ }
+ val secondHalfStart = GregorianCalendar(seasonStart.get(Calendar.YEAR) + 1, Calendar.JANUARY, 1, 0, 0, 0)
+ return now.timeInMillis >= secondHalfStart.timeInMillis
+ }
+
+ fun normalizeAssignments(raw: List): List {
+ val filtered = raw.filter { it.teamId > 0 && it.memberId > 0 }
+ val byTeam = filtered.groupBy { it.teamId }
+ val out = ArrayList()
+ byTeam.entries.sortedBy { it.key }.forEach { (_, entries) ->
+ entries
+ .sortedBy { it.position }
+ .forEachIndexed { idx, e ->
+ out.add(PlanningAssignment(teamId = e.teamId, memberId = e.memberId, position = idx + 1))
+ }
+ }
+ return out
+ }
+
+ fun withoutMember(assignments: List, memberId: Int): List =
+ assignments.filter { it.memberId != memberId }
+
+ fun assignToTeamEnd(
+ assignments: List,
+ teamId: Int,
+ memberId: Int,
+ ): List {
+ val without = withoutMember(assignments, memberId)
+ val teamCount = without.count { it.teamId == teamId }
+ return without + PlanningAssignment(teamId = teamId, memberId = memberId, position = teamCount + 1)
+ }
+
+ fun removeFromTeam(assignments: List, teamId: Int, memberId: Int): List {
+ val without = assignments.filterNot { it.teamId == teamId && it.memberId == memberId }
+ return normalizeAssignments(without)
+ }
+
+ fun moveWithinTeam(
+ assignments: List,
+ teamId: Int,
+ memberId: Int,
+ direction: Int,
+ ): List? {
+ val teamEntries = assignments.filter { it.teamId == teamId }.sortedBy { it.position }
+ val index = teamEntries.indexOfFirst { it.memberId == memberId }
+ if (index < 0) return null
+ val target = index + direction
+ if (target < 0 || target >= teamEntries.size) return null
+ val reordered = teamEntries.toMutableList()
+ val tmp = reordered[index]
+ reordered[index] = reordered[target]
+ reordered[target] = tmp
+ val others = assignments.filter { it.teamId != teamId }
+ val updated = others + reordered.mapIndexed { idx, e ->
+ PlanningAssignment(teamId = teamId, memberId = e.memberId, position = idx + 1)
+ }
+ return normalizeAssignments(updated)
+ }
+
+ fun teamLineupMembers(assignments: List, teamId: Int, membersById: Map): List =
+ assignments
+ .filter { it.teamId == teamId }
+ .sortedBy { it.position }
+ .mapNotNull { membersById[it.memberId] }
+
+ fun isEligible(member: Member, team: ClubTeamDto, seasonLabel: String): Boolean {
+ val tAge = TeamEditorLineupLogic.configuredTeamAgeGroup(team.teamAgeGroup, team.league?.name)
+ val tGender = TeamEditorLineupLogic.configuredTeamGender(team.teamGender, team.league?.name)
+ return TeamEditorLineupLogic.isEligibleForTeam(member, tAge, tGender, seasonLabel)
+ }
+
+ fun lineupGapOk(membersOrdered: List, template: (String, String) -> String): String? =
+ TeamEditorLineupLogic.lineupGapViolationMessage(membersOrdered, template)
+}
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamPlanningScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamPlanningScreen.kt
new file mode 100644
index 00000000..42613c37
--- /dev/null
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TeamPlanningScreen.kt
@@ -0,0 +1,645 @@
+package de.tsschulz.tt_tagebuch.app.ui
+
+import android.widget.Toast
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.items
+import androidx.compose.material.AlertDialog
+import androidx.compose.material.Button
+import androidx.compose.material.CircularProgressIndicator
+import androidx.compose.material.Divider
+import androidx.compose.material.DropdownMenu
+import androidx.compose.material.DropdownMenuItem
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.OutlinedButton
+import androidx.compose.material.OutlinedTextField
+import androidx.compose.material.Text
+import androidx.compose.material.TextButton
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateMapOf
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.text.font.FontWeight
+import androidx.compose.ui.unit.dp
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamCreateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamUpdateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberPlayInterestSetBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamLineupAssignmentItem
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamLineupUpdateBody
+import kotlinx.coroutines.CancellationException
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.awaitAll
+import kotlinx.coroutines.coroutineScope
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
+private data class TeamDraft(
+ val name: String,
+ val plannedLeagueName: String,
+ val teamGender: String,
+ val teamAgeGroup: String,
+)
+
+private fun filterAssignmentsForTeamEligibility(
+ teamId: Int,
+ src: List,
+ teams: List,
+ drafts: Map,
+ membersById: Map,
+ seasonLabel: String,
+): List {
+ val team = teams.find { it.id == teamId } ?: return src
+ val d = drafts[teamId] ?: return src
+ val pseudo = team.copy(
+ name = d.name,
+ plannedLeagueName = d.plannedLeagueName.ifBlank { null },
+ teamGender = d.teamGender,
+ teamAgeGroup = d.teamAgeGroup,
+ )
+ return TeamPlanningLogic.normalizeAssignments(
+ src.filter { a ->
+ if (a.teamId != teamId) return@filter true
+ val m = membersById[a.memberId] ?: return@filter false
+ TeamPlanningLogic.isEligible(m, pseudo, seasonLabel)
+ },
+ )
+}
+
+@Composable
+internal fun TeamPlanningScreen(
+ dependencies: AppDependencies,
+ clubId: Int,
+ seasonId: Int,
+ seasonLabel: String,
+ teams: List,
+ canWrite: Boolean,
+ onTeamsChanged: () -> Unit,
+ onOpenTeamEditor: (Int) -> Unit,
+ t: (String, String) -> String,
+ modifier: Modifier = Modifier,
+) {
+ val context = LocalContext.current
+ val scope = rememberCoroutineScope()
+
+ var lineupHalf by remember { mutableStateOf(TeamPlanningLogic.defaultLineupHalf()) }
+ var members by remember { mutableStateOf>(emptyList()) }
+ var interestedIds by remember { mutableStateOf>(emptySet()) }
+ var assignments by remember { mutableStateOf>(emptyList()) }
+ val drafts = remember { mutableStateMapOf() }
+
+ var loading by remember { mutableStateOf(true) }
+ var poolSearch by remember { mutableStateOf("") }
+ var addInterestMemberId by remember { mutableStateOf(null) }
+ var addInterestMenu by remember { mutableStateOf(false) }
+ var markingInterest by remember { mutableStateOf(false) }
+ var deleteTeamId by remember { mutableStateOf(null) }
+ var info by remember { mutableStateOf(null) }
+
+ val membersById = remember(members) { members.associateBy { it.id } }
+
+ LaunchedEffect(teams.map { "${it.id}:${it.name}:${it.teamGender}:${it.teamAgeGroup}" }.joinToString("|")) {
+ teams.forEach { team ->
+ drafts[team.id] = TeamDraft(
+ name = team.name,
+ plannedLeagueName = team.plannedLeagueName.orEmpty(),
+ teamGender = team.teamGender?.takeIf { it.isNotBlank() } ?: "open",
+ teamAgeGroup = team.teamAgeGroup?.takeIf { it.isNotBlank() } ?: "adult",
+ )
+ }
+ val keep = teams.map { it.id }.toSet()
+ drafts.keys.filter { it !in keep }.forEach { drafts.remove(it) }
+ }
+
+ suspend fun loadPlanningData() {
+ loading = true
+ runCatching {
+ coroutineScope {
+ val memJob = async(Dispatchers.IO) {
+ dependencies.membersApi.listMembers(clubId, showAll = true)
+ }
+ val intJob = async(Dispatchers.IO) {
+ dependencies.membersApi.listPlayInterests(clubId, seasonId, lineupHalf)
+ }
+ members = memJob.await()
+ interestedIds = intJob.await().map { it.memberId }.toSet()
+
+ val lineupJobs = teams.map { team ->
+ async(Dispatchers.IO) {
+ runCatching {
+ team.id to dependencies.clubTeamsApi.getLineup(team.id, lineupHalf)
+ }.getOrElse { team.id to emptyList() }
+ }
+ }
+ val lineups = lineupJobs.awaitAll()
+ assignments = TeamPlanningLogic.normalizeAssignments(
+ lineups.flatMap { (teamId, rows) ->
+ rows.sortedBy { it.position }.mapIndexed { idx, row ->
+ PlanningAssignment(teamId = teamId, memberId = row.memberId, position = idx + 1)
+ }
+ },
+ )
+ }
+ }.onFailure { ex ->
+ if (ex !is CancellationException) {
+ info = ex.message ?: t("mobile.teamLoadError", "Laden fehlgeschlagen")
+ }
+ }
+ loading = false
+ }
+
+ LaunchedEffect(clubId, seasonId, lineupHalf, teams.map { it.id }.sorted().joinToString(",")) {
+ loadPlanningData()
+ }
+
+ val poolMembers = remember(members, interestedIds, poolSearch) {
+ val q = poolSearch.trim().lowercase()
+ members.filter { it.id in interestedIds && it.active }
+ .filter {
+ if (q.isEmpty()) true
+ else "${it.firstName} ${it.lastName}".lowercase().contains(q)
+ }
+ .sortedWith(compareBy({ it.lastName.lowercase() }, { it.firstName.lowercase() }))
+ }
+
+ val assignedIds = remember(assignments) { assignments.map { it.memberId }.toSet() }
+ val unassignedPool = remember(poolMembers, assignedIds) {
+ poolMembers.filter { it.id !in assignedIds }
+ }
+
+ val selectableForInterest = remember(members, interestedIds, poolSearch) {
+ val q = poolSearch.trim().lowercase()
+ members.filter { m ->
+ m.active && m.testMembership != true && m.id !in interestedIds &&
+ (q.isEmpty() || "${m.firstName} ${m.lastName}".lowercase().contains(q))
+ }.sortedWith(compareBy({ it.lastName.lowercase() }, { it.firstName.lowercase() }))
+ }
+
+ fun persistTeam(teamId: Int, nextAssignments: List, onDone: () -> Unit = {}) {
+ val team = teams.find { it.id == teamId } ?: return
+ val draft = drafts[teamId] ?: return
+ scope.launch {
+ val byId = members.associateBy { it.id }
+ runCatching {
+ val orderedMembers = TeamPlanningLogic.teamLineupMembers(nextAssignments, teamId, byId)
+ val gap = TeamPlanningLogic.lineupGapOk(orderedMembers) { hi, lo ->
+ t("mobile.lineupGapWarn", "QTTR-Abstand >30: $hi über $lo")
+ }
+ if (gap != null) {
+ Toast.makeText(context, gap, Toast.LENGTH_LONG).show()
+ return@launch
+ }
+ val items = orderedMembers.mapIndexed { i, m -> TeamLineupAssignmentItem(m.id, i + 1) }
+ withContext(Dispatchers.IO) {
+ dependencies.clubTeamsApi.updateClubTeam(
+ teamId,
+ ClubTeamUpdateBody(
+ name = draft.name.trim(),
+ leagueId = team.leagueId,
+ seasonId = team.seasonId ?: seasonId,
+ teamGender = draft.teamGender,
+ teamAgeGroup = draft.teamAgeGroup,
+ plannedLeagueName = draft.plannedLeagueName.trim().ifBlank { null },
+ ),
+ )
+ dependencies.clubTeamsApi.updateLineup(
+ teamId,
+ TeamLineupUpdateBody(assignments = items, lineupHalf = lineupHalf),
+ )
+ }
+ assignments = TeamPlanningLogic.normalizeAssignments(nextAssignments)
+ onTeamsChanged()
+ onDone()
+ }.onFailure { ex ->
+ if (ex !is CancellationException) info = ex.message
+ }
+ }
+ }
+
+ Column(modifier.fillMaxSize()) {
+ Text(
+ t("teamManagement.planningSubtitle", "Spieler dem Pool „Möchte spielen“ zuordnen und auf Mannschaften verteilen."),
+ style = MaterialTheme.typography.caption,
+ color = MaterialTheme.colors.onSurface.copy(alpha = 0.78f),
+ )
+ Spacer(Modifier.height(8.dp))
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp), verticalAlignment = Alignment.CenterVertically) {
+ Text(t("common.period", "Halbserie"), style = MaterialTheme.typography.body2)
+ listOf("first_half" to "VR", "second_half" to "RR").forEach { (v, label) ->
+ OutlinedButton(
+ onClick = { lineupHalf = v },
+ enabled = !loading && lineupHalf != v,
+ ) { Text(label) }
+ }
+ Spacer(Modifier.weight(1f))
+ OutlinedButton(onClick = { scope.launch { loadPlanningData() } }, enabled = !loading) {
+ Text(t("teamManagement.refreshStats", "Aktualisieren"))
+ }
+ }
+
+ if (loading) {
+ CircularProgressIndicator(Modifier.padding(16.dp))
+ } else {
+ LazyColumn(
+ Modifier
+ .weight(1f)
+ .fillMaxWidth(),
+ verticalArrangement = Arrangement.spacedBy(12.dp),
+ ) {
+ item {
+ Text(t("teamManagement.playersWantToPlay", "Möchte spielen (Pool)"), fontWeight = FontWeight.SemiBold)
+ OutlinedTextField(
+ value = poolSearch,
+ onValueChange = { poolSearch = it },
+ modifier = Modifier.fillMaxWidth(),
+ singleLine = true,
+ label = { Text(t("teamManagement.searchMembers", "Mitglieder suchen")) },
+ )
+ Text(
+ t("mobile.teamPlanningUnassigned", "Noch keiner Mannschaft zugeordnet") + ": ${unassignedPool.size}",
+ style = MaterialTheme.typography.caption,
+ )
+ }
+ items(unassignedPool, key = { it.id }) { m ->
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) {
+ Column(Modifier.weight(1f)) {
+ Text("${m.firstName} ${m.lastName}", fontWeight = FontWeight.Medium)
+ }
+ if (canWrite) {
+ var addMenu by remember(key1 = m.id) { mutableStateOf(false) }
+ Box {
+ OutlinedButton(onClick = { addMenu = true }) {
+ Text(t("mobile.teamPlanningAssign", "Zu Mannschaft …"))
+ }
+ DropdownMenu(expanded = addMenu, onDismissRequest = { addMenu = false }) {
+ teams.forEach { team ->
+ val draft = drafts[team.id] ?: return@forEach
+ val pseudo = team.copy(
+ name = draft.name,
+ plannedLeagueName = draft.plannedLeagueName.ifBlank { null },
+ teamGender = draft.teamGender,
+ teamAgeGroup = draft.teamAgeGroup,
+ )
+ val ok = TeamPlanningLogic.isEligible(m, pseudo, seasonLabel)
+ DropdownMenuItem(
+ onClick = {
+ addMenu = false
+ if (!ok) {
+ Toast.makeText(
+ context,
+ t(
+ "mobile.teamPlanningNotEligible",
+ "Mitglied passt nicht zu Alters-/Geschlechtsklasse dieser Mannschaft.",
+ ),
+ Toast.LENGTH_LONG,
+ ).show()
+ return@DropdownMenuItem
+ }
+ val next = TeamPlanningLogic.assignToTeamEnd(assignments, team.id, m.id)
+ val gapMembers = TeamPlanningLogic.teamLineupMembers(next, team.id, membersById)
+ val gap = TeamPlanningLogic.lineupGapOk(gapMembers) { hi, lo ->
+ t("mobile.lineupGapWarn", "QTTR-Abstand >30: $hi über $lo")
+ }
+ if (gap != null) {
+ Toast.makeText(context, gap, Toast.LENGTH_LONG).show()
+ return@DropdownMenuItem
+ }
+ persistTeam(team.id, next)
+ },
+ enabled = ok,
+ ) {
+ Text(team.name.ifBlank { "#${team.id}" })
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ item {
+ Divider()
+ Text(t("teamManagement.markAsInterested", "Als interessiert markieren"), fontWeight = FontWeight.SemiBold)
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
+ Box(Modifier.weight(1f)) {
+ OutlinedButton(
+ onClick = { addInterestMenu = true },
+ enabled = canWrite && !markingInterest,
+ modifier = Modifier.fillMaxWidth(),
+ ) {
+ Text(
+ addInterestMemberId?.let { id ->
+ membersById[id]?.let { "${it.firstName} ${it.lastName}" }
+ } ?: t("teamManagement.selectMember", "Mitglied wählen"),
+ )
+ }
+ DropdownMenu(expanded = addInterestMenu, onDismissRequest = { addInterestMenu = false }) {
+ selectableForInterest.take(400).forEach { m ->
+ DropdownMenuItem(
+ onClick = {
+ addInterestMemberId = m.id
+ addInterestMenu = false
+ },
+ ) { Text("${m.firstName} ${m.lastName}") }
+ }
+ }
+ }
+ Button(
+ onClick = {
+ val mid = addInterestMemberId ?: return@Button
+ scope.launch {
+ markingInterest = true
+ runCatching {
+ withContext(Dispatchers.IO) {
+ dependencies.membersApi.setPlayInterest(
+ clubId,
+ MemberPlayInterestSetBody(
+ memberId = mid,
+ seasonId = seasonId,
+ lineupHalf = lineupHalf,
+ interested = true,
+ ),
+ )
+ }
+ interestedIds = interestedIds + mid
+ addInterestMemberId = null
+ }.onFailure { if (it !is CancellationException) info = it.message }
+ markingInterest = false
+ }
+ },
+ enabled = canWrite && addInterestMemberId != null && !markingInterest,
+ ) {
+ Text(if (markingInterest) "…" else t("teamManagement.markAsInterested", "Interesse speichern"))
+ }
+ }
+ }
+
+ item {
+ Divider()
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) {
+ Text(t("teamManagement.planningTitle", "Planung"), fontWeight = FontWeight.SemiBold)
+ if (canWrite) {
+ Button(
+ onClick = {
+ scope.launch {
+ runCatching {
+ val nextIndex = teams.size + 1
+ withContext(Dispatchers.IO) {
+ dependencies.clubTeamsApi.createClubTeam(
+ clubId,
+ ClubTeamCreateBody(
+ name = t("teamManagement.teamName", "Mannschaft") + " $nextIndex",
+ leagueId = null,
+ seasonId = seasonId,
+ teamGender = "open",
+ teamAgeGroup = "adult",
+ plannedLeagueName = null,
+ ),
+ )
+ }
+ onTeamsChanged()
+ }.onFailure { if (it !is CancellationException) info = it.message }
+ }
+ },
+ ) {
+ Text(t("teamManagement.addPlanningTeam", "Mannschaft hinzufügen"))
+ }
+ }
+ }
+ }
+
+ items(teams, key = { it.id }) { team ->
+ val teamId = team.id
+ val draft = drafts[teamId] ?: return@items
+ CardTeamPlanningBlock(
+ team = team,
+ draft = draft,
+ onDraftChange = { nd -> drafts[teamId] = nd },
+ assignments = assignments,
+ membersById = membersById,
+ canWrite = canWrite,
+ t = t,
+ onPersistLineup = { next -> persistTeam(teamId, next) },
+ onSaveTeamMeta = {
+ val fa = filterAssignmentsForTeamEligibility(
+ teamId,
+ assignments,
+ teams,
+ drafts,
+ membersById,
+ seasonLabel,
+ )
+ persistTeam(teamId, fa)
+ },
+ onMoveInTeam = { memberId, dir ->
+ val next = TeamPlanningLogic.moveWithinTeam(assignments, teamId, memberId, dir)
+ if (next != null) persistTeam(teamId, next)
+ },
+ onRemoveMember = { memberId ->
+ val next = TeamPlanningLogic.removeFromTeam(assignments, teamId, memberId)
+ persistTeam(teamId, next)
+ },
+ onOpenEditor = { onOpenTeamEditor(teamId) },
+ onDeleteRequest = { deleteTeamId = teamId },
+ poolAddCandidates = unassignedPool.filter { u ->
+ val pseudo = team.copy(
+ name = draft.name,
+ plannedLeagueName = draft.plannedLeagueName.ifBlank { null },
+ teamGender = draft.teamGender,
+ teamAgeGroup = draft.teamAgeGroup,
+ )
+ TeamPlanningLogic.isEligible(u, pseudo, seasonLabel)
+ },
+ )
+ }
+ }
+ }
+ }
+
+ deleteTeamId?.let { tid ->
+ AlertDialog(
+ onDismissRequest = { deleteTeamId = null },
+ title = { Text(t("mobile.teamDeleteTitle", "Mannschaft löschen?")) },
+ text = { Text(teams.find { it.id == tid }?.name.orEmpty()) },
+ confirmButton = {
+ TextButton(
+ onClick = {
+ deleteTeamId = null
+ scope.launch {
+ runCatching {
+ withContext(Dispatchers.IO) { dependencies.clubTeamsApi.deleteClubTeam(tid) }
+ onTeamsChanged()
+ }.onFailure { if (it !is CancellationException) info = it.message }
+ }
+ },
+ ) { Text(t("common.delete", "Löschen")) }
+ },
+ dismissButton = { TextButton(onClick = { deleteTeamId = null }) { Text(t("common.cancel", "Abbrechen")) } },
+ )
+ }
+
+ info?.let { msg ->
+ AlertDialog(
+ onDismissRequest = { info = null },
+ title = { Text(t("common.error", "Fehler")) },
+ text = { Text(msg) },
+ confirmButton = { TextButton(onClick = { info = null }) { Text(t("common.ok", "OK")) } },
+ )
+ }
+}
+
+@Composable
+private fun CardTeamPlanningBlock(
+ team: ClubTeamDto,
+ draft: TeamDraft,
+ onDraftChange: (TeamDraft) -> Unit,
+ assignments: List,
+ membersById: Map,
+ canWrite: Boolean,
+ t: (String, String) -> String,
+ onPersistLineup: (List) -> Unit,
+ onSaveTeamMeta: () -> Unit,
+ onMoveInTeam: (Int, Int) -> Unit,
+ onRemoveMember: (Int) -> Unit,
+ onOpenEditor: () -> Unit,
+ onDeleteRequest: () -> Unit,
+ poolAddCandidates: List,
+) {
+ val teamId = team.id
+ val ordered = TeamPlanningLogic.teamLineupMembers(assignments, teamId, membersById)
+ var metaMenu by remember { mutableStateOf(false) }
+ var addMemberMenu by remember { mutableStateOf(false) }
+ val cardContext = LocalContext.current
+
+ Column(Modifier.fillMaxWidth()) {
+ Text(team.name.ifBlank { "#$teamId" }, fontWeight = FontWeight.Bold, style = MaterialTheme.typography.subtitle1)
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
+ OutlinedButton(onClick = onOpenEditor) {
+ Text(t("teamManagement.openInWorkspace", "Im Editor öffnen"))
+ }
+ if (canWrite) {
+ OutlinedButton(onClick = onDeleteRequest) {
+ Text(t("common.delete", "Löschen"))
+ }
+ }
+ }
+ Spacer(Modifier.height(6.dp))
+ OutlinedTextField(
+ value = draft.name,
+ onValueChange = { onDraftChange(draft.copy(name = it)) },
+ label = { Text(t("teamManagement.teamName", "Mannschaft")) },
+ modifier = Modifier.fillMaxWidth(),
+ enabled = canWrite,
+ singleLine = true,
+ )
+ OutlinedTextField(
+ value = draft.plannedLeagueName,
+ onValueChange = { onDraftChange(draft.copy(plannedLeagueName = it)) },
+ label = { Text(t("teamManagement.plannedLeague", "Geplante Liga")) },
+ modifier = Modifier.fillMaxWidth(),
+ enabled = canWrite,
+ singleLine = true,
+ )
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(8.dp)) {
+ Box {
+ OutlinedButton(onClick = { metaMenu = true }, enabled = canWrite) {
+ Text(t("mobile.teamAgeShort", "AK") + ": ${draft.teamAgeGroup}")
+ }
+ DropdownMenu(expanded = metaMenu, onDismissRequest = { metaMenu = false }) {
+ listOf("adult", "J19", "J17", "J15", "J13", "J11").forEach { a ->
+ DropdownMenuItem(
+ onClick = {
+ metaMenu = false
+ onDraftChange(draft.copy(teamAgeGroup = a))
+ onSaveTeamMeta()
+ },
+ ) { Text(a) }
+ }
+ }
+ }
+ Box {
+ var gMenu by remember { mutableStateOf(false) }
+ OutlinedButton(onClick = { gMenu = true }, enabled = canWrite) {
+ Text(t("mobile.teamGenderShort", "GK") + ": ${draft.teamGender}")
+ }
+ DropdownMenu(expanded = gMenu, onDismissRequest = { gMenu = false }) {
+ listOf("open", "female").forEach { g ->
+ DropdownMenuItem(
+ onClick = {
+ gMenu = false
+ onDraftChange(draft.copy(teamGender = g))
+ onSaveTeamMeta()
+ },
+ ) { Text(g) }
+ }
+ }
+ }
+ }
+ if (canWrite) {
+ Button(
+ onClick = { onSaveTeamMeta() },
+ modifier = Modifier.fillMaxWidth(),
+ ) {
+ Text(t("mobile.teamPlanningSaveTeam", "Mannschaft speichern"))
+ }
+ }
+ Spacer(Modifier.height(4.dp))
+ Text(t("teamManagement.selectedLineup", "Meldung"), fontWeight = FontWeight.Medium)
+ ordered.forEachIndexed { index, m ->
+ Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) {
+ Text("${index + 1}. ${m.firstName} ${m.lastName}")
+ if (canWrite) {
+ Row {
+ TextButton(onClick = { onMoveInTeam(m.id, -1) }, enabled = index > 0) { Text("↑") }
+ TextButton(onClick = { onMoveInTeam(m.id, 1) }, enabled = index < ordered.lastIndex) { Text("↓") }
+ TextButton(onClick = { onRemoveMember(m.id) }) { Text("−") }
+ }
+ }
+ }
+ }
+ if (canWrite && poolAddCandidates.isNotEmpty()) {
+ Box {
+ OutlinedButton(onClick = { addMemberMenu = true }) {
+ Text(t("mobile.teamLineupAddToLineup", "Hinzufügen"))
+ }
+ DropdownMenu(expanded = addMemberMenu, onDismissRequest = { addMemberMenu = false }) {
+ poolAddCandidates.forEach { m ->
+ DropdownMenuItem(
+ onClick = {
+ addMemberMenu = false
+ val next = TeamPlanningLogic.assignToTeamEnd(assignments, teamId, m.id)
+ val gapMembers = TeamPlanningLogic.teamLineupMembers(next, teamId, membersById)
+ val gap = TeamPlanningLogic.lineupGapOk(gapMembers) { hi, lo ->
+ t("mobile.lineupGapWarn", "QTTR-Abstand >30: $hi über $lo")
+ }
+ if (gap != null) {
+ Toast.makeText(cardContext, gap, Toast.LENGTH_LONG).show()
+ } else {
+ onPersistLineup(next)
+ }
+ },
+ ) { Text("${m.firstName} ${m.lastName}") }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TournamentsScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TournamentsScreen.kt
similarity index 97%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TournamentsScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TournamentsScreen.kt
index 82e5a58d..f367df3f 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TournamentsScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TournamentsScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@@ -40,15 +40,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.shared.api.models.AddMiniChampionshipBody
-import de.tt_tagebuch.shared.api.models.AddStandardTournamentBody
-import de.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
-import de.tt_tagebuch.shared.api.models.OfficialParticipationEntryDto
-import de.tt_tagebuch.shared.api.models.canReadTournaments
-import de.tt_tagebuch.shared.api.models.canWriteTournaments
-import de.tt_tagebuch.shared.i18n.MobileStrings
-import de.tt_tagebuch.shared.state.ClubTournamentDisplayFilter
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.shared.api.models.AddMiniChampionshipBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AddStandardTournamentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipationEntryDto
+import de.tsschulz.tt_tagebuch.shared.api.models.canReadTournaments
+import de.tsschulz.tt_tagebuch.shared.api.models.canWriteTournaments
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.shared.state.ClubTournamentDisplayFilter
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TrainingStatsScreen.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TrainingStatsScreen.kt
similarity index 99%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TrainingStatsScreen.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TrainingStatsScreen.kt
index 9b508101..48e2d177 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TrainingStatsScreen.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TrainingStatsScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement
@@ -42,11 +42,11 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
-import de.tt_tagebuch.app.AppDependencies
-import de.tt_tagebuch.app.pdf.shareFileWithMime
-import de.tt_tagebuch.app.stats.TrainingStatsDerived
-import de.tt_tagebuch.shared.api.models.TrainingStatsMember
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.app.AppDependencies
+import de.tsschulz.tt_tagebuch.app.pdf.shareFileWithMime
+import de.tsschulz.tt_tagebuch.app.stats.TrainingStatsDerived
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsMember
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TtTheme.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TtTheme.kt
similarity index 95%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TtTheme.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TtTheme.kt
index 921da94b..f8d79b6a 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/ui/TtTheme.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/TtTheme.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.material.MaterialTheme
import androidx.compose.material.lightColors
diff --git a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/util/OfficialTournamentEligibility.kt b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/util/OfficialTournamentEligibility.kt
similarity index 96%
rename from mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/util/OfficialTournamentEligibility.kt
rename to mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/util/OfficialTournamentEligibility.kt
index 7ab27980..73df0d50 100644
--- a/mobile-app/composeApp/src/androidMain/kotlin/de/tt_tagebuch/app/util/OfficialTournamentEligibility.kt
+++ b/mobile-app/composeApp/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/app/util/OfficialTournamentEligibility.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.app.util
+package de.tsschulz.tt_tagebuch.app.util
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.OfficialParsedCompetitionDto
-import de.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedCompetitionDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
import java.text.Collator
import java.text.SimpleDateFormat
import java.util.Calendar
diff --git a/mobile-app/composeApp/src/androidMain/res/drawable-hdpi/ic_launcher_foreground.png b/mobile-app/composeApp/src/androidMain/res/drawable-hdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..a9085e87
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/drawable-hdpi/ic_launcher_foreground.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/drawable-mdpi/ic_launcher_foreground.png b/mobile-app/composeApp/src/androidMain/res/drawable-mdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..bda9983e
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/drawable-mdpi/ic_launcher_foreground.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/drawable-xhdpi/ic_launcher_foreground.png b/mobile-app/composeApp/src/androidMain/res/drawable-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..de1a8be8
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/drawable-xhdpi/ic_launcher_foreground.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/drawable-xxhdpi/ic_launcher_foreground.png b/mobile-app/composeApp/src/androidMain/res/drawable-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..bb16233c
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/drawable-xxhdpi/ic_launcher_foreground.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/drawable-xxxhdpi/ic_launcher_foreground.png b/mobile-app/composeApp/src/androidMain/res/drawable-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 00000000..c74c07f8
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/drawable-xxxhdpi/ic_launcher_foreground.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/mobile-app/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..a8a8fa55
--- /dev/null
+++ b/mobile-app/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/mobile-app/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..a8a8fa55
--- /dev/null
+++ b/mobile-app/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png b/mobile-app/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 00000000..b83228c3
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png b/mobile-app/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 00000000..b83228c3
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png b/mobile-app/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 00000000..ca80baf2
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png b/mobile-app/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 00000000..ca80baf2
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png b/mobile-app/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 00000000..ad066afa
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png b/mobile-app/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..ad066afa
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png b/mobile-app/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..ab867730
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png b/mobile-app/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..ab867730
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png b/mobile-app/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 00000000..e60e7b76
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png b/mobile-app/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 00000000..e60e7b76
Binary files /dev/null and b/mobile-app/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/mobile-app/composeApp/src/androidMain/res/values/ic_launcher_colors.xml b/mobile-app/composeApp/src/androidMain/res/values/ic_launcher_colors.xml
new file mode 100644
index 00000000..2b187a4b
--- /dev/null
+++ b/mobile-app/composeApp/src/androidMain/res/values/ic_launcher_colors.xml
@@ -0,0 +1,5 @@
+
+
+
+ #FFFFFF
+
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/App.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/App.kt
similarity index 72%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/App.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/App.kt
index 27d0ce0e..86a0c26a 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/App.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/App.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.app
+package de.tsschulz.tt_tagebuch.app
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import cafe.adriel.voyager.navigator.Navigator
-import de.tt_tagebuch.app.ui.LoginScreen
+import de.tsschulz.tt_tagebuch.app.ui.LoginScreen
@Composable
fun App() {
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/di/KoinModule.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/di/KoinModule.kt
new file mode 100644
index 00000000..43c6abc4
--- /dev/null
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/di/KoinModule.kt
@@ -0,0 +1,16 @@
+package de.tsschulz.tt_tagebuch.app.di
+
+import de.tsschulz.tt_tagebuch.app.viewmodel.DiaryScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.LoginScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.MemberScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.ParticipantScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.MemberEditScreenModel
+import org.koin.dsl.module
+
+val appModule = module {
+ factory { LoginScreenModel(get()) }
+ factory { DiaryScreenModel(get()) }
+ factory { MemberScreenModel(get()) } // Updated
+ factory { ParticipantScreenModel(get()) }
+ factory { MemberEditScreenModel(get()) }
+}
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/DiaryScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/DiaryScreen.kt
similarity index 91%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/DiaryScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/DiaryScreen.kt
index 67e51a94..63cd57f3 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/DiaryScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/DiaryScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@@ -13,8 +13,8 @@ import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
-import de.tt_tagebuch.app.viewmodel.DiaryScreenModel
-import de.tt_tagebuch.app.viewmodel.DiaryState
+import de.tsschulz.tt_tagebuch.app.viewmodel.DiaryScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.DiaryState
class DiaryScreen(private val clubId: Int) : Screen {
@Composable
@@ -65,7 +65,7 @@ class DiaryScreen(private val clubId: Int) : Screen {
}
@Composable
- fun DiaryDateItem(date: de.tt_tagebuch.shared.models.DiaryDate, onClick: () -> Unit) {
+ fun DiaryDateItem(date: de.tsschulz.tt_tagebuch.shared.models.DiaryDate, onClick: () -> Unit) {
Card(
modifier = Modifier.fillMaxWidth().padding(8.dp).clickable { onClick() },
elevation = 4.dp
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/HomeScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/HomeScreen.kt
similarity index 97%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/HomeScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/HomeScreen.kt
index 378f6c65..69da030d 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/HomeScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/HomeScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/LoginScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/LoginScreen.kt
similarity index 92%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/LoginScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/LoginScreen.kt
index b9c764f8..d31004ca 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/LoginScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/LoginScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
@@ -10,9 +10,9 @@ import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
import cafe.adriel.voyager.navigator.LocalNavigator
-import de.tt_tagebuch.app.viewmodel.LoginScreenModel
-import de.tt_tagebuch.app.viewmodel.LoginState
-import de.tt_tagebuch.app.ui.HomeScreen
+import de.tsschulz.tt_tagebuch.app.viewmodel.LoginScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.LoginState
+import de.tsschulz.tt_tagebuch.app.ui.HomeScreen
class LoginScreen : Screen {
@Composable
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberDetailScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberDetailScreen.kt
similarity index 97%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberDetailScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberDetailScreen.kt
index 0cc3d461..0ab5dd38 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberDetailScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberDetailScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
@@ -16,7 +16,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.navigator.LocalNavigator
-import de.tt_tagebuch.shared.models.Member
+import de.tsschulz.tt_tagebuch.shared.models.Member
class MemberDetailScreen(private val member: Member) : Screen {
@Composable
@@ -121,7 +121,7 @@ class MemberDetailScreen(private val member: Member) : Screen {
}
@Composable
- fun ContactRow(contact: de.tt_tagebuch.shared.models.MemberContact) {
+ fun ContactRow(contact: de.tsschulz.tt_tagebuch.shared.models.MemberContact) {
Row(
modifier = Modifier.fillMaxWidth().padding(vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberEditScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberEditScreen.kt
similarity index 96%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberEditScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberEditScreen.kt
index 68b24d3c..ee3215ff 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberEditScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberEditScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
@@ -16,10 +16,10 @@ import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
import cafe.adriel.voyager.navigator.LocalNavigator
-import de.tt_tagebuch.app.viewmodel.MemberEditScreenModel
-import de.tt_tagebuch.app.viewmodel.MemberEditState
-import de.tt_tagebuch.shared.models.Member
-import de.tt_tagebuch.shared.models.MemberContact
+import de.tsschulz.tt_tagebuch.app.viewmodel.MemberEditScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.MemberEditState
+import de.tsschulz.tt_tagebuch.shared.models.Member
+import de.tsschulz.tt_tagebuch.shared.models.MemberContact
class MemberEditScreen(private val clubId: Int, private val member: Member? = null) : Screen {
@Composable
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberScreen.kt
similarity index 91%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberScreen.kt
index 92e60b72..131e6361 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/MemberScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/MemberScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@@ -13,8 +13,8 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
-import de.tt_tagebuch.app.viewmodel.MemberScreenModel
-import de.tt_tagebuch.app.viewmodel.MemberState
+import de.tsschulz.tt_tagebuch.app.viewmodel.MemberScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.MemberState
import cafe.adriel.voyager.navigator.LocalNavigator
@@ -70,7 +70,7 @@ class MemberScreen(private val clubId: Int) : Screen {
@OptIn(ExperimentalMaterialApi::class)
@Composable
- fun MemberItem(member: de.tt_tagebuch.shared.models.Member, onClick: () -> Unit) {
+ fun MemberItem(member: de.tsschulz.tt_tagebuch.shared.models.Member, onClick: () -> Unit) {
ListItem(
modifier = Modifier.clickable { onClick() },
text = { Text("${member.firstName} ${member.lastName}") },
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/ParticipantScreen.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ParticipantScreen.kt
similarity index 95%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/ParticipantScreen.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ParticipantScreen.kt
index c5aaea89..be041eb6 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/ui/ParticipantScreen.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/ui/ParticipantScreen.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.app.ui
+package de.tsschulz.tt_tagebuch.app.ui
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
@@ -14,8 +14,8 @@ import androidx.compose.ui.unit.dp
import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.koin.getScreenModel
import cafe.adriel.voyager.navigator.LocalNavigator
-import de.tt_tagebuch.app.viewmodel.ParticipantScreenModel
-import de.tt_tagebuch.app.viewmodel.ParticipantState
+import de.tsschulz.tt_tagebuch.app.viewmodel.ParticipantScreenModel
+import de.tsschulz.tt_tagebuch.app.viewmodel.ParticipantState
class ParticipantScreen(private val dateId: Int, private val dateStr: String) : Screen {
@Composable
@@ -69,7 +69,7 @@ class ParticipantScreen(private val dateId: Int, private val dateStr: String) :
@Composable
fun ParticipantItem(
- participant: de.tt_tagebuch.shared.models.Participant,
+ participant: de.tsschulz.tt_tagebuch.shared.models.Participant,
onStatusChange: (String) -> Unit
) {
val member = participant.member
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/DiaryScreenModel.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/DiaryScreenModel.kt
similarity index 89%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/DiaryScreenModel.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/DiaryScreenModel.kt
index 31957c81..e9123aa2 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/DiaryScreenModel.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/DiaryScreenModel.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.app.viewmodel
+package de.tsschulz.tt_tagebuch.app.viewmodel
import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
-import de.tt_tagebuch.shared.models.DiaryDate
-import de.tt_tagebuch.shared.repository.DiaryRepository
+import de.tsschulz.tt_tagebuch.shared.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.repository.DiaryRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/LoginScreenModel.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/LoginScreenModel.kt
similarity index 91%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/LoginScreenModel.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/LoginScreenModel.kt
index 5f377106..d459ddb4 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/LoginScreenModel.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/LoginScreenModel.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.app.viewmodel
+package de.tsschulz.tt_tagebuch.app.viewmodel
import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
-import de.tt_tagebuch.shared.repository.AuthRepository
+import de.tsschulz.tt_tagebuch.shared.repository.AuthRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/MemberEditScreenModel.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/MemberEditScreenModel.kt
similarity index 88%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/MemberEditScreenModel.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/MemberEditScreenModel.kt
index 72fd4e7d..367ff373 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/MemberEditScreenModel.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/MemberEditScreenModel.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.app.viewmodel
+package de.tsschulz.tt_tagebuch.app.viewmodel
import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
-import de.tt_tagebuch.shared.models.Member
-import de.tt_tagebuch.shared.repository.MemberRepository
+import de.tsschulz.tt_tagebuch.shared.models.Member
+import de.tsschulz.tt_tagebuch.shared.repository.MemberRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/MemberScreenModel.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/MemberScreenModel.kt
similarity index 87%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/MemberScreenModel.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/MemberScreenModel.kt
index 7378e46d..87b8db27 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/MemberScreenModel.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/MemberScreenModel.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.app.viewmodel
+package de.tsschulz.tt_tagebuch.app.viewmodel
import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
-import de.tt_tagebuch.shared.models.Member
-import de.tt_tagebuch.shared.repository.DiaryRepository
+import de.tsschulz.tt_tagebuch.shared.models.Member
+import de.tsschulz.tt_tagebuch.shared.repository.DiaryRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/ParticipantScreenModel.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/ParticipantScreenModel.kt
similarity index 90%
rename from mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/ParticipantScreenModel.kt
rename to mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/ParticipantScreenModel.kt
index d06b6cfe..80dcb0cf 100644
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/viewmodel/ParticipantScreenModel.kt
+++ b/mobile-app/composeApp/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/app/viewmodel/ParticipantScreenModel.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.app.viewmodel
+package de.tsschulz.tt_tagebuch.app.viewmodel
import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
-import de.tt_tagebuch.shared.models.Participant
-import de.tt_tagebuch.shared.repository.DiaryRepository
+import de.tsschulz.tt_tagebuch.shared.models.Participant
+import de.tsschulz.tt_tagebuch.shared.repository.DiaryRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
diff --git a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/di/KoinModule.kt b/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/di/KoinModule.kt
deleted file mode 100644
index 44829e87..00000000
--- a/mobile-app/composeApp/src/commonMain/kotlin/de/tt_tagebuch/app/di/KoinModule.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package de.tt_tagebuch.app.di
-
-import de.tt_tagebuch.app.viewmodel.DiaryScreenModel
-import de.tt_tagebuch.app.viewmodel.LoginScreenModel
-import de.tt_tagebuch.app.viewmodel.MemberScreenModel
-import de.tt_tagebuch.app.viewmodel.ParticipantScreenModel
-import de.tt_tagebuch.app.viewmodel.MemberEditScreenModel
-import org.koin.dsl.module
-
-val appModule = module {
- factory { LoginScreenModel(get()) }
- factory { DiaryScreenModel(get()) }
- factory { MemberScreenModel(get()) } // Updated
- factory { ParticipantScreenModel(get()) }
- factory { MemberEditScreenModel(get()) }
-}
diff --git a/mobile-app/scripts/install-debug-emulator.sh b/mobile-app/scripts/install-debug-emulator.sh
index 86394655..9d1356f4 100755
--- a/mobile-app/scripts/install-debug-emulator.sh
+++ b/mobile-app/scripts/install-debug-emulator.sh
@@ -3,7 +3,7 @@
# Nutzung: von mobile-app/ aus: ./scripts/install-debug-emulator.sh
set -euo pipefail
cd "$(dirname "$0")/.."
-adb uninstall de.tt_tagebuch.app 2>/dev/null || true
+adb uninstall de.tsschulz.tt_tagebuch 2>/dev/null || true
./gradlew :composeApp:clean :composeApp:installDebug \
-PbackendBaseUrl=http://10.0.2.2:3005 \
--no-configuration-cache
diff --git a/mobile-app/shared/build.gradle.kts b/mobile-app/shared/build.gradle.kts
index 1da29f70..705d1a9c 100644
--- a/mobile-app/shared/build.gradle.kts
+++ b/mobile-app/shared/build.gradle.kts
@@ -47,7 +47,7 @@ kotlin {
}
android {
- namespace = "de.tt_tagebuch.shared"
+ namespace = "de.tsschulz.tt_tagebuch.shared"
compileSdk = libs.versions.android.compileSdk.get().toInt()
defaultConfig {
minSdk = libs.versions.android.minSdk.get().toInt()
diff --git a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/api/http/AndroidHttpClientEngineFactory.kt b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/AndroidHttpClientEngineFactory.kt
similarity index 82%
rename from mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/api/http/AndroidHttpClientEngineFactory.kt
rename to mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/AndroidHttpClientEngineFactory.kt
index 203e4060..7388615f 100644
--- a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/api/http/AndroidHttpClientEngineFactory.kt
+++ b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/AndroidHttpClientEngineFactory.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.engine.okhttp.OkHttp
diff --git a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidClubStorage.kt b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidClubStorage.kt
similarity index 96%
rename from mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidClubStorage.kt
rename to mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidClubStorage.kt
index 81535cbb..ab3362a0 100644
--- a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidClubStorage.kt
+++ b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidClubStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
import android.content.Context
import androidx.security.crypto.EncryptedSharedPreferences
diff --git a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidLanguageStorage.kt b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidLanguageStorage.kt
similarity index 94%
rename from mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidLanguageStorage.kt
rename to mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidLanguageStorage.kt
index b3f9dbf2..21e4e200 100644
--- a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidLanguageStorage.kt
+++ b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidLanguageStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
import android.content.Context
import kotlinx.coroutines.Dispatchers
diff --git a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidTokenStorage.kt b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidTokenStorage.kt
similarity index 97%
rename from mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidTokenStorage.kt
rename to mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidTokenStorage.kt
index 2e68f440..8212e2d3 100644
--- a/mobile-app/shared/src/androidMain/kotlin/de/tt_tagebuch/shared/state/AndroidTokenStorage.kt
+++ b/mobile-app/shared/src/androidMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AndroidTokenStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
import android.content.Context
import androidx.security.crypto.EncryptedSharedPreferences
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/AccidentApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/AccidentApi.kt
similarity index 67%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/AccidentApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/AccidentApi.kt
index 33f3db19..416f6c41 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/AccidentApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/AccidentApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.AccidentReportDto
-import de.tt_tagebuch.shared.api.models.CreateAccidentBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.AccidentReportDto
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateAccidentBody
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.post
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiClient.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiClient.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiClient.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiClient.kt
index 14a9c12c..041e8af7 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiClient.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiClient.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.models.*
+import de.tsschulz.tt_tagebuch.shared.models.*
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.plugins.contentnegotiation.*
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiConfig.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiConfig.kt
similarity index 91%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiConfig.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiConfig.kt
index 92630eba..98150e30 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiConfig.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiConfig.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
data class ApiConfig(
val baseUrl: String,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiLogsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiLogsApi.kt
similarity index 74%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiLogsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiLogsApi.kt
index bfaa7996..b36f8da9 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ApiLogsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ApiLogsApi.kt
@@ -1,11 +1,11 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.ApiLogDetailDto
-import de.tt_tagebuch.shared.api.models.ApiLogDetailEnvelopeDto
-import de.tt_tagebuch.shared.api.models.ApiLogsListEnvelopeDto
-import de.tt_tagebuch.shared.api.models.ApiLogsListPageDto
-import de.tt_tagebuch.shared.api.models.SchedulerLastExecutionsEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogDetailDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogDetailEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogsListEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogsListPageDto
+import de.tsschulz.tt_tagebuch.shared.api.models.SchedulerLastExecutionsEnvelopeDto
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/AuthApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/AuthApi.kt
similarity index 66%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/AuthApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/AuthApi.kt
index 3711d7af..3d7178c8 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/AuthApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/AuthApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.LoginRequest
-import de.tt_tagebuch.shared.api.models.LoginResponse
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.LoginRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.LoginResponse
import io.ktor.client.call.body
import io.ktor.client.request.post
import io.ktor.client.request.setBody
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/BillingApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/BillingApi.kt
similarity index 81%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/BillingApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/BillingApi.kt
index 178eba82..6282fda2 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/BillingApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/BillingApi.kt
@@ -1,14 +1,14 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.BillingCreateRunBody
-import de.tt_tagebuch.shared.api.models.BillingCreateRunEnvelope
-import de.tt_tagebuch.shared.api.models.BillingGenerateBody
-import de.tt_tagebuch.shared.api.models.BillingGenerateEnvelope
-import de.tt_tagebuch.shared.api.models.BillingHoursPreviewEnvelope
-import de.tt_tagebuch.shared.api.models.BillingRunsEnvelope
-import de.tt_tagebuch.shared.api.models.BillingSettingsEnvelope
-import de.tt_tagebuch.shared.api.models.BillingTemplatesEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingCreateRunBody
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingCreateRunEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingGenerateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingGenerateEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingHoursPreviewEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingRunsEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingSettingsEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.BillingTemplatesEnvelope
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.forms.MultiPartFormDataContent
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/CalendarHolidayApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/CalendarHolidayApi.kt
similarity index 67%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/CalendarHolidayApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/CalendarHolidayApi.kt
index 9205abe5..c920ef56 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/CalendarHolidayApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/CalendarHolidayApi.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.ClubCalendarHolidaysEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubCalendarHolidaysEnvelope
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClickTtAccountApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClickTtAccountApi.kt
similarity index 71%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClickTtAccountApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClickTtAccountApi.kt
index b569d748..14df3cfd 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClickTtAccountApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClickTtAccountApi.kt
@@ -1,12 +1,12 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.ClickTtAccountEnvelope
-import de.tt_tagebuch.shared.api.models.ClickTtAccountSaveResponse
-import de.tt_tagebuch.shared.api.models.ClickTtAccountStatusDto
-import de.tt_tagebuch.shared.api.models.ClickTtAccountUpsertBody
-import de.tt_tagebuch.shared.api.models.ClickTtVerifyBody
-import de.tt_tagebuch.shared.api.models.ClickTtVerifyResponseDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountSaveResponse
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountStatusDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtAccountUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtVerifyBody
+import de.tsschulz.tt_tagebuch.shared.api.models.ClickTtVerifyResponseDto
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubApprovalsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubApprovalsApi.kt
similarity index 70%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubApprovalsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubApprovalsApi.kt
index 1aeacba3..9ea9917d 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubApprovalsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubApprovalsApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.ClubAccessDecisionBody
-import de.tt_tagebuch.shared.api.models.PendingUserClubJoinDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubAccessDecisionBody
+import de.tsschulz.tt_tagebuch.shared.api.models.PendingUserClubJoinDto
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.post
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubTeamsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubTeamsApi.kt
similarity index 78%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubTeamsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubTeamsApi.kt
index d70561f1..eb681b54 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubTeamsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubTeamsApi.kt
@@ -1,12 +1,12 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.ClubLeagueOptionDto
-import de.tt_tagebuch.shared.api.models.ClubTeamCreateBody
-import de.tt_tagebuch.shared.api.models.ClubTeamDto
-import de.tt_tagebuch.shared.api.models.ClubTeamLineupRowDto
-import de.tt_tagebuch.shared.api.models.ClubTeamUpdateBody
-import de.tt_tagebuch.shared.api.models.TeamLineupUpdateBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubLeagueOptionDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamCreateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamLineupRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamUpdateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamLineupUpdateBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubsApi.kt
similarity index 81%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubsApi.kt
index a7f6ecca..0c60c193 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ClubsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ClubsApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.Club
-import de.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.Club
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.post
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryApi.kt
similarity index 77%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryApi.kt
index 8bc22f21..b51a5587 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryApi.kt
@@ -1,21 +1,21 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.AddDiaryNoteRequest
-import de.tt_tagebuch.shared.api.models.AddFreeformActivityBody
-import de.tt_tagebuch.shared.api.models.AddDiaryPlanGroupActivityRequest
-import de.tt_tagebuch.shared.api.models.CreateDiaryDateRequest
-import de.tt_tagebuch.shared.api.models.CreateDiaryPlanActivityRequest
-import de.tt_tagebuch.shared.api.models.DiaryDate
-import de.tt_tagebuch.shared.api.models.DiaryDateActivityItem
-import de.tt_tagebuch.shared.api.models.DiaryFreeformActivity
-import de.tt_tagebuch.shared.api.models.DiaryNote
-import de.tt_tagebuch.shared.api.models.DiaryTag
-import de.tt_tagebuch.shared.api.models.LinkDiaryTagRequest
-import de.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityOrderRequest
-import de.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityRequest
-import de.tt_tagebuch.shared.api.models.UpdateDiaryTimesRequest
-import de.tt_tagebuch.shared.api.models.UpdateNestedPlanGroupActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.AddDiaryNoteRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.AddFreeformActivityBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AddDiaryPlanGroupActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateDiaryDateRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateDiaryPlanActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDateActivityItem
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryFreeformActivity
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryNote
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTag
+import de.tsschulz.tt_tagebuch.shared.api.models.LinkDiaryTagRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityOrderRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateDiaryTimesRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateNestedPlanGroupActivityRequest
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryMemberActivitiesApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryMemberActivitiesApi.kt
similarity index 78%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryMemberActivitiesApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryMemberActivitiesApi.kt
index 4ea3dd01..c42179ef 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryMemberActivitiesApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryMemberActivitiesApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.AddMemberActivityParticipantsBody
-import de.tt_tagebuch.shared.api.models.DiaryMemberActivityLink
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.AddMemberActivityParticipantsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberActivityLink
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryMemberApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryMemberApi.kt
similarity index 82%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryMemberApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryMemberApi.kt
index 2a2d5a72..9fbe9402 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/DiaryMemberApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/DiaryMemberApi.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.AddDiaryMemberNoteBody
-import de.tt_tagebuch.shared.api.models.DiaryMemberNoteDto
-import de.tt_tagebuch.shared.api.models.DiaryMemberTagLinkDto
-import de.tt_tagebuch.shared.api.models.DiaryMemberTagMutationBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.AddDiaryMemberNoteBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberTagLinkDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberTagMutationBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/GroupApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/GroupApi.kt
similarity index 73%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/GroupApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/GroupApi.kt
index 046ba852..e2a5e6e9 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/GroupApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/GroupApi.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.CreateTrainingGroupBody
-import de.tt_tagebuch.shared.api.models.DeleteTrainingGroupBody
-import de.tt_tagebuch.shared.api.models.DiaryPlanGroup
-import de.tt_tagebuch.shared.api.models.UpdateTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DeleteTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryPlanGroup
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTrainingGroupBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MatchesApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MatchesApi.kt
similarity index 78%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MatchesApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MatchesApi.kt
index e8ce3684..724049a6 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MatchesApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MatchesApi.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.LeaguePlayerStatDto
-import de.tt_tagebuch.shared.api.models.LeagueTableRowDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchDto
-import de.tt_tagebuch.shared.api.models.UpdateMatchPlayersBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.LeaguePlayerStatDto
+import de.tsschulz.tt_tagebuch.shared.api.models.LeagueTableRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateMatchPlayersBody
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberActivitiesApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberActivitiesApi.kt
similarity index 73%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberActivitiesApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberActivitiesApi.kt
index 26905f19..94a23163 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberActivitiesApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberActivitiesApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.MemberActivityStatDto
-import de.tt_tagebuch.shared.api.models.MemberLastParticipationDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberActivityStatDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberLastParticipationDto
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberGroupPhotosApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberGroupPhotosApi.kt
similarity index 87%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberGroupPhotosApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberGroupPhotosApi.kt
index f185b4b7..219b99c9 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberGroupPhotosApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberGroupPhotosApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
-import de.tt_tagebuch.shared.api.models.MemberGroupPhotoListResponse
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberGroupPhotoListResponse
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.forms.MultiPartFormDataContent
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberOrdersApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberOrdersApi.kt
similarity index 74%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberOrdersApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberOrdersApi.kt
index 6f6f4ad8..d32dff69 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberOrdersApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberOrdersApi.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.MemberOrderCreateBody
-import de.tt_tagebuch.shared.api.models.MemberOrderEnvelope
-import de.tt_tagebuch.shared.api.models.MemberOrderPatchBody
-import de.tt_tagebuch.shared.api.models.MemberOrdersListEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberOrderCreateBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberOrderEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberOrderPatchBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberOrdersListEnvelope
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.patch
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberTransferConfigApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberTransferConfigApi.kt
similarity index 73%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberTransferConfigApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberTransferConfigApi.kt
index d73b8bfc..7cbc4241 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MemberTransferConfigApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MemberTransferConfigApi.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.ApiException
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.MemberTransferConfigEnvelope
-import de.tt_tagebuch.shared.api.models.MemberTransferConfigSaveBody
+import de.tsschulz.tt_tagebuch.shared.api.http.ApiException
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferConfigEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferConfigSaveBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MembersApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MembersApi.kt
similarity index 71%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MembersApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MembersApi.kt
index 9dc4becd..3b5e59b4 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MembersApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MembersApi.kt
@@ -1,10 +1,12 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.MemberQuickMutationResponse
-import de.tt_tagebuch.shared.api.models.MemberSetBody
-import de.tt_tagebuch.shared.api.models.MemberTransferRunBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberPlayInterestRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberPlayInterestSetBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberQuickMutationResponse
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberSetBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferRunBody
import io.ktor.client.call.body
import io.ktor.client.request.forms.formData
import io.ktor.client.request.get
@@ -25,6 +27,19 @@ class MembersApi(
return client.http.get("/api/clubmembers/get/$clubId/$showAll").body()
}
+ suspend fun listPlayInterests(clubId: Int, seasonId: Int, lineupHalf: String): List {
+ return client.http.get("/api/clubmembers/play-interest/$clubId") {
+ parameter("seasonId", seasonId)
+ parameter("lineupHalf", lineupHalf)
+ }.body()
+ }
+
+ suspend fun setPlayInterest(clubId: Int, body: MemberPlayInterestSetBody) {
+ client.http.post("/api/clubmembers/play-interest/$clubId") {
+ setBody(body)
+ }
+ }
+
suspend fun setMember(clubId: Int, body: MemberSetBody) {
client.http.post("/api/clubmembers/set/$clubId") {
setBody(body)
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MyTischtennisApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MyTischtennisApi.kt
similarity index 71%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MyTischtennisApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MyTischtennisApi.kt
index 34efe91b..3149b395 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/MyTischtennisApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/MyTischtennisApi.kt
@@ -1,18 +1,18 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.MyTtConfigureLeagueBody
-import de.tt_tagebuch.shared.api.models.MyTtConfigureTeamBody
-import de.tt_tagebuch.shared.api.models.MyTtFetchJobEnvelopeDto
-import de.tt_tagebuch.shared.api.models.MyTtFetchJobStartDto
-import de.tt_tagebuch.shared.api.models.MyTtFetchTeamDataBody
-import de.tt_tagebuch.shared.api.models.MyTtParseUrlBody
-import de.tt_tagebuch.shared.api.models.MyTischtennisAccountEnvelope
-import de.tt_tagebuch.shared.api.models.MyTischtennisAccountSaveResponse
-import de.tt_tagebuch.shared.api.models.MyTischtennisAccountUpsertBody
-import de.tt_tagebuch.shared.api.models.MyTischtennisStatusDto
-import de.tt_tagebuch.shared.api.models.MyTischtennisVerifyBody
-import de.tt_tagebuch.shared.api.models.MyTischtennisVerifyResponseDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTtConfigureLeagueBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTtConfigureTeamBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTtFetchJobEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTtFetchJobStartDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTtFetchTeamDataBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTtParseUrlBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisAccountEnvelope
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisAccountSaveResponse
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisAccountUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisStatusDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisVerifyBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MyTischtennisVerifyResponseDto
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/OfficialTournamentsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/OfficialTournamentsApi.kt
similarity index 79%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/OfficialTournamentsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/OfficialTournamentsApi.kt
index 3c40ebc5..16407c2b 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/OfficialTournamentsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/OfficialTournamentsApi.kt
@@ -1,15 +1,15 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
-import de.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
-import de.tt_tagebuch.shared.api.models.OfficialPatchTournamentBody
-import de.tt_tagebuch.shared.api.models.OfficialParticipantStatusBody
-import de.tt_tagebuch.shared.api.models.OfficialParticipantStatusResponseDto
-import de.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
-import de.tt_tagebuch.shared.api.models.OfficialTournamentUploadResultDto
-import de.tt_tagebuch.shared.api.models.OfficialUpsertParticipationBody
-import de.tt_tagebuch.shared.api.models.OfficialUpsertParticipationResponseDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParsedTournamentEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialPatchTournamentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipantStatusBody
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipantStatusResponseDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialTournamentUploadResultDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialUpsertParticipationBody
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialUpsertParticipationResponseDto
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.forms.MultiPartFormDataContent
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ParticipantsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ParticipantsApi.kt
similarity index 77%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ParticipantsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ParticipantsApi.kt
index b3d7db90..dccae92f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ParticipantsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ParticipantsApi.kt
@@ -1,11 +1,11 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
-import de.tt_tagebuch.shared.api.models.ParticipantGroupRequest
-import de.tt_tagebuch.shared.api.models.ParticipantMutationRequest
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
+import de.tsschulz.tt_tagebuch.shared.api.models.ParticipantGroupRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.ParticipantMutationRequest
import io.ktor.client.call.body
-import de.tt_tagebuch.shared.api.models.ParticipantStatusRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.ParticipantStatusRequest
import io.ktor.client.request.get
import io.ktor.client.request.post
import io.ktor.client.request.put
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PermissionsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PermissionsApi.kt
similarity index 74%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PermissionsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PermissionsApi.kt
index 4db4331e..bd333211 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PermissionsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PermissionsApi.kt
@@ -1,13 +1,13 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.AvailableRoleDto
-import de.tt_tagebuch.shared.api.models.ClubPermissionMemberDto
-import de.tt_tagebuch.shared.api.models.PermissionResourceDto
-import de.tt_tagebuch.shared.api.models.UpdateUserApprovedBody
-import de.tt_tagebuch.shared.api.models.UpdateUserCustomPermissionsBody
-import de.tt_tagebuch.shared.api.models.UpdateUserRoleBody
-import de.tt_tagebuch.shared.api.models.UserClubPermissions
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.AvailableRoleDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubPermissionMemberDto
+import de.tsschulz.tt_tagebuch.shared.api.models.PermissionResourceDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateUserApprovedBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateUserCustomPermissionsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateUserRoleBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UserClubPermissions
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PredefinedActivitiesApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PredefinedActivitiesApi.kt
similarity index 83%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PredefinedActivitiesApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PredefinedActivitiesApi.kt
index a7d19d2d..23725f12 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PredefinedActivitiesApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PredefinedActivitiesApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.PredefinedActivityDto
-import de.tt_tagebuch.shared.api.models.PredefinedActivityUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.PredefinedActivityDto
+import de.tsschulz.tt_tagebuch.shared.api.models.PredefinedActivityUpsertBody
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PublicAuthApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PublicAuthApi.kt
similarity index 72%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PublicAuthApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PublicAuthApi.kt
index 0fe77243..6ce42991 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/PublicAuthApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/PublicAuthApi.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.PublicHttpClient
-import de.tt_tagebuch.shared.api.models.ForgotPasswordRequest
-import de.tt_tagebuch.shared.api.models.MessageResponse
-import de.tt_tagebuch.shared.api.models.RegisterRequest
-import de.tt_tagebuch.shared.api.models.ResetPasswordRequest
+import de.tsschulz.tt_tagebuch.shared.api.http.PublicHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.ForgotPasswordRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.MessageResponse
+import de.tsschulz.tt_tagebuch.shared.api.models.RegisterRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.ResetPasswordRequest
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.post
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/RolePermissionMatrix.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/RolePermissionMatrix.kt
similarity index 99%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/RolePermissionMatrix.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/RolePermissionMatrix.kt
index 7252f708..6a45bd52 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/RolePermissionMatrix.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/RolePermissionMatrix.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
/**
* Rollen-Standardrechte (analog [backend/services/permissionService.js] ROLE_PERMISSIONS)
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ScheduleLogic.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ScheduleLogic.kt
similarity index 91%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ScheduleLogic.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ScheduleLogic.kt
index c99bfae9..a2498722 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/ScheduleLogic.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/ScheduleLogic.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.models.ClubTeamDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchScope
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchScope
object ScheduleLogic {
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SeasonsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SeasonsApi.kt
similarity index 68%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SeasonsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SeasonsApi.kt
index 9feb5042..ee86a486 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SeasonsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SeasonsApi.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.SeasonDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.SeasonDto
import io.ktor.client.call.body
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SessionApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SessionApi.kt
similarity index 58%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SessionApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SessionApi.kt
index 89c64003..c0eb07be 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SessionApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SessionApi.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.SessionStatusResponse
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.SessionStatusResponse
import io.ktor.client.call.body
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SocketService.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SocketService.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SocketService.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SocketService.kt
index 9d7a54f5..6fde3192 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/SocketService.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/SocketService.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
import io.socket.client.IO
import io.socket.client.Socket
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TeamDocumentsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TeamDocumentsApi.kt
similarity index 89%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TeamDocumentsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TeamDocumentsApi.kt
index c6dee8e1..7f21d6dd 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TeamDocumentsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TeamDocumentsApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.TeamDocumentDto
-import de.tt_tagebuch.shared.api.models.TeamDocumentParseEnvelopeDto
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TeamDocumentParseEnvelopeDto
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.forms.MultiPartFormDataContent
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TournamentsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TournamentsApi.kt
similarity index 76%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TournamentsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TournamentsApi.kt
index 9b39dd46..9dbbdcdb 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TournamentsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TournamentsApi.kt
@@ -1,49 +1,49 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.AddExternalTournamentParticipantBody
-import de.tt_tagebuch.shared.api.models.AddMiniChampionshipBody
-import de.tt_tagebuch.shared.api.models.AddStandardTournamentBody
-import de.tt_tagebuch.shared.api.models.AddTournamentClassBody
-import de.tt_tagebuch.shared.api.models.AssignParticipantToGroupBody
-import de.tt_tagebuch.shared.api.models.CreateTournamentPairingBody
-import de.tt_tagebuch.shared.api.models.GaveUpFlagBody
-import de.tt_tagebuch.shared.api.models.InternalTournamentDetailDto
-import de.tt_tagebuch.shared.api.models.InternalTournamentStatsDto
-import de.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
-import de.tt_tagebuch.shared.api.models.MergeTournamentPoolBody
-import de.tt_tagebuch.shared.api.models.RemoveExternalTournamentParticipantBody
-import de.tt_tagebuch.shared.api.models.ResetTournamentPoolBody
-import de.tt_tagebuch.shared.api.models.SeededFlagBody
-import de.tt_tagebuch.shared.api.models.SetTournamentModusBody
-import de.tt_tagebuch.shared.api.models.TournamentAddInternalParticipantBody
-import de.tt_tagebuch.shared.api.models.TournamentAddMatchResultBody
-import de.tt_tagebuch.shared.api.models.TournamentAdvanceStageBody
-import de.tt_tagebuch.shared.api.models.TournamentClassDto
-import de.tt_tagebuch.shared.api.models.TournamentCleanupOrphanedBody
-import de.tt_tagebuch.shared.api.models.TournamentClubTournamentBody
-import de.tt_tagebuch.shared.api.models.TournamentCreateGroupMatchesBody
-import de.tt_tagebuch.shared.api.models.TournamentCreateGroupsBody
-import de.tt_tagebuch.shared.api.models.TournamentCreateGroupsPerClassBody
-import de.tt_tagebuch.shared.api.models.TournamentDeleteKnockoutBody
-import de.tt_tagebuch.shared.api.models.TournamentDeleteMatchResultBody
-import de.tt_tagebuch.shared.api.models.TournamentExternalParticipantRowDto
-import de.tt_tagebuch.shared.api.models.TournamentFinishMatchBody
-import de.tt_tagebuch.shared.api.models.TournamentGetExternalParticipantsBody
-import de.tt_tagebuch.shared.api.models.TournamentGetParticipantsBody
-import de.tt_tagebuch.shared.api.models.TournamentManualAssignGroupsBody
-import de.tt_tagebuch.shared.api.models.TournamentMatchActiveBody
-import de.tt_tagebuch.shared.api.models.TournamentMatchDto
-import de.tt_tagebuch.shared.api.models.TournamentMatchTableBody
-import de.tt_tagebuch.shared.api.models.TournamentParticipantRowDto
-import de.tt_tagebuch.shared.api.models.TournamentRemoveInternalParticipantBody
-import de.tt_tagebuch.shared.api.models.TournamentReopenMatchBody
-import de.tt_tagebuch.shared.api.models.TournamentStartKnockoutBody
-import de.tt_tagebuch.shared.api.models.TournamentUpsertStagesBody
-import de.tt_tagebuch.shared.api.models.UpdateParticipantClassBody
-import de.tt_tagebuch.shared.api.models.UpdateTournamentClassBody
-import de.tt_tagebuch.shared.api.models.UpdateTournamentMetaBody
-import de.tt_tagebuch.shared.api.models.UpdateTournamentPairingBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.AddExternalTournamentParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AddMiniChampionshipBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AddStandardTournamentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AddTournamentClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.AssignParticipantToGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTournamentPairingBody
+import de.tsschulz.tt_tagebuch.shared.api.models.GaveUpFlagBody
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentDetailDto
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentStatsDto
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MergeTournamentPoolBody
+import de.tsschulz.tt_tagebuch.shared.api.models.RemoveExternalTournamentParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.ResetTournamentPoolBody
+import de.tsschulz.tt_tagebuch.shared.api.models.SeededFlagBody
+import de.tsschulz.tt_tagebuch.shared.api.models.SetTournamentModusBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentAddInternalParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentAddMatchResultBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentAdvanceStageBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentClassDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentCleanupOrphanedBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentClubTournamentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentCreateGroupMatchesBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentCreateGroupsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentCreateGroupsPerClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentDeleteKnockoutBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentDeleteMatchResultBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentExternalParticipantRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentFinishMatchBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentGetExternalParticipantsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentGetParticipantsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentManualAssignGroupsBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentMatchActiveBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentMatchTableBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentParticipantRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentRemoveInternalParticipantBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentReopenMatchBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentStartKnockoutBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TournamentUpsertStagesBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateParticipantClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTournamentClassBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTournamentMetaBody
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTournamentPairingBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingCancellationApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingCancellationApi.kt
similarity index 78%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingCancellationApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingCancellationApi.kt
index 7f14d322..fd8b66d2 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingCancellationApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingCancellationApi.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.TrainingCancellationDto
-import de.tt_tagebuch.shared.api.models.TrainingCancellationUpsertBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingCancellationDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingCancellationUpsertBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingGroupsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingGroupsApi.kt
similarity index 85%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingGroupsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingGroupsApi.kt
index 59bf13f5..01a417da 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingGroupsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingGroupsApi.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.CreateClubTrainingGroupBody
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.UpdateClubTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateClubTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateClubTrainingGroupBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingStatsApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingStatsApi.kt
similarity index 61%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingStatsApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingStatsApi.kt
index 32883341..5ca6188d 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingStatsApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingStatsApi.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.TrainingStats
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStats
import io.ktor.client.call.body
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingTimesApi.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingTimesApi.kt
similarity index 75%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingTimesApi.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingTimesApi.kt
index bba1b851..7dbaef85 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/TrainingTimesApi.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/TrainingTimesApi.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.api
+package de.tsschulz.tt_tagebuch.shared.api
-import de.tt_tagebuch.shared.api.http.AuthedHttpClient
-import de.tt_tagebuch.shared.api.models.CreateTrainingTimeBody
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.TrainingTimeDto
-import de.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.http.AuthedHttpClient
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingTimeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.get
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/ApiErrorMessage.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/ApiErrorMessage.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/ApiErrorMessage.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/ApiErrorMessage.kt
index 92de3c25..d9632d63 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/ApiErrorMessage.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/ApiErrorMessage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
import io.ktor.client.statement.HttpResponse
import io.ktor.client.statement.bodyAsText
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/ApiException.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/ApiException.kt
similarity index 67%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/ApiException.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/ApiException.kt
index f1201652..7756d639 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/ApiException.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/ApiException.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
class ApiException(
val statusCode: Int,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/AuthedHttpClient.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/AuthedHttpClient.kt
similarity index 92%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/AuthedHttpClient.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/AuthedHttpClient.kt
index a161999a..78c80b33 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/AuthedHttpClient.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/AuthedHttpClient.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
-import de.tt_tagebuch.shared.api.ApiConfig
-import de.tt_tagebuch.shared.state.TokenProvider
+import de.tsschulz.tt_tagebuch.shared.api.ApiConfig
+import de.tsschulz.tt_tagebuch.shared.state.TokenProvider
import io.ktor.client.HttpClient
import io.ktor.client.plugins.DefaultRequest
import io.ktor.client.plugins.HttpResponseValidator
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/HttpClientEngineFactory.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/HttpClientEngineFactory.kt
similarity index 71%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/HttpClientEngineFactory.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/HttpClientEngineFactory.kt
index 173ea2a8..2a0d3f25 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/HttpClientEngineFactory.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/HttpClientEngineFactory.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
import io.ktor.client.engine.HttpClientEngine
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/PublicHttpClient.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/PublicHttpClient.kt
similarity index 94%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/PublicHttpClient.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/PublicHttpClient.kt
index 440a405d..1ea242de 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/http/PublicHttpClient.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/PublicHttpClient.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
-import de.tt_tagebuch.shared.api.ApiConfig
+import de.tsschulz.tt_tagebuch.shared.api.ApiConfig
import io.ktor.client.HttpClient
import io.ktor.client.plugins.DefaultRequest
import io.ktor.client.plugins.HttpResponseValidator
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/AccidentDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/AccidentDtos.kt
similarity index 91%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/AccidentDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/AccidentDtos.kt
index dc6653c7..c124fbf5 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/AccidentDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/AccidentDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/BillingDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/BillingDtos.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/BillingDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/BillingDtos.kt
index 9f9a0253..5c209f80 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/BillingDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/BillingDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/CalendarDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/CalendarDtos.kt
similarity index 93%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/CalendarDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/CalendarDtos.kt
index ff41f4b5..9220b97b 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/CalendarDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/CalendarDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Club.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Club.kt
similarity index 97%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Club.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Club.kt
index a0082993..96a7e352 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Club.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Club.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ClubAdmin.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ClubAdmin.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ClubAdmin.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ClubAdmin.kt
index 965f0b74..365061a2 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ClubAdmin.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ClubAdmin.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ClubPermissionHelpers.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ClubPermissionHelpers.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ClubPermissionHelpers.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ClubPermissionHelpers.kt
index 7cfae0ca..0cc381ea 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ClubPermissionHelpers.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ClubPermissionHelpers.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.booleanOrNull
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryActivityExtras.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryActivityExtras.kt
similarity index 93%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryActivityExtras.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryActivityExtras.kt
index ccdd7ae3..3f1cdf02 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryActivityExtras.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryActivityExtras.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryDate.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryDate.kt
similarity index 95%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryDate.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryDate.kt
index a9f030b6..29898155 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryDate.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryDate.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryDateActivityItem.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryDateActivityItem.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryDateActivityItem.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryDateActivityItem.kt
index 9ee5a75f..515a955d 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryDateActivityItem.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryDateActivityItem.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryImagePaths.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryImagePaths.kt
similarity index 93%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryImagePaths.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryImagePaths.kt
index 7e12fc05..8de06cdb 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryImagePaths.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryImagePaths.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
private val imageIdInPath = Regex("/image/(\\d+)")
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryMemberDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryMemberDtos.kt
similarity index 95%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryMemberDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryMemberDtos.kt
index 30343a56..67242ec9 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryMemberDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryMemberDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryPlanDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryPlanDtos.kt
similarity index 97%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryPlanDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryPlanDtos.kt
index 5714314e..ae008d15 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryPlanDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryPlanDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryTrainingParticipant.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryTrainingParticipant.kt
similarity index 93%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryTrainingParticipant.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryTrainingParticipant.kt
index 3e8c4d69..5ea3a951 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/DiaryTrainingParticipant.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/DiaryTrainingParticipant.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/FlexibleBooleanSerializers.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/FlexibleBooleanSerializers.kt
similarity index 97%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/FlexibleBooleanSerializers.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/FlexibleBooleanSerializers.kt
index 099f8cd2..a56e12ba 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/FlexibleBooleanSerializers.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/FlexibleBooleanSerializers.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/IntegrationAccountDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/IntegrationAccountDtos.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/IntegrationAccountDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/IntegrationAccountDtos.kt
index 274d4c82..780b2872 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/IntegrationAccountDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/IntegrationAccountDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/LoginRequest.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/LoginRequest.kt
similarity index 72%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/LoginRequest.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/LoginRequest.kt
index a79d4943..489f4e98 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/LoginRequest.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/LoginRequest.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/LoginResponse.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/LoginResponse.kt
similarity index 68%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/LoginResponse.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/LoginResponse.kt
index b06ad700..98dc75d2 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/LoginResponse.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/LoginResponse.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Member.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Member.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Member.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Member.kt
index 81f2fbeb..f8a6e23a 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Member.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Member.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberActivityDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberActivityDtos.kt
similarity index 90%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberActivityDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberActivityDtos.kt
index c7324ccb..b8e1893f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberActivityDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberActivityDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonArray
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberContactDto.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberContactDto.kt
similarity index 85%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberContactDto.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberContactDto.kt
index dbf47730..40a7764e 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberContactDto.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberContactDto.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberGroupPhotoDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberGroupPhotoDtos.kt
similarity index 90%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberGroupPhotoDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberGroupPhotoDtos.kt
index de3e531f..04d642c5 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberGroupPhotoDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberGroupPhotoDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberImageDto.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberImageDto.kt
similarity index 82%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberImageDto.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberImageDto.kt
index 150d0099..cd1f6dba 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberImageDto.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberImageDto.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberOrderDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberOrderDtos.kt
similarity index 97%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberOrderDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberOrderDtos.kt
index d7482d17..2bcc968e 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberOrderDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberOrderDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberQuickMutationResponse.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberQuickMutationResponse.kt
similarity index 79%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberQuickMutationResponse.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberQuickMutationResponse.kt
index 99edba53..8b9ccabd 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberQuickMutationResponse.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberQuickMutationResponse.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberSetBody.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberSetBody.kt
similarity index 95%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberSetBody.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberSetBody.kt
index 0ed94bd4..7fab9c9f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberSetBody.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberSetBody.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberSetMappers.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberSetMappers.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberSetMappers.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberSetMappers.kt
index 04ded9c6..869d2a5b 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberSetMappers.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberSetMappers.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
fun Member.toSetBody(
firstname: String,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberTransferDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberTransferDtos.kt
similarity index 97%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberTransferDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberTransferDtos.kt
index 7be1844f..5095c72a 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/MemberTransferDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/MemberTransferDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/OfficialTournamentWorkspaceDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/OfficialTournamentWorkspaceDtos.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/OfficialTournamentWorkspaceDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/OfficialTournamentWorkspaceDtos.kt
index 65edfeaf..ace65274 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/OfficialTournamentWorkspaceDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/OfficialTournamentWorkspaceDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ParticipantStatusRequest.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ParticipantStatusRequest.kt
similarity index 72%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ParticipantStatusRequest.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ParticipantStatusRequest.kt
index 6c1cd74f..89f5b476 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/ParticipantStatusRequest.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/ParticipantStatusRequest.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/PredefinedActivityDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/PredefinedActivityDtos.kt
similarity index 94%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/PredefinedActivityDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/PredefinedActivityDtos.kt
index 07819a9d..f2415a39 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/PredefinedActivityDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/PredefinedActivityDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/PublicAuthDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/PublicAuthDtos.kt
similarity index 88%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/PublicAuthDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/PublicAuthDtos.kt
index 03b3dee4..590812fc 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/PublicAuthDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/PublicAuthDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Schedule.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Schedule.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Schedule.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Schedule.kt
index 71e01c94..30dd3d8f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/Schedule.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/Schedule.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
-import de.tt_tagebuch.shared.api.serialization.LenientIntListSerializer
+import de.tsschulz.tt_tagebuch.shared.api.serialization.LenientIntListSerializer
import kotlinx.serialization.Serializable
@Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/SeasonDto.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/SeasonDto.kt
similarity index 72%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/SeasonDto.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/SeasonDto.kt
index 0fa220c3..65e5480d 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/SeasonDto.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/SeasonDto.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/SessionStatusResponse.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/SessionStatusResponse.kt
similarity index 75%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/SessionStatusResponse.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/SessionStatusResponse.kt
index f07120b2..a5a12a87 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/SessionStatusResponse.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/SessionStatusResponse.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TeamEditorModels.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TeamEditorModels.kt
similarity index 86%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TeamEditorModels.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TeamEditorModels.kt
index d7f32471..0675947e 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TeamEditorModels.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TeamEditorModels.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@@ -36,6 +36,23 @@ data class TeamLineupUpdateBody(
val lineupHalf: String,
)
+/** Zeile aus `GET /api/clubmembers/play-interest/:clubId` (Sequelize `toJSON`). */
+@Serializable
+data class MemberPlayInterestRowDto(
+ val memberId: Int,
+ val seasonId: Int? = null,
+ val lineupHalf: String? = null,
+ val interested: Boolean? = null,
+)
+
+@Serializable
+data class MemberPlayInterestSetBody(
+ val memberId: Int,
+ val seasonId: Int,
+ val lineupHalf: String,
+ val interested: Boolean = true,
+)
+
@Serializable
data class TeamDocumentDto(
val id: Int,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TournamentDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TournamentDtos.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TournamentDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TournamentDtos.kt
index 802752f5..d5532c41 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TournamentDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TournamentDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TournamentEditorDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TournamentEditorDtos.kt
similarity index 99%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TournamentEditorDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TournamentEditorDtos.kt
index 106f2114..026b1ff4 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TournamentEditorDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TournamentEditorDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TrainingGroupDtos.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TrainingGroupDtos.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TrainingGroupDtos.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TrainingGroupDtos.kt
index e0e09ab6..c4f6fe30 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TrainingGroupDtos.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TrainingGroupDtos.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TrainingStats.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TrainingStats.kt
similarity index 98%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TrainingStats.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TrainingStats.kt
index 4094b542..cba45caa 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/TrainingStats.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/TrainingStats.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/UserClubPermissions.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/UserClubPermissions.kt
similarity index 82%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/UserClubPermissions.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/UserClubPermissions.kt
index 903b258e..60e6b61f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/models/UserClubPermissions.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/models/UserClubPermissions.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.models
+package de.tsschulz.tt_tagebuch.shared.api.models
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/serialization/LenientIntListSerializer.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/serialization/LenientIntListSerializer.kt
similarity index 96%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/serialization/LenientIntListSerializer.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/serialization/LenientIntListSerializer.kt
index 0a05a0be..814a6235 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/api/serialization/LenientIntListSerializer.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/serialization/LenientIntListSerializer.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.serialization
+package de.tsschulz.tt_tagebuch.shared.api.serialization
import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.ListSerializer
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/di/Koin.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/di/Koin.kt
similarity index 71%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/di/Koin.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/di/Koin.kt
index f7989bc1..aad38d4d 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/di/Koin.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/di/Koin.kt
@@ -1,10 +1,10 @@
-package de.tt_tagebuch.shared.di
+package de.tsschulz.tt_tagebuch.shared.di
-import de.tt_tagebuch.shared.api.ApiClient
-import de.tt_tagebuch.shared.api.SocketService
-import de.tt_tagebuch.shared.repository.AuthRepository
-import de.tt_tagebuch.shared.repository.DiaryRepository
-import de.tt_tagebuch.shared.repository.MemberRepository
+import de.tsschulz.tt_tagebuch.shared.api.ApiClient
+import de.tsschulz.tt_tagebuch.shared.api.SocketService
+import de.tsschulz.tt_tagebuch.shared.repository.AuthRepository
+import de.tsschulz.tt_tagebuch.shared.repository.DiaryRepository
+import de.tsschulz.tt_tagebuch.shared.repository.MemberRepository
import org.koin.core.context.startKoin
import org.koin.dsl.KoinAppDeclaration
import org.koin.dsl.module
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/i18n/MobileStrings.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/i18n/MobileStrings.kt
similarity index 99%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/i18n/MobileStrings.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/i18n/MobileStrings.kt
index 2afa8c08..47901647 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/i18n/MobileStrings.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/i18n/MobileStrings.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.i18n
+package de.tsschulz.tt_tagebuch.shared.i18n
data class SupportedLanguage(val code: String, val label: String)
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/i18n/README.md b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/i18n/README.md
similarity index 100%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/i18n/README.md
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/i18n/README.md
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/models/Models.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/models/Models.kt
similarity index 97%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/models/Models.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/models/Models.kt
index e45b8e27..b7859e0d 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/models/Models.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/models/Models.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.models
+package de.tsschulz.tt_tagebuch.shared.models
import kotlinx.serialization.Serializable
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/AuthRepository.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/AuthRepository.kt
similarity index 71%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/AuthRepository.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/AuthRepository.kt
index 77dbd032..086d2cef 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/AuthRepository.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/AuthRepository.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.repository
+package de.tsschulz.tt_tagebuch.shared.repository
-import de.tt_tagebuch.shared.api.ApiClient
-import de.tt_tagebuch.shared.models.LoginResponse
+import de.tsschulz.tt_tagebuch.shared.api.ApiClient
+import de.tsschulz.tt_tagebuch.shared.models.LoginResponse
class AuthRepository(private val apiClient: ApiClient) {
suspend fun login(email: String, password: String): LoginResponse {
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/DiaryRepository.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/DiaryRepository.kt
similarity index 67%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/DiaryRepository.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/DiaryRepository.kt
index c82695e6..6c6ef5ab 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/DiaryRepository.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/DiaryRepository.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.repository
+package de.tsschulz.tt_tagebuch.shared.repository
-import de.tt_tagebuch.shared.api.ApiClient
-import de.tt_tagebuch.shared.api.SocketService
-import de.tt_tagebuch.shared.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.api.ApiClient
+import de.tsschulz.tt_tagebuch.shared.api.SocketService
+import de.tsschulz.tt_tagebuch.shared.models.DiaryDate
import kotlinx.coroutines.flow.Flow
import org.json.JSONObject
@@ -14,7 +14,7 @@ class DiaryRepository(
return apiClient.getDiaryDates(clubId)
}
- suspend fun getParticipants(dateId: Int): List {
+ suspend fun getParticipants(dateId: Int): List {
return apiClient.getDiaryParticipants(dateId)
}
@@ -22,7 +22,7 @@ class DiaryRepository(
return apiClient.updateParticipantStatus(dateId, memberId, status)
}
- suspend fun getMembers(clubId: Int): List {
+ suspend fun getMembers(clubId: Int): List {
return apiClient.getMembers(clubId)
}
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/MemberRepository.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/MemberRepository.kt
similarity index 75%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/MemberRepository.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/MemberRepository.kt
index 094cd8bd..2ef891a3 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/repository/MemberRepository.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/repository/MemberRepository.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.repository
+package de.tsschulz.tt_tagebuch.shared.repository
-import de.tt_tagebuch.shared.api.ApiClient
-import de.tt_tagebuch.shared.models.Member
-import de.tt_tagebuch.shared.models.MemberContact
+import de.tsschulz.tt_tagebuch.shared.api.ApiClient
+import de.tsschulz.tt_tagebuch.shared.models.Member
+import de.tsschulz.tt_tagebuch.shared.models.MemberContact
class MemberRepository(private val apiClient: ApiClient) {
suspend fun getMembers(clubId: Int): List {
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ApiLogsManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ApiLogsManager.kt
similarity index 92%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ApiLogsManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ApiLogsManager.kt
index e509ab49..9a32949a 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ApiLogsManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ApiLogsManager.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.ApiLogsApi
-import de.tt_tagebuch.shared.api.models.ApiLogDetailDto
-import de.tt_tagebuch.shared.api.models.ApiLogListRowDto
+import de.tsschulz.tt_tagebuch.shared.api.ApiLogsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogDetailDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ApiLogListRowDto
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthManager.kt
similarity index 93%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthManager.kt
index d4b44e1f..504ce780 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthManager.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.AuthApi
-import de.tt_tagebuch.shared.api.SessionApi
+import de.tsschulz.tt_tagebuch.shared.api.AuthApi
+import de.tsschulz.tt_tagebuch.shared.api.SessionApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthState.kt
similarity index 81%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthState.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthState.kt
index 4553c709..e292943f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthState.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthState.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
data class AuthState(
val token: String? = null,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthTokens.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthTokens.kt
similarity index 62%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthTokens.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthTokens.kt
index 33be167e..1b5740be 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/AuthTokens.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/AuthTokens.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
data class AuthTokens(
val token: String,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubInternalTournamentsManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubInternalTournamentsManager.kt
similarity index 92%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubInternalTournamentsManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubInternalTournamentsManager.kt
index 40bbf558..0b311435 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubInternalTournamentsManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubInternalTournamentsManager.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.TournamentsApi
-import de.tt_tagebuch.shared.api.models.InternalTournamentDetailDto
-import de.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
+import de.tsschulz.tt_tagebuch.shared.api.TournamentsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentDetailDto
+import de.tsschulz.tt_tagebuch.shared.api.models.InternalTournamentSummaryDto
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubManager.kt
similarity index 94%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubManager.kt
index b7385021..8933ed95 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubManager.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.ClubsApi
-import de.tt_tagebuch.shared.api.PermissionsApi
-import de.tt_tagebuch.shared.api.models.Club
-import de.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
+import de.tsschulz.tt_tagebuch.shared.api.ClubsApi
+import de.tsschulz.tt_tagebuch.shared.api.PermissionsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.Club
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateClubSettingsBody
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubState.kt
similarity index 57%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubState.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubState.kt
index e81ac88d..1a1c7fa7 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubState.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubState.kt
@@ -1,7 +1,7 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.models.Club
-import de.tt_tagebuch.shared.api.models.UserClubPermissions
+import de.tsschulz.tt_tagebuch.shared.api.models.Club
+import de.tsschulz.tt_tagebuch.shared.api.models.UserClubPermissions
data class ClubState(
val clubs: List = emptyList(),
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubStorage.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubStorage.kt
similarity index 72%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubStorage.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubStorage.kt
index 6e3800c2..86469bcf 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ClubStorage.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ClubStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
interface ClubStorage {
suspend fun loadCurrentClubId(): Int?
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/DiaryManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/DiaryManager.kt
similarity index 84%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/DiaryManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/DiaryManager.kt
index e27a6882..6212f9ef 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/DiaryManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/DiaryManager.kt
@@ -1,35 +1,35 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.AccidentApi
-import de.tt_tagebuch.shared.api.DiaryApi
-import de.tt_tagebuch.shared.api.DiaryMemberActivitiesApi
-import de.tt_tagebuch.shared.api.DiaryMemberApi
-import de.tt_tagebuch.shared.api.GroupApi
-import de.tt_tagebuch.shared.api.MemberGroupPhotosApi
-import de.tt_tagebuch.shared.api.ParticipantsApi
-import de.tt_tagebuch.shared.api.PredefinedActivitiesApi
-import de.tt_tagebuch.shared.api.models.AccidentReportDto
-import de.tt_tagebuch.shared.api.models.AddDiaryMemberNoteBody
-import de.tt_tagebuch.shared.api.models.CreateAccidentBody
-import de.tt_tagebuch.shared.api.models.DiaryMemberNoteDto
-import de.tt_tagebuch.shared.api.models.DiaryMemberTagLinkDto
-import de.tt_tagebuch.shared.api.models.DiaryMemberTagMutationBody
-import de.tt_tagebuch.shared.api.models.DiaryTag
-import de.tt_tagebuch.shared.api.models.PredefinedActivityDto
-import de.tt_tagebuch.shared.api.models.AddDiaryPlanGroupActivityRequest
-import de.tt_tagebuch.shared.api.models.CreateDiaryPlanActivityRequest
-import de.tt_tagebuch.shared.api.models.CreateTrainingGroupBody
-import de.tt_tagebuch.shared.api.models.DeleteTrainingGroupBody
-import de.tt_tagebuch.shared.api.models.DiaryDateActivityItem
-import de.tt_tagebuch.shared.api.models.DiaryDate
-import de.tt_tagebuch.shared.api.models.DiaryFreeformActivity
-import de.tt_tagebuch.shared.api.models.DiaryMemberActivityLink
-import de.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
-import de.tt_tagebuch.shared.api.models.DiaryPlanGroup
-import de.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
-import de.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityRequest
-import de.tt_tagebuch.shared.api.models.UpdateNestedPlanGroupActivityRequest
-import de.tt_tagebuch.shared.api.models.UpdateTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.AccidentApi
+import de.tsschulz.tt_tagebuch.shared.api.DiaryApi
+import de.tsschulz.tt_tagebuch.shared.api.DiaryMemberActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.DiaryMemberApi
+import de.tsschulz.tt_tagebuch.shared.api.GroupApi
+import de.tsschulz.tt_tagebuch.shared.api.MemberGroupPhotosApi
+import de.tsschulz.tt_tagebuch.shared.api.ParticipantsApi
+import de.tsschulz.tt_tagebuch.shared.api.PredefinedActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.models.AccidentReportDto
+import de.tsschulz.tt_tagebuch.shared.api.models.AddDiaryMemberNoteBody
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateAccidentBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberNoteDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberTagLinkDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberTagMutationBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTag
+import de.tsschulz.tt_tagebuch.shared.api.models.PredefinedActivityDto
+import de.tsschulz.tt_tagebuch.shared.api.models.AddDiaryPlanGroupActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateDiaryPlanActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DeleteTrainingGroupBody
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDateActivityItem
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryFreeformActivity
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryMemberActivityLink
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberGroupPhotoDto
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryPlanGroup
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryTrainingParticipant
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateDiaryPlanActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateNestedPlanGroupActivityRequest
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTrainingGroupBody
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/DiaryState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/DiaryState.kt
similarity index 57%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/DiaryState.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/DiaryState.kt
index d310e07d..f841fdab 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/DiaryState.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/DiaryState.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.models.DiaryDate
+import de.tsschulz.tt_tagebuch.shared.api.models.DiaryDate
data class DiaryState(
val dates: List = emptyList(),
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ErrorMapper.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ErrorMapper.kt
similarity index 88%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ErrorMapper.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ErrorMapper.kt
index fa20d55e..40772443 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ErrorMapper.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ErrorMapper.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.http.ApiException
+import de.tsschulz.tt_tagebuch.shared.api.http.ApiException
internal fun Throwable.toUserMessage(fallback: String): String {
if (this is ApiException) {
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageManager.kt
similarity index 89%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageManager.kt
index 8c9c5ded..ac752a79 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageManager.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.i18n.MobileStrings
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageState.kt
new file mode 100644
index 00000000..3658493e
--- /dev/null
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageState.kt
@@ -0,0 +1,7 @@
+package de.tsschulz.tt_tagebuch.shared.state
+
+import de.tsschulz.tt_tagebuch.shared.i18n.MobileStrings
+
+data class LanguageState(
+ val currentLanguageCode: String = MobileStrings.DEFAULT_LANGUAGE,
+)
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageStorage.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageStorage.kt
similarity index 74%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageStorage.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageStorage.kt
index 3f812f50..f74f8ac3 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageStorage.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/LanguageStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
interface LanguageStorage {
suspend fun loadLanguageCode(): String?
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MembersManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MembersManager.kt
similarity index 83%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MembersManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MembersManager.kt
index a34eab05..814ea1bc 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MembersManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MembersManager.kt
@@ -1,21 +1,21 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.MemberActivitiesApi
-import de.tt_tagebuch.shared.api.MembersApi
-import de.tt_tagebuch.shared.api.TrainingGroupsApi
-import de.tt_tagebuch.shared.api.TrainingStatsApi
-import de.tt_tagebuch.shared.api.TrainingTimesApi
-import de.tt_tagebuch.shared.api.models.CreateTrainingTimeBody
-import de.tt_tagebuch.shared.api.models.Member
-import de.tt_tagebuch.shared.api.models.MemberActivityStatDto
-import de.tt_tagebuch.shared.api.models.MemberQuickMutationResponse
-import de.tt_tagebuch.shared.api.models.MemberLastParticipationDto
-import de.tt_tagebuch.shared.api.models.MemberSetBody
-import de.tt_tagebuch.shared.api.models.MemberTransferRunBody
-import de.tt_tagebuch.shared.api.models.TrainingGroupDto
-import de.tt_tagebuch.shared.api.models.TrainingStatsMember
-import de.tt_tagebuch.shared.api.models.TrainingTimeDto
-import de.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.MemberActivitiesApi
+import de.tsschulz.tt_tagebuch.shared.api.MembersApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingGroupsApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingStatsApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingTimesApi
+import de.tsschulz.tt_tagebuch.shared.api.models.CreateTrainingTimeBody
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberActivityStatDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberQuickMutationResponse
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberLastParticipationDto
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberSetBody
+import de.tsschulz.tt_tagebuch.shared.api.models.MemberTransferRunBody
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingGroupDto
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStatsMember
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingTimeDto
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateTrainingTimeBody
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MembersState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MembersState.kt
similarity index 58%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MembersState.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MembersState.kt
index fd220438..488338d8 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MembersState.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MembersState.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.models.Member
+import de.tsschulz.tt_tagebuch.shared.api.models.Member
data class MembersState(
val members: List = emptyList(),
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MutableTokenProvider.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MutableTokenProvider.kt
similarity index 74%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MutableTokenProvider.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MutableTokenProvider.kt
index dbf4e72a..bafc509f 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/MutableTokenProvider.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/MutableTokenProvider.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
class MutableTokenProvider : TokenProvider {
override var token: String? = null
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/OfficialTournamentsReadManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/OfficialTournamentsReadManager.kt
similarity index 85%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/OfficialTournamentsReadManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/OfficialTournamentsReadManager.kt
index 27a745d9..baa5a6bb 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/OfficialTournamentsReadManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/OfficialTournamentsReadManager.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.OfficialTournamentsApi
-import de.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
-import de.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
+import de.tsschulz.tt_tagebuch.shared.api.OfficialTournamentsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialParticipationBucketDto
+import de.tsschulz.tt_tagebuch.shared.api.models.OfficialTournamentListRowDto
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/PendingApprovalsManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/PendingApprovalsManager.kt
similarity index 85%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/PendingApprovalsManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/PendingApprovalsManager.kt
index bd9634b3..154136c1 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/PendingApprovalsManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/PendingApprovalsManager.kt
@@ -1,8 +1,8 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.ClubApprovalsApi
-import de.tt_tagebuch.shared.api.models.ClubAccessDecisionBody
-import de.tt_tagebuch.shared.api.models.PendingUserClubJoinDto
+import de.tsschulz.tt_tagebuch.shared.api.ClubApprovalsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubAccessDecisionBody
+import de.tsschulz.tt_tagebuch.shared.api.models.PendingUserClubJoinDto
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/PermissionsAdminManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/PermissionsAdminManager.kt
similarity index 88%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/PermissionsAdminManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/PermissionsAdminManager.kt
index 0bf14400..eb5d12d7 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/PermissionsAdminManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/PermissionsAdminManager.kt
@@ -1,9 +1,9 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.PermissionsApi
-import de.tt_tagebuch.shared.api.models.AvailableRoleDto
-import de.tt_tagebuch.shared.api.models.ClubPermissionMemberDto
-import de.tt_tagebuch.shared.api.models.PermissionResourceDto
+import de.tsschulz.tt_tagebuch.shared.api.PermissionsApi
+import de.tsschulz.tt_tagebuch.shared.api.models.AvailableRoleDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubPermissionMemberDto
+import de.tsschulz.tt_tagebuch.shared.api.models.PermissionResourceDto
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ScheduleManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ScheduleManager.kt
similarity index 93%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ScheduleManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ScheduleManager.kt
index d9d7479a..34d395c5 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/ScheduleManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/ScheduleManager.kt
@@ -1,14 +1,14 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.ClubTeamsApi
-import de.tt_tagebuch.shared.api.MatchesApi
-import de.tt_tagebuch.shared.api.ScheduleLogic
-import de.tt_tagebuch.shared.api.models.ClubTeamDto
-import de.tt_tagebuch.shared.api.models.LeagueTableRowDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchDto
-import de.tt_tagebuch.shared.api.models.ScheduleMatchScope
-import de.tt_tagebuch.shared.api.models.ScheduleViewMode
-import de.tt_tagebuch.shared.api.models.UpdateMatchPlayersBody
+import de.tsschulz.tt_tagebuch.shared.api.ClubTeamsApi
+import de.tsschulz.tt_tagebuch.shared.api.MatchesApi
+import de.tsschulz.tt_tagebuch.shared.api.ScheduleLogic
+import de.tsschulz.tt_tagebuch.shared.api.models.ClubTeamDto
+import de.tsschulz.tt_tagebuch.shared.api.models.LeagueTableRowDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchDto
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleMatchScope
+import de.tsschulz.tt_tagebuch.shared.api.models.ScheduleViewMode
+import de.tsschulz.tt_tagebuch.shared.api.models.UpdateMatchPlayersBody
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TokenProvider.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TokenProvider.kt
similarity index 63%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TokenProvider.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TokenProvider.kt
index f5e75298..269517e5 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TokenProvider.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TokenProvider.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
interface TokenProvider {
val token: String?
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TokenStorage.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TokenStorage.kt
similarity index 74%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TokenStorage.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TokenStorage.kt
index d1ddca40..2ddb7555 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TokenStorage.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TokenStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
interface TokenStorage {
suspend fun load(): AuthTokens?
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TrainingStatsManager.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TrainingStatsManager.kt
similarity index 88%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TrainingStatsManager.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TrainingStatsManager.kt
index 8d9eb0cc..d859f643 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TrainingStatsManager.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TrainingStatsManager.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.TrainingStatsApi
+import de.tsschulz.tt_tagebuch.shared.api.TrainingStatsApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TrainingStatsState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TrainingStatsState.kt
similarity index 56%
rename from mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TrainingStatsState.kt
rename to mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TrainingStatsState.kt
index 92dbdc7b..2c249197 100644
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/TrainingStatsState.kt
+++ b/mobile-app/shared/src/commonMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/TrainingStatsState.kt
@@ -1,6 +1,6 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
-import de.tt_tagebuch.shared.api.models.TrainingStats
+import de.tsschulz.tt_tagebuch.shared.api.models.TrainingStats
data class TrainingStatsState(
val stats: TrainingStats? = null,
diff --git a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageState.kt b/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageState.kt
deleted file mode 100644
index 67a21359..00000000
--- a/mobile-app/shared/src/commonMain/kotlin/de/tt_tagebuch/shared/state/LanguageState.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package de.tt_tagebuch.shared.state
-
-import de.tt_tagebuch.shared.i18n.MobileStrings
-
-data class LanguageState(
- val currentLanguageCode: String = MobileStrings.DEFAULT_LANGUAGE,
-)
diff --git a/mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/api/http/IosHttpClientEngineFactory.kt b/mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/IosHttpClientEngineFactory.kt
similarity index 81%
rename from mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/api/http/IosHttpClientEngineFactory.kt
rename to mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/IosHttpClientEngineFactory.kt
index 5edd19b9..255b9039 100644
--- a/mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/api/http/IosHttpClientEngineFactory.kt
+++ b/mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/api/http/IosHttpClientEngineFactory.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.api.http
+package de.tsschulz.tt_tagebuch.shared.api.http
import io.ktor.client.engine.HttpClientEngine
import io.ktor.client.engine.darwin.Darwin
diff --git a/mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/state/IosClubStorage.kt b/mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/IosClubStorage.kt
similarity index 96%
rename from mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/state/IosClubStorage.kt
rename to mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/IosClubStorage.kt
index 5ceda0b4..c62459df 100644
--- a/mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/state/IosClubStorage.kt
+++ b/mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/IosClubStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -79,7 +79,7 @@ class IosClubStorage : ClubStorage {
}
private companion object {
- private const val SERVICE_NAME = "de.tt_tagebuch.app"
+ private const val SERVICE_NAME = "de.tsschulz.tt_tagebuch"
private const val KEY_CURRENT_CLUB_ID = "currentClubId"
}
}
diff --git a/mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/state/IosTokenStorage.kt b/mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/IosTokenStorage.kt
similarity index 96%
rename from mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/state/IosTokenStorage.kt
rename to mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/IosTokenStorage.kt
index 1b2e704a..0af05f27 100644
--- a/mobile-app/shared/src/iosMain/kotlin/de/tt_tagebuch/shared/state/IosTokenStorage.kt
+++ b/mobile-app/shared/src/iosMain/kotlin/de/tsschulz/tt_tagebuch/shared/state/IosTokenStorage.kt
@@ -1,4 +1,4 @@
-package de.tt_tagebuch.shared.state
+package de.tsschulz.tt_tagebuch.shared.state
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
@@ -87,7 +87,7 @@ class IosTokenStorage : TokenStorage {
}
private companion object {
- private const val SERVICE_NAME = "de.tt_tagebuch.app"
+ private const val SERVICE_NAME = "de.tsschulz.tt_tagebuch"
private const val KEY_TOKEN = "token"
private const val KEY_USERNAME = "username"
}
diff --git a/scripts/generate-mobile-i18n.js b/scripts/generate-mobile-i18n.js
index 53ce1f88..32aa7ebd 100644
--- a/scripts/generate-mobile-i18n.js
+++ b/scripts/generate-mobile-i18n.js
@@ -168,7 +168,7 @@ function main() {
.sort((a, b) => a.localeCompare(b));
const lines = [];
- lines.push('package de.tt_tagebuch.shared.i18n');
+ lines.push('package de.tsschulz.tt_tagebuch.shared.i18n');
lines.push('');
lines.push('data class SupportedLanguage(val code: String, val label: String)');
lines.push('');