Refactor application structure and configuration

- Updated the application namespace and ID from "net.ypchat.app" to "de.ypchat.android" for better alignment with branding.
- Increased Gradle heap size settings to optimize build performance.
- Disabled dependency constraints to simplify dependency management.
- Removed obsolete files related to the previous application structure, including MainActivity, YpChatApp, and various core components, streamlining the codebase.

These changes collectively enhance the application's configuration and structure, improving maintainability and performance.
This commit is contained in:
Torsten Schulz (local)
2026-05-12 14:25:55 +02:00
parent ec567b32eb
commit 810b084e10
45 changed files with 3656 additions and 66 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -27,11 +27,11 @@ val appBaseUrl = localProperties.getProperty("ypchat.baseUrl", defaultBaseUrl)
val hasReleaseSigning = releaseStoreFile?.exists() == true
android {
namespace = "net.ypchat.app"
namespace = "de.ypchat.android"
compileSdk = 36
defaultConfig {
applicationId = "net.ypchat.app"
applicationId = "de.ypchat.android"
minSdk = 26
targetSdk = 36
versionCode = 1

Binary file not shown.

View File

@@ -1,12 +1,12 @@
package net.ypchat.app
package de.ypchat.android
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import net.ypchat.app.ui.ChatViewModel
import net.ypchat.app.ui.ChatViewModelFactory
import net.ypchat.app.ui.YpChatRoot
import de.ypchat.android.ui.ChatViewModel
import de.ypchat.android.ui.ChatViewModelFactory
import de.ypchat.android.ui.YpChatRoot
class MainActivity : ComponentActivity() {
private val viewModel: ChatViewModel by viewModels {

View File

@@ -1,7 +1,7 @@
package net.ypchat.app
package de.ypchat.android
import android.app.Application
import net.ypchat.app.core.AppContainer
import de.ypchat.android.core.AppContainer
class YpChatApp : Application() {
lateinit var container: AppContainer

View File

@@ -1,6 +1,6 @@
package net.ypchat.app.core
package de.ypchat.android.core
import net.ypchat.app.BuildConfig
import de.ypchat.android.BuildConfig
object AppConfig {
val baseUrl: String = BuildConfig.BASE_URL.trimEnd('/')

View File

@@ -1,9 +1,9 @@
package net.ypchat.app.core
package de.ypchat.android.core
import android.content.Context
import net.ypchat.app.data.api.RestApi
import net.ypchat.app.data.api.SocketClient
import net.ypchat.app.data.repository.ChatRepository
import de.ypchat.android.data.api.RestApi
import de.ypchat.android.data.api.SocketClient
import de.ypchat.android.data.repository.ChatRepository
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.core
package de.ypchat.android.core
import android.content.Context

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.core
package de.ypchat.android.core
import android.content.Context
import okhttp3.Cookie

View File

@@ -1,14 +1,14 @@
package net.ypchat.app.data.api
package de.ypchat.android.data.api
import net.ypchat.app.data.model.CountriesResponse
import net.ypchat.app.data.model.FeedbackAdminLoginRequest
import net.ypchat.app.data.model.FeedbackAdminStatusResponse
import net.ypchat.app.data.model.FeedbackRequest
import net.ypchat.app.data.model.FeedbackResponse
import net.ypchat.app.data.model.ImageUploadResponse
import net.ypchat.app.data.model.LogoutResponse
import net.ypchat.app.data.model.PartnerLinkDto
import net.ypchat.app.data.model.SessionResponse
import de.ypchat.android.data.model.CountriesResponse
import de.ypchat.android.data.model.FeedbackAdminLoginRequest
import de.ypchat.android.data.model.FeedbackAdminStatusResponse
import de.ypchat.android.data.model.FeedbackRequest
import de.ypchat.android.data.model.FeedbackResponse
import de.ypchat.android.data.model.ImageUploadResponse
import de.ypchat.android.data.model.LogoutResponse
import de.ypchat.android.data.model.PartnerLinkDto
import de.ypchat.android.data.model.SessionResponse
import okhttp3.MultipartBody
import retrofit2.Response
import retrofit2.http.Body

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.data.api
package de.ypchat.android.data.api
import io.socket.client.IO
import io.socket.client.Socket
@@ -10,11 +10,11 @@ import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.launch
import net.ypchat.app.data.model.ChatMessageDto
import net.ypchat.app.data.model.HistoryItemDto
import net.ypchat.app.data.model.InboxItemDto
import net.ypchat.app.data.model.SocketEvent
import net.ypchat.app.data.model.UserDto
import de.ypchat.android.data.model.ChatMessageDto
import de.ypchat.android.data.model.HistoryItemDto
import de.ypchat.android.data.model.InboxItemDto
import de.ypchat.android.data.model.SocketEvent
import de.ypchat.android.data.model.UserDto
import okhttp3.OkHttpClient
import org.json.JSONArray
import org.json.JSONObject

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.data.model
package de.ypchat.android.data.model
import com.google.gson.annotations.SerializedName

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.data.model
package de.ypchat.android.data.model
sealed interface SocketEvent {
data class Connected(val sessionId: String?, val loggedIn: Boolean, val user: UserDto?) : SocketEvent

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.data.repository
package de.ypchat.android.data.repository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -9,22 +9,22 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import net.ypchat.app.core.AppConfig
import net.ypchat.app.core.ProfileStore
import net.ypchat.app.core.SavedProfile
import net.ypchat.app.core.SessionCookieJar
import net.ypchat.app.data.api.RestApi
import net.ypchat.app.data.api.SocketClient
import net.ypchat.app.data.model.ChatMessageDto
import net.ypchat.app.data.model.CountryOption
import net.ypchat.app.data.model.FeedbackAdminLoginRequest
import net.ypchat.app.data.model.FeedbackItemDto
import net.ypchat.app.data.model.FeedbackRequest
import net.ypchat.app.data.model.HistoryItemDto
import net.ypchat.app.data.model.InboxItemDto
import net.ypchat.app.data.model.PartnerLinkDto
import net.ypchat.app.data.model.SocketEvent
import net.ypchat.app.data.model.UserDto
import de.ypchat.android.core.AppConfig
import de.ypchat.android.core.ProfileStore
import de.ypchat.android.core.SavedProfile
import de.ypchat.android.core.SessionCookieJar
import de.ypchat.android.data.api.RestApi
import de.ypchat.android.data.api.SocketClient
import de.ypchat.android.data.model.ChatMessageDto
import de.ypchat.android.data.model.CountryOption
import de.ypchat.android.data.model.FeedbackAdminLoginRequest
import de.ypchat.android.data.model.FeedbackItemDto
import de.ypchat.android.data.model.FeedbackRequest
import de.ypchat.android.data.model.HistoryItemDto
import de.ypchat.android.data.model.InboxItemDto
import de.ypchat.android.data.model.PartnerLinkDto
import de.ypchat.android.data.model.SocketEvent
import de.ypchat.android.data.model.UserDto
import okhttp3.MultipartBody
import java.util.Locale

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.ui
package de.ypchat.android.ui
import android.content.Context
import android.net.Uri
@@ -8,8 +8,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import net.ypchat.app.data.repository.ChatRepository
import net.ypchat.app.data.repository.ChatState
import de.ypchat.android.data.repository.ChatRepository
import de.ypchat.android.data.repository.ChatState
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody.Companion.toRequestBody

View File

@@ -1,4 +1,4 @@
package net.ypchat.app.ui
package de.ypchat.android.ui
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.PickVisualMediaRequest
@@ -64,14 +64,14 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.unit.dp
import coil3.compose.AsyncImage
import net.ypchat.app.R
import net.ypchat.app.data.model.ChatMessageDto
import net.ypchat.app.data.model.CountryOption
import net.ypchat.app.data.model.FeedbackItemDto
import net.ypchat.app.data.model.PartnerLinkDto
import net.ypchat.app.data.model.UserDto
import net.ypchat.app.data.repository.ChatState
import net.ypchat.app.data.repository.CommandTableState
import de.ypchat.android.R
import de.ypchat.android.data.model.ChatMessageDto
import de.ypchat.android.data.model.CountryOption
import de.ypchat.android.data.model.FeedbackItemDto
import de.ypchat.android.data.model.PartnerLinkDto
import de.ypchat.android.data.model.UserDto
import de.ypchat.android.data.repository.ChatState
import de.ypchat.android.data.repository.CommandTableState
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter

View File

@@ -1,10 +1,10 @@
org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=1024m -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx16g -XX:MaxMetaspaceSize=2g -Dfile.encoding=UTF-8
android.r8.maxHeapSize=8g
android.useAndroidX=true
android.nonTransitiveRClass=true
kotlin.code.style=official
android.dependency.useConstraints=true
android.dependency.useConstraints=false
android.r8.strictFullModeForKeepRules=false
android.dependency.excludeLibraryComponentsFromConstraints=true
android.generateSyncIssueWhenLibraryConstraintsAreEnabled=false
kotlin.daemon.jvmargs=-Xmx2048m
android.lint.workerProcessMaxHeapSize=4g

BIN
android/production Normal file

Binary file not shown.