chore: rename package com.librechat to com.garfiec.librechat

This commit is contained in:
Garfie 2026-04-03 16:11:49 -05:00
parent af7a662754
commit e5c5b549db
660 changed files with 2466 additions and 2466 deletions

View file

@ -59,7 +59,7 @@ cat UPSTREAM_VERSION
``` ```
If missing, create from current state: If missing, create from current state:
```bash ```bash
VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/librechat/android/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"') VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/garfiec/librechat/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"')
COMMIT=$(cd upstream && git rev-parse HEAD) COMMIT=$(cd upstream && git rev-parse HEAD)
echo "# Upstream LibreChat version this Android build tracks." > UPSTREAM_VERSION echo "# Upstream LibreChat version this Android build tracks." > UPSTREAM_VERSION
echo "# Updated by the sync-upstream skill. Do not edit manually." >> UPSTREAM_VERSION echo "# Updated by the sync-upstream skill. Do not edit manually." >> UPSTREAM_VERSION
@ -82,7 +82,7 @@ Check if a prior sync was partially done in another session:
TRACKED_TAG=$(grep '^tag=' UPSTREAM_VERSION | cut -d= -f2) TRACKED_TAG=$(grep '^tag=' UPSTREAM_VERSION | cut -d= -f2)
# Get version from BackendVersion.kt # Get version from BackendVersion.kt
CODE_VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/librechat/android/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"') CODE_VERSION=$(grep 'SUPPORTED_BACKEND_VERSION' core/common/src/main/kotlin/com/garfiec/librechat/core/common/BackendVersion.kt | grep -o '"[^"]*"' | tr -d '"')
# Get submodule current position # Get submodule current position
SUBMODULE_HEAD=$(cd upstream && git rev-parse HEAD) SUBMODULE_HEAD=$(cd upstream && git rev-parse HEAD)
@ -275,7 +275,7 @@ Create a task for the implementer with the approved change list:
> {paste the approved change list here} > {paste the approved change list here}
> >
> **After all code changes:** > **After all code changes:**
> 1. Update `SUPPORTED_BACKEND_VERSION` in `core/common/src/main/kotlin/com/librechat/android/core/common/BackendVersion.kt` to "{new_version}" (without v prefix) > 1. Update `SUPPORTED_BACKEND_VERSION` in `core/common/src/main/kotlin/com/garfiec/librechat/core/common/BackendVersion.kt` to "{new_version}" (without v prefix)
> 2. Advance submodule: `cd upstream && git checkout {target_tag}` > 2. Advance submodule: `cd upstream && git checkout {target_tag}`
> 3. Update `UPSTREAM_VERSION` at repo root: > 3. Update `UPSTREAM_VERSION` at repo root:
> ``` > ```

View file

@ -5,10 +5,10 @@ plugins {
} }
android { android {
namespace = "com.librechat.android" namespace = "com.garfiec.librechat"
defaultConfig { defaultConfig {
applicationId = "com.librechat.android" applicationId = "com.garfiec.librechat"
} }
buildFeatures { buildFeatures {

View file

@ -5,16 +5,16 @@
-dontnote kotlinx.serialization.AnnotationsKt -dontnote kotlinx.serialization.AnnotationsKt
-keepclassmembers class kotlinx.serialization.json.** { *** Companion; } -keepclassmembers class kotlinx.serialization.json.** { *** Companion; }
-keepclasseswithmembers class kotlinx.serialization.json.** { kotlinx.serialization.KSerializer serializer(...); } -keepclasseswithmembers class kotlinx.serialization.json.** { kotlinx.serialization.KSerializer serializer(...); }
-keep,includedescriptorclasses class com.librechat.android.**$$serializer { *; } -keep,includedescriptorclasses class com.garfiec.librechat.**$$serializer { *; }
-keepclassmembers class com.librechat.android.** { *** Companion; } -keepclassmembers class com.garfiec.librechat.** { *** Companion; }
-keepclasseswithmembers class com.librechat.android.** { kotlinx.serialization.KSerializer serializer(...); } -keepclasseswithmembers class com.garfiec.librechat.** { kotlinx.serialization.KSerializer serializer(...); }
# Keep Ktor # Keep Ktor
-keep class io.ktor.** { *; } -keep class io.ktor.** { *; }
-dontwarn io.ktor.** -dontwarn io.ktor.**
# Keep Room entities # Keep Room entities
-keep class com.librechat.android.core.data.db.entity.** { *; } -keep class com.garfiec.librechat.core.data.db.entity.** { *; }
# Koin - keep ViewModel constructors for reflection-based instantiation # Koin - keep ViewModel constructors for reflection-based instantiation
-keep class * extends androidx.lifecycle.ViewModel { <init>(...); } -keep class * extends androidx.lifecycle.ViewModel { <init>(...); }

View file

@ -1,4 +1,4 @@
package com.librechat.android package com.garfiec.librechat
import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.assertIsEnabled import androidx.compose.ui.test.assertIsEnabled
@ -6,8 +6,8 @@ import androidx.compose.ui.test.assertIsNotEnabled
import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performTextInput import androidx.compose.ui.test.performTextInput
import com.librechat.android.core.ui.theme.LibreChatTheme import com.garfiec.librechat.core.ui.theme.LibreChatTheme
import com.librechat.android.feature.auth.screen.ServerUrlScreen import com.garfiec.librechat.feature.auth.screen.ServerUrlScreen
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test

View file

@ -1,4 +1,4 @@
package com.librechat.android package com.garfiec.librechat
import android.app.Application import android.app.Application
import coil3.ImageLoader import coil3.ImageLoader
@ -8,17 +8,17 @@ import coil3.disk.directory
import coil3.memory.MemoryCache import coil3.memory.MemoryCache
import coil3.network.ktor3.KtorNetworkFetcherFactory import coil3.network.ktor3.KtorNetworkFetcherFactory
import coil3.request.crossfade import coil3.request.crossfade
import com.librechat.android.core.common.di.commonModule import com.garfiec.librechat.core.common.di.commonModule
import com.librechat.android.core.data.di.dataModule import com.garfiec.librechat.core.data.di.dataModule
import com.librechat.android.core.network.di.networkModule import com.garfiec.librechat.core.network.di.networkModule
import com.librechat.android.feature.agents.di.agentsModule import com.garfiec.librechat.feature.agents.di.agentsModule
import com.librechat.android.feature.auth.di.authModule import com.garfiec.librechat.feature.auth.di.authModule
import com.librechat.android.feature.auth.di.authPlatformModule import com.garfiec.librechat.feature.auth.di.authPlatformModule
import com.librechat.android.feature.chat.di.chatModule import com.garfiec.librechat.feature.chat.di.chatModule
import com.librechat.android.feature.conversations.di.conversationsModule import com.garfiec.librechat.feature.conversations.di.conversationsModule
import com.librechat.android.feature.files.di.filesModule import com.garfiec.librechat.feature.files.di.filesModule
import com.librechat.android.feature.settings.di.settingsModule import com.garfiec.librechat.feature.settings.di.settingsModule
import com.librechat.android.navigation.appModule import com.garfiec.librechat.navigation.appModule
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import org.koin.android.ext.android.get import org.koin.android.ext.android.get
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext

View file

@ -1,4 +1,4 @@
package com.librechat.android package com.garfiec.librechat
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
@ -32,13 +32,13 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.librechat.android.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.librechat.android.core.data.datastore.ThemeDataStore import com.garfiec.librechat.core.data.datastore.ThemeDataStore
import com.librechat.android.core.data.datastore.ThemeMode import com.garfiec.librechat.core.data.datastore.ThemeMode
import com.librechat.android.core.ui.theme.LibreChatTheme import com.garfiec.librechat.core.ui.theme.LibreChatTheme
import com.librechat.android.feature.chat.ShareIntentConsumer import com.garfiec.librechat.feature.chat.ShareIntentConsumer
import com.librechat.android.feature.chat.SharedContent import com.garfiec.librechat.feature.chat.SharedContent
import com.librechat.android.navigation.LibreChatNavHost import com.garfiec.librechat.navigation.LibreChatNavHost
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
import co.touchlab.kermit.Logger import co.touchlab.kermit.Logger

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import org.koin.core.module.dsl.viewModelOf import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module import org.koin.dsl.module

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@ -54,10 +54,10 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.librechat.android.R import com.garfiec.librechat.R
import com.librechat.android.core.model.EModelEndpoint import com.garfiec.librechat.core.model.EModelEndpoint
import com.librechat.android.core.ui.components.isMonochromeIcon import com.garfiec.librechat.core.ui.components.isMonochromeIcon
import com.librechat.android.core.ui.components.toIconRes import com.garfiec.librechat.core.ui.components.toIconRes
/** /**
* Lightweight snapshot of fields DrawerConversationItem actually renders. * Lightweight snapshot of fields DrawerConversationItem actually renders.

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import android.net.Uri import android.net.Uri
import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.AnimatedContentTransitionScope
@ -35,29 +35,29 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import com.librechat.android.MainActivity import com.garfiec.librechat.MainActivity
import com.librechat.android.R import com.garfiec.librechat.R
import com.librechat.android.core.ui.components.BannerDisplay import com.garfiec.librechat.core.ui.components.BannerDisplay
import com.librechat.android.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE import com.garfiec.librechat.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE
import com.librechat.android.feature.agents.navigation.agentsGraph import com.garfiec.librechat.feature.agents.navigation.agentsGraph
import com.librechat.android.feature.auth.navigation.AUTH_GRAPH_ROUTE import com.garfiec.librechat.feature.auth.navigation.AUTH_GRAPH_ROUTE
import com.librechat.android.feature.auth.navigation.authGraph import com.garfiec.librechat.feature.auth.navigation.authGraph
import com.librechat.android.feature.chat.navigation.CHAT_GRAPH_ROUTE import com.garfiec.librechat.feature.chat.navigation.CHAT_GRAPH_ROUTE
import com.librechat.android.feature.chat.navigation.CHAT_ROUTE import com.garfiec.librechat.feature.chat.navigation.CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.NEW_CHAT_ROUTE import com.garfiec.librechat.feature.chat.navigation.NEW_CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.chatGraph import com.garfiec.librechat.feature.chat.navigation.chatGraph
import com.librechat.android.feature.chat.navigation.navigateToChat import com.garfiec.librechat.feature.chat.navigation.navigateToChat
import com.librechat.android.feature.conversations.navigation.conversationsGraph import com.garfiec.librechat.feature.conversations.navigation.conversationsGraph
import com.librechat.android.feature.files.navigation.filesGraph import com.garfiec.librechat.feature.files.navigation.filesGraph
import com.librechat.android.feature.settings.navigation.API_KEYS_ROUTE import com.garfiec.librechat.feature.settings.navigation.API_KEYS_ROUTE
import com.librechat.android.feature.settings.navigation.PRESET_MANAGER_ROUTE import com.garfiec.librechat.feature.settings.navigation.PRESET_MANAGER_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_ACCOUNT_ROUTE import com.garfiec.librechat.feature.settings.navigation.SETTINGS_ACCOUNT_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_CHAT_ROUTE import com.garfiec.librechat.feature.settings.navigation.SETTINGS_CHAT_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_DATA_ROUTE import com.garfiec.librechat.feature.settings.navigation.SETTINGS_DATA_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_GENERAL_ROUTE import com.garfiec.librechat.feature.settings.navigation.SETTINGS_GENERAL_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_TABBED_ROUTE import com.garfiec.librechat.feature.settings.navigation.SETTINGS_TABBED_ROUTE
import com.librechat.android.feature.settings.navigation.SHARED_LINKS_ROUTE import com.garfiec.librechat.feature.settings.navigation.SHARED_LINKS_ROUTE
import com.librechat.android.feature.settings.navigation.settingsGraph import com.garfiec.librechat.feature.settings.navigation.settingsGraph
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.koin.compose.viewmodel.koinViewModel import org.koin.compose.viewmodel.koinViewModel
import co.touchlab.kermit.Logger import co.touchlab.kermit.Logger

View file

@ -1,18 +1,18 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.librechat.android.core.common.extensions.toInstantOrNull import com.garfiec.librechat.core.common.extensions.toInstantOrNull
import com.librechat.android.core.common.extensions.toRelativeDateGroup import com.garfiec.librechat.core.common.extensions.toRelativeDateGroup
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.data.repository.AuthRepository import com.garfiec.librechat.core.data.repository.AuthRepository
import com.librechat.android.core.data.repository.BannerRepository import com.garfiec.librechat.core.data.repository.BannerRepository
import com.librechat.android.core.data.repository.ConfigRepository import com.garfiec.librechat.core.data.repository.ConfigRepository
import com.librechat.android.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.ConversationRepository
import com.librechat.android.core.model.Banner import com.garfiec.librechat.core.model.Banner
import com.librechat.android.core.model.Conversation import com.garfiec.librechat.core.model.Conversation
import com.librechat.android.core.network.client.TokenManager import com.garfiec.librechat.core.network.client.TokenManager
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@ -61,7 +61,7 @@ class NavHostViewModel(
private val configRepository: ConfigRepository, private val configRepository: ConfigRepository,
private val conversationRepository: ConversationRepository, private val conversationRepository: ConversationRepository,
private val tokenManager: TokenManager, private val tokenManager: TokenManager,
private val settingsDataStore: com.librechat.android.core.data.datastore.SettingsDataStore, private val settingsDataStore: com.garfiec.librechat.core.data.datastore.SettingsDataStore,
) : ViewModel() { ) : ViewModel() {
private val _isLoggedIn = MutableStateFlow(tokenManager.isAuthenticated) private val _isLoggedIn = MutableStateFlow(tokenManager.isAuthenticated)

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@ -31,7 +31,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.heading
import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.librechat.android.R import com.garfiec.librechat.R
/** /**
* Settings sidebar content shown when the sidebar mode is [SidebarMode.Settings]. * Settings sidebar content shown when the sidebar mode is [SidebarMode.Settings].

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
sealed interface SidebarMode { sealed interface SidebarMode {
data object Conversations : SidebarMode data object Conversations : SidebarMode

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideInHorizontally

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import android.net.Uri import android.net.Uri
import androidx.activity.compose.BackHandler import androidx.activity.compose.BackHandler
@ -39,24 +39,24 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import com.librechat.android.MainActivity import com.garfiec.librechat.MainActivity
import com.librechat.android.core.ui.components.BannerDisplay import com.garfiec.librechat.core.ui.components.BannerDisplay
import com.librechat.android.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE import com.garfiec.librechat.feature.agents.navigation.AGENT_EDITOR_CREATE_ROUTE
import com.librechat.android.feature.agents.navigation.agentsGraph import com.garfiec.librechat.feature.agents.navigation.agentsGraph
import com.librechat.android.feature.auth.navigation.AUTH_GRAPH_ROUTE import com.garfiec.librechat.feature.auth.navigation.AUTH_GRAPH_ROUTE
import com.librechat.android.feature.auth.navigation.authGraph import com.garfiec.librechat.feature.auth.navigation.authGraph
import com.librechat.android.feature.chat.navigation.CHAT_GRAPH_ROUTE import com.garfiec.librechat.feature.chat.navigation.CHAT_GRAPH_ROUTE
import com.librechat.android.feature.chat.navigation.CHAT_ROUTE import com.garfiec.librechat.feature.chat.navigation.CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.NEW_CHAT_ROUTE import com.garfiec.librechat.feature.chat.navigation.NEW_CHAT_ROUTE
import com.librechat.android.feature.chat.navigation.chatGraph import com.garfiec.librechat.feature.chat.navigation.chatGraph
import com.librechat.android.feature.chat.navigation.navigateToChat import com.garfiec.librechat.feature.chat.navigation.navigateToChat
import com.librechat.android.feature.conversations.navigation.conversationsGraph import com.garfiec.librechat.feature.conversations.navigation.conversationsGraph
import com.librechat.android.feature.files.navigation.filesGraph import com.garfiec.librechat.feature.files.navigation.filesGraph
import com.librechat.android.feature.settings.navigation.API_KEYS_ROUTE import com.garfiec.librechat.feature.settings.navigation.API_KEYS_ROUTE
import com.librechat.android.feature.settings.navigation.PRESET_MANAGER_ROUTE import com.garfiec.librechat.feature.settings.navigation.PRESET_MANAGER_ROUTE
import com.librechat.android.feature.settings.navigation.SETTINGS_TABBED_ROUTE import com.garfiec.librechat.feature.settings.navigation.SETTINGS_TABBED_ROUTE
import com.librechat.android.feature.settings.navigation.SHARED_LINKS_ROUTE import com.garfiec.librechat.feature.settings.navigation.SHARED_LINKS_ROUTE
import com.librechat.android.feature.settings.navigation.settingsGraph import com.garfiec.librechat.feature.settings.navigation.settingsGraph
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import co.touchlab.kermit.Logger import co.touchlab.kermit.Logger
@ -310,7 +310,7 @@ private fun MainContent(
navHostViewModel: NavHostViewModel, navHostViewModel: NavHostViewModel,
startDestination: String, startDestination: String,
isInAuthFlow: Boolean, isInAuthFlow: Boolean,
banners: List<com.librechat.android.core.model.Banner>, banners: List<com.garfiec.librechat.core.model.Banner>,
dismissedBannerIds: Set<String>, dismissedBannerIds: Set<String>,
onToggleDrawer: () -> Unit, onToggleDrawer: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,

View file

@ -1,4 +1,4 @@
package com.librechat.android.navigation package com.garfiec.librechat.navigation
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Chat import androidx.compose.material.icons.filled.Chat

View file

@ -1,68 +1,68 @@
package com.librechat.android package com.garfiec.librechat
import com.librechat.android.core.common.di.commonModule import com.garfiec.librechat.core.common.di.commonModule
import com.librechat.android.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.librechat.android.core.data.datastore.ConfigCacheDataStore import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore
import com.librechat.android.core.data.datastore.ServerDataStore import com.garfiec.librechat.core.data.datastore.ServerDataStore
import com.librechat.android.core.data.datastore.SettingsDataStore import com.garfiec.librechat.core.data.datastore.SettingsDataStore
import com.librechat.android.core.data.datastore.ThemeDataStore import com.garfiec.librechat.core.data.datastore.ThemeDataStore
import com.librechat.android.core.data.di.dataModule import com.garfiec.librechat.core.data.di.dataModule
import com.librechat.android.core.data.repository.AgentRepository import com.garfiec.librechat.core.data.repository.AgentRepository
import com.librechat.android.core.data.repository.ApiKeyRepository import com.garfiec.librechat.core.data.repository.ApiKeyRepository
import com.librechat.android.core.data.repository.AuthRepository import com.garfiec.librechat.core.data.repository.AuthRepository
import com.librechat.android.core.data.repository.BalanceRepository import com.garfiec.librechat.core.data.repository.BalanceRepository
import com.librechat.android.core.data.repository.BannerRepository import com.garfiec.librechat.core.data.repository.BannerRepository
import com.librechat.android.core.data.repository.ChatRepository import com.garfiec.librechat.core.data.repository.ChatRepository
import com.librechat.android.core.data.repository.ConfigRepository import com.garfiec.librechat.core.data.repository.ConfigRepository
import com.librechat.android.core.data.repository.ConversationRepository import com.garfiec.librechat.core.data.repository.ConversationRepository
import com.librechat.android.core.data.repository.DraftRepository import com.garfiec.librechat.core.data.repository.DraftRepository
import com.librechat.android.core.data.repository.FileRepository import com.garfiec.librechat.core.data.repository.FileRepository
import com.librechat.android.core.data.repository.KeyRepository import com.garfiec.librechat.core.data.repository.KeyRepository
import com.librechat.android.core.data.repository.McpRepository import com.garfiec.librechat.core.data.repository.McpRepository
import com.librechat.android.core.data.repository.MemoryRepository import com.garfiec.librechat.core.data.repository.MemoryRepository
import com.librechat.android.core.data.repository.MessageRepository import com.garfiec.librechat.core.data.repository.MessageRepository
import com.librechat.android.core.data.repository.PresetRepository import com.garfiec.librechat.core.data.repository.PresetRepository
import com.librechat.android.core.data.repository.PromptRepository import com.garfiec.librechat.core.data.repository.PromptRepository
import com.librechat.android.core.data.repository.SearchRepository import com.garfiec.librechat.core.data.repository.SearchRepository
import com.librechat.android.core.data.repository.ShareRepository import com.garfiec.librechat.core.data.repository.ShareRepository
import com.librechat.android.core.data.repository.SpeechRepository import com.garfiec.librechat.core.data.repository.SpeechRepository
import com.librechat.android.core.data.repository.TagRepository import com.garfiec.librechat.core.data.repository.TagRepository
import com.librechat.android.core.data.repository.UserRepository import com.garfiec.librechat.core.data.repository.UserRepository
import com.librechat.android.core.network.api.AgentsApi import com.garfiec.librechat.core.network.api.AgentsApi
import com.librechat.android.core.network.api.ApiKeysApi import com.garfiec.librechat.core.network.api.ApiKeysApi
import com.librechat.android.core.network.api.AuthApi import com.garfiec.librechat.core.network.api.AuthApi
import com.librechat.android.core.network.api.BalanceApi import com.garfiec.librechat.core.network.api.BalanceApi
import com.librechat.android.core.network.api.BannerApi import com.garfiec.librechat.core.network.api.BannerApi
import com.librechat.android.core.network.api.ChatApi import com.garfiec.librechat.core.network.api.ChatApi
import com.librechat.android.core.network.api.ConfigApi import com.garfiec.librechat.core.network.api.ConfigApi
import com.librechat.android.core.network.api.ConversationsApi import com.garfiec.librechat.core.network.api.ConversationsApi
import com.librechat.android.core.network.api.FilesApi import com.garfiec.librechat.core.network.api.FilesApi
import com.librechat.android.core.network.api.FilesExtApi import com.garfiec.librechat.core.network.api.FilesExtApi
import com.librechat.android.core.network.api.KeysApi import com.garfiec.librechat.core.network.api.KeysApi
import com.librechat.android.core.network.api.McpApi import com.garfiec.librechat.core.network.api.McpApi
import com.librechat.android.core.network.api.MemoriesApi import com.garfiec.librechat.core.network.api.MemoriesApi
import com.librechat.android.core.network.api.MessagesApi import com.garfiec.librechat.core.network.api.MessagesApi
import com.librechat.android.core.network.api.PresetsApi import com.garfiec.librechat.core.network.api.PresetsApi
import com.librechat.android.core.network.api.PromptsApi import com.garfiec.librechat.core.network.api.PromptsApi
import com.librechat.android.core.network.api.SearchApi import com.garfiec.librechat.core.network.api.SearchApi
import com.librechat.android.core.network.api.ShareApi import com.garfiec.librechat.core.network.api.ShareApi
import com.librechat.android.core.network.api.SpeechApi import com.garfiec.librechat.core.network.api.SpeechApi
import com.librechat.android.core.network.api.TagsApi import com.garfiec.librechat.core.network.api.TagsApi
import com.librechat.android.core.network.api.UserApi import com.garfiec.librechat.core.network.api.UserApi
import com.librechat.android.core.network.client.SecureTokenStorage import com.garfiec.librechat.core.network.client.SecureTokenStorage
import com.librechat.android.core.network.client.ServerUrlProvider import com.garfiec.librechat.core.network.client.ServerUrlProvider
import com.librechat.android.core.network.client.TokenManager import com.garfiec.librechat.core.network.client.TokenManager
import com.librechat.android.core.network.di.networkModule import com.garfiec.librechat.core.network.di.networkModule
import com.librechat.android.core.network.sse.SseClient import com.garfiec.librechat.core.network.sse.SseClient
import com.librechat.android.feature.agents.di.agentsModule import com.garfiec.librechat.feature.agents.di.agentsModule
import com.librechat.android.feature.auth.di.authModule import com.garfiec.librechat.feature.auth.di.authModule
import com.librechat.android.feature.auth.oauth.OAuthLauncher import com.garfiec.librechat.feature.auth.oauth.OAuthLauncher
import com.librechat.android.feature.chat.di.chatModule import com.garfiec.librechat.feature.chat.di.chatModule
import com.librechat.android.feature.conversations.di.conversationsModule import com.garfiec.librechat.feature.conversations.di.conversationsModule
import com.librechat.android.feature.files.di.filesModule import com.garfiec.librechat.feature.files.di.filesModule
import com.librechat.android.feature.files.platform.FileReader import com.garfiec.librechat.feature.files.platform.FileReader
import com.librechat.android.feature.settings.di.settingsModule import com.garfiec.librechat.feature.settings.di.settingsModule
import com.librechat.android.navigation.appModule import com.garfiec.librechat.navigation.appModule
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import org.junit.Test import org.junit.Test

View file

@ -5,9 +5,9 @@
// Core model classes — all are data classes with val-only fields, never mutated after creation. // Core model classes — all are data classes with val-only fields, never mutated after creation.
// Wildcard patterns auto-cover new models without manual maintenance. // Wildcard patterns auto-cover new models without manual maintenance.
com.librechat.android.core.model.* com.garfiec.librechat.core.model.*
com.librechat.android.core.model.mcp.* com.garfiec.librechat.core.model.mcp.*
com.librechat.android.core.model.speech.* com.garfiec.librechat.core.model.speech.*
// Kotlin stdlib collections (we only use immutable instances in practice) // Kotlin stdlib collections (we only use immutable instances in practice)
kotlin.collections.List kotlin.collections.List

View file

@ -4,7 +4,7 @@ plugins {
} }
android { android {
namespace = "com.librechat.android.core.common" namespace = "com.garfiec.librechat.core.common"
} }
kotlin { kotlin {

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import com.librechat.android.core.common.network.AndroidConnectivityObserver import com.garfiec.librechat.core.common.network.AndroidConnectivityObserver
import com.librechat.android.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.network.ConnectivityObserver
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.dsl.module import org.koin.dsl.module

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions package com.garfiec.librechat.core.common.extensions
import java.time.Month import java.time.Month
import java.time.format.TextStyle import java.time.format.TextStyle

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network package com.garfiec.librechat.core.common.network
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import org.junit.Test import org.junit.Test
import org.koin.test.verify.verify import org.koin.test.verify.verify

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network package com.garfiec.librechat.core.common.network
import app.cash.turbine.test import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.test package com.garfiec.librechat.core.common.test
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common package com.garfiec.librechat.core.common
/** /**
* Backend version compatibility constants and comparison utilities. * Backend version compatibility constants and comparison utilities.

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common package com.garfiec.librechat.core.common
object EndpointConstants { object EndpointConstants {
const val AGENTS = "agents" const val AGENTS = "agents"

View file

@ -1,6 +1,6 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import com.librechat.android.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.network.ConnectivityObserver
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import org.koin.core.qualifier.named import org.koin.core.qualifier.named

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions package com.garfiec.librechat.core.common.extensions
import kotlin.time.Clock import kotlin.time.Clock
import kotlin.time.Instant import kotlin.time.Instant

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions package com.garfiec.librechat.core.common.extensions
/** /**
* Returns a locale-aware full month name + year string (e.g. "January 2025" in English). * Returns a locale-aware full month name + year string (e.g. "January 2025" in English).

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions package com.garfiec.librechat.core.common.extensions
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions package com.garfiec.librechat.core.common.extensions
fun String.trimTrailingSlash(): String = trimEnd('/') fun String.trimTrailingSlash(): String = trimEnd('/')

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network package com.garfiec.librechat.core.common.network
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.result package com.garfiec.librechat.core.common.result
/** /**
* Exception thrown when the server returns a non-2xx HTTP response. * Exception thrown when the server returns a non-2xx HTTP response.

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.result package com.garfiec.librechat.core.common.result
sealed interface Result<out T> { sealed interface Result<out T> {
data class Success<T>(val data: T) : Result<T> data class Success<T>(val data: T) : Result<T>

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.result package com.garfiec.librechat.core.common.result
import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest
import kotlin.test.Test import kotlin.test.Test

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import com.librechat.android.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.librechat.android.core.common.network.IosConnectivityObserver import com.garfiec.librechat.core.common.network.IosConnectivityObserver
import org.koin.core.module.Module import org.koin.core.module.Module
import org.koin.dsl.module import org.koin.dsl.module

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.di package com.garfiec.librechat.core.common.di
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.extensions package com.garfiec.librechat.core.common.extensions
import platform.Foundation.NSCalendar import platform.Foundation.NSCalendar
import platform.Foundation.NSDateComponents import platform.Foundation.NSDateComponents

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.common.network package com.garfiec.librechat.core.common.network
import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.awaitClose
@ -18,7 +18,7 @@ import platform.darwin.dispatch_queue_create
class IosConnectivityObserver : ConnectivityObserver { class IosConnectivityObserver : ConnectivityObserver {
override val isConnected: Flow<Boolean> = callbackFlow { override val isConnected: Flow<Boolean> = callbackFlow {
val monitor = nw_path_monitor_create() val monitor = nw_path_monitor_create()
val queue = dispatch_queue_create("com.librechat.network.monitor", null) val queue = dispatch_queue_create("com.garfiec.librechat.network.monitor", null)
nw_path_monitor_set_update_handler(monitor) { path -> nw_path_monitor_set_update_handler(monitor) { path ->
val connected = nw_path_get_status(path) == nw_path_status_satisfied val connected = nw_path_get_status(path) == nw_path_status_satisfied

View file

@ -6,7 +6,7 @@ plugins {
} }
android { android {
namespace = "com.librechat.android.core.data" namespace = "com.garfiec.librechat.core.data"
} }
kotlin { kotlin {

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db package com.garfiec.librechat.core.data.db
import android.content.ContentValues import android.content.ContentValues
import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteDatabase

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences

View file

@ -1,16 +1,16 @@
package com.librechat.android.core.data.di package com.garfiec.librechat.core.data.di
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.preferencesDataStore import androidx.datastore.preferences.preferencesDataStore
import androidx.room.Room import androidx.room.Room
import com.librechat.android.core.common.di.KoinQualifiers import com.garfiec.librechat.core.common.di.KoinQualifiers
import com.librechat.android.core.data.datastore.TokenDataStore import com.garfiec.librechat.core.data.datastore.TokenDataStore
import com.librechat.android.core.data.db.LibreChatDatabase import com.garfiec.librechat.core.data.db.LibreChatDatabase
import com.librechat.android.core.data.repository.CommonSessionCacheCleaner import com.garfiec.librechat.core.data.repository.CommonSessionCacheCleaner
import com.librechat.android.core.data.repository.SessionCacheCleaner import com.garfiec.librechat.core.data.repository.SessionCacheCleaner
import com.librechat.android.core.network.client.SecureTokenStorage import com.garfiec.librechat.core.network.client.SecureTokenStorage
import com.librechat.android.core.network.client.TokenManager import com.garfiec.librechat.core.network.client.TokenManager
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
import org.koin.core.module.Module import org.koin.core.module.Module

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import java.io.File import java.io.File

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.PreferenceDataStoreFactory import androidx.datastore.preferences.core.PreferenceDataStoreFactory

View file

@ -0,0 +1,45 @@
package com.garfiec.librechat.core.data.di
import org.junit.Test
import org.koin.test.verify.verify
class DataModuleVerificationTest {
@Test
fun verifyDataModule() {
dataModule.verify(
extraTypes = listOf(
android.content.Context::class,
android.app.Application::class,
androidx.lifecycle.SavedStateHandle::class,
kotlin.Lazy::class,
io.ktor.client.HttpClient::class,
kotlinx.serialization.json.Json::class,
kotlinx.coroutines.CoroutineDispatcher::class,
com.garfiec.librechat.core.common.network.ConnectivityObserver::class,
com.garfiec.librechat.core.network.sse.SseClient::class,
com.garfiec.librechat.core.network.api.AuthApi::class,
com.garfiec.librechat.core.network.api.UserApi::class,
com.garfiec.librechat.core.network.api.ChatApi::class,
com.garfiec.librechat.core.network.api.ConversationsApi::class,
com.garfiec.librechat.core.network.api.MessagesApi::class,
com.garfiec.librechat.core.network.api.FilesApi::class,
com.garfiec.librechat.core.network.api.FilesExtApi::class,
com.garfiec.librechat.core.network.api.AgentsApi::class,
com.garfiec.librechat.core.network.api.PresetsApi::class,
com.garfiec.librechat.core.network.api.PromptsApi::class,
com.garfiec.librechat.core.network.api.TagsApi::class,
com.garfiec.librechat.core.network.api.ShareApi::class,
com.garfiec.librechat.core.network.api.ConfigApi::class,
com.garfiec.librechat.core.network.api.BalanceApi::class,
com.garfiec.librechat.core.network.api.SearchApi::class,
com.garfiec.librechat.core.network.api.KeysApi::class,
com.garfiec.librechat.core.network.api.ApiKeysApi::class,
com.garfiec.librechat.core.network.api.McpApi::class,
com.garfiec.librechat.core.network.api.MemoriesApi::class,
com.garfiec.librechat.core.network.api.SpeechApi::class,
com.garfiec.librechat.core.network.api.BannerApi::class,
androidx.datastore.core.DataStore::class,
),
)
}
}

View file

@ -1,45 +0,0 @@
package com.librechat.android.core.data.di
import org.junit.Test
import org.koin.test.verify.verify
class DataModuleVerificationTest {
@Test
fun verifyDataModule() {
dataModule.verify(
extraTypes = listOf(
android.content.Context::class,
android.app.Application::class,
androidx.lifecycle.SavedStateHandle::class,
kotlin.Lazy::class,
io.ktor.client.HttpClient::class,
kotlinx.serialization.json.Json::class,
kotlinx.coroutines.CoroutineDispatcher::class,
com.librechat.android.core.common.network.ConnectivityObserver::class,
com.librechat.android.core.network.sse.SseClient::class,
com.librechat.android.core.network.api.AuthApi::class,
com.librechat.android.core.network.api.UserApi::class,
com.librechat.android.core.network.api.ChatApi::class,
com.librechat.android.core.network.api.ConversationsApi::class,
com.librechat.android.core.network.api.MessagesApi::class,
com.librechat.android.core.network.api.FilesApi::class,
com.librechat.android.core.network.api.FilesExtApi::class,
com.librechat.android.core.network.api.AgentsApi::class,
com.librechat.android.core.network.api.PresetsApi::class,
com.librechat.android.core.network.api.PromptsApi::class,
com.librechat.android.core.network.api.TagsApi::class,
com.librechat.android.core.network.api.ShareApi::class,
com.librechat.android.core.network.api.ConfigApi::class,
com.librechat.android.core.network.api.BalanceApi::class,
com.librechat.android.core.network.api.SearchApi::class,
com.librechat.android.core.network.api.KeysApi::class,
com.librechat.android.core.network.api.ApiKeysApi::class,
com.librechat.android.core.network.api.McpApi::class,
com.librechat.android.core.network.api.MemoriesApi::class,
com.librechat.android.core.network.api.SpeechApi::class,
com.librechat.android.core.network.api.BannerApi::class,
androidx.datastore.core.DataStore::class,
),
)
}
}

View file

@ -1,10 +1,10 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import co.touchlab.kermit.Logger import co.touchlab.kermit.Logger
import com.librechat.android.core.model.response.RefreshResponse import com.garfiec.librechat.core.model.response.RefreshResponse
import com.librechat.android.core.network.client.CookieHelper import com.garfiec.librechat.core.network.client.CookieHelper
import com.librechat.android.core.network.client.SecureTokenStorage import com.garfiec.librechat.core.network.client.SecureTokenStorage
import com.librechat.android.core.network.client.TokenManager import com.garfiec.librechat.core.network.client.TokenManager
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import io.ktor.client.call.body import io.ktor.client.call.body
import io.ktor.client.plugins.ClientRequestException import io.ktor.client.plugins.ClientRequestException

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey
import com.librechat.android.core.model.EndpointConfig import com.garfiec.librechat.core.model.EndpointConfig
import com.librechat.android.core.model.StartupConfig import com.garfiec.librechat.core.model.StartupConfig
import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.first
import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.builtins.MapSerializer import kotlinx.serialization.builtins.MapSerializer

View file

@ -1,10 +1,10 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey import androidx.datastore.preferences.core.stringPreferencesKey
import com.librechat.android.core.network.client.ServerUrlProvider import com.garfiec.librechat.core.network.client.ServerUrlProvider
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.Preferences

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.datastore package com.garfiec.librechat.core.data.datastore
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.Preferences

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db package com.garfiec.librechat.core.data.db
import androidx.room.AutoMigration import androidx.room.AutoMigration
import androidx.room.ConstructedBy import androidx.room.ConstructedBy
@ -6,21 +6,21 @@ import androidx.room.Database
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.RoomDatabaseConstructor import androidx.room.RoomDatabaseConstructor
import androidx.room.TypeConverters import androidx.room.TypeConverters
import com.librechat.android.core.data.db.converter.Converters import com.garfiec.librechat.core.data.db.converter.Converters
import com.librechat.android.core.data.db.dao.AgentDao import com.garfiec.librechat.core.data.db.dao.AgentDao
import com.librechat.android.core.data.db.dao.ConversationDao import com.garfiec.librechat.core.data.db.dao.ConversationDao
import com.librechat.android.core.data.db.dao.ConversationTagDao import com.garfiec.librechat.core.data.db.dao.ConversationTagDao
import com.librechat.android.core.data.db.dao.DraftDao import com.garfiec.librechat.core.data.db.dao.DraftDao
import com.librechat.android.core.data.db.dao.FileDao import com.garfiec.librechat.core.data.db.dao.FileDao
import com.librechat.android.core.data.db.dao.MessageDao import com.garfiec.librechat.core.data.db.dao.MessageDao
import com.librechat.android.core.data.db.dao.PresetDao import com.garfiec.librechat.core.data.db.dao.PresetDao
import com.librechat.android.core.data.db.entity.AgentEntity import com.garfiec.librechat.core.data.db.entity.AgentEntity
import com.librechat.android.core.data.db.entity.ConversationEntity import com.garfiec.librechat.core.data.db.entity.ConversationEntity
import com.librechat.android.core.data.db.entity.ConversationTagEntity import com.garfiec.librechat.core.data.db.entity.ConversationTagEntity
import com.librechat.android.core.data.db.entity.DraftEntity import com.garfiec.librechat.core.data.db.entity.DraftEntity
import com.librechat.android.core.data.db.entity.FileEntity import com.garfiec.librechat.core.data.db.entity.FileEntity
import com.librechat.android.core.data.db.entity.MessageEntity import com.garfiec.librechat.core.data.db.entity.MessageEntity
import com.librechat.android.core.data.db.entity.PresetEntity import com.garfiec.librechat.core.data.db.entity.PresetEntity
@Database( @Database(
entities = [ entities = [

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.converter package com.garfiec.librechat.core.data.db.converter
import androidx.room.TypeConverter import androidx.room.TypeConverter
import kotlinx.serialization.encodeToString import kotlinx.serialization.encodeToString

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.AgentEntity import com.garfiec.librechat.core.data.db.entity.AgentEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.ConversationEntity import com.garfiec.librechat.core.data.db.entity.ConversationEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.ConversationTagEntity import com.garfiec.librechat.core.data.db.entity.ConversationTagEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.DraftEntity import com.garfiec.librechat.core.data.db.entity.DraftEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.FileEntity import com.garfiec.librechat.core.data.db.entity.FileEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.MessageEntity import com.garfiec.librechat.core.data.db.entity.MessageEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.db.dao package com.garfiec.librechat.core.data.db.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.librechat.android.core.data.db.entity.PresetEntity import com.garfiec.librechat.core.data.db.entity.PresetEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity import androidx.room.Entity
import androidx.room.Index import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity import androidx.room.Entity
import androidx.room.Index import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity import androidx.room.Entity
import androidx.room.Index import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity import androidx.room.Entity
import androidx.room.Index import androidx.room.Index

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.db.entity package com.garfiec.librechat.core.data.db.entity
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey

View file

@ -0,0 +1,135 @@
package com.garfiec.librechat.core.data.di
import com.garfiec.librechat.core.common.di.KoinQualifiers
import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore
import com.garfiec.librechat.core.data.datastore.ServerDataStore
import com.garfiec.librechat.core.data.datastore.ServerUrlKeychainFallback
import com.garfiec.librechat.core.data.datastore.SettingsDataStore
import com.garfiec.librechat.core.data.datastore.ThemeDataStore
import com.garfiec.librechat.core.data.db.LibreChatDatabase
import com.garfiec.librechat.core.data.repository.AgentRepository
import com.garfiec.librechat.core.data.repository.AgentRepositoryImpl
import com.garfiec.librechat.core.data.repository.ApiKeyRepository
import com.garfiec.librechat.core.data.repository.ApiKeyRepositoryImpl
import com.garfiec.librechat.core.data.repository.AuthRepository
import com.garfiec.librechat.core.data.repository.AuthRepositoryImpl
import com.garfiec.librechat.core.data.repository.BalanceRepository
import com.garfiec.librechat.core.data.repository.BalanceRepositoryImpl
import com.garfiec.librechat.core.data.repository.BannerRepository
import com.garfiec.librechat.core.data.repository.BannerRepositoryImpl
import com.garfiec.librechat.core.data.repository.ChatRepository
import com.garfiec.librechat.core.data.repository.ChatRepositoryImpl
import com.garfiec.librechat.core.data.repository.ConfigRepository
import com.garfiec.librechat.core.data.repository.ConfigRepositoryImpl
import com.garfiec.librechat.core.data.repository.ConversationRepository
import com.garfiec.librechat.core.data.repository.ConversationRepositoryImpl
import com.garfiec.librechat.core.data.repository.DraftRepository
import com.garfiec.librechat.core.data.repository.DraftRepositoryImpl
import com.garfiec.librechat.core.data.repository.FileRepository
import com.garfiec.librechat.core.data.repository.FileRepositoryImpl
import com.garfiec.librechat.core.data.repository.KeyRepository
import com.garfiec.librechat.core.data.repository.KeyRepositoryImpl
import com.garfiec.librechat.core.data.repository.McpRepository
import com.garfiec.librechat.core.data.repository.McpRepositoryImpl
import com.garfiec.librechat.core.data.repository.MemoryRepository
import com.garfiec.librechat.core.data.repository.MemoryRepositoryImpl
import com.garfiec.librechat.core.data.repository.MessageRepository
import com.garfiec.librechat.core.data.repository.MessageRepositoryImpl
import com.garfiec.librechat.core.data.repository.PresetRepository
import com.garfiec.librechat.core.data.repository.PresetRepositoryImpl
import com.garfiec.librechat.core.data.repository.PromptRepository
import com.garfiec.librechat.core.data.repository.PromptRepositoryImpl
import com.garfiec.librechat.core.data.repository.SearchRepository
import com.garfiec.librechat.core.data.repository.SearchRepositoryImpl
import com.garfiec.librechat.core.data.repository.SessionCacheCleaner
import com.garfiec.librechat.core.data.repository.ShareRepository
import com.garfiec.librechat.core.data.repository.ShareRepositoryImpl
import com.garfiec.librechat.core.data.repository.SpeechRepository
import com.garfiec.librechat.core.data.repository.SpeechRepositoryImpl
import com.garfiec.librechat.core.data.repository.TagRepository
import com.garfiec.librechat.core.data.repository.TagRepositoryImpl
import com.garfiec.librechat.core.data.repository.UserRepository
import com.garfiec.librechat.core.data.repository.UserRepositoryImpl
import com.garfiec.librechat.core.network.client.ServerUrlProvider
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module
expect val dataPlatformModule: Module
val dataModule = module {
includes(dataPlatformModule)
// --- DAOs ---
single { get<LibreChatDatabase>().conversationDao() }
single { get<LibreChatDatabase>().messageDao() }
single { get<LibreChatDatabase>().fileDao() }
single { get<LibreChatDatabase>().agentDao() }
single { get<LibreChatDatabase>().presetDao() }
single { get<LibreChatDatabase>().conversationTagDao() }
single { get<LibreChatDatabase>().draftDao() }
// --- Datastores ---
single {
ServerDataStore(
dataStore = get(),
ioDispatcher = get(KoinQualifiers.IO),
keychainFallback = getOrNull(),
)
} bind ServerUrlProvider::class
singleOf(::ThemeDataStore)
singleOf(::ConfigCacheDataStore)
singleOf(::SettingsDataStore)
// --- Repositories (special wiring) ---
single<AuthRepository> {
AuthRepositoryImpl(
authApi = get(),
userApi = get(),
tokenManager = get(),
sessionCacheCleaner = get(),
)
}
single<ChatRepository> {
ChatRepositoryImpl(
chatApi = get(),
sseClient = get(),
sseHttpClient = get(KoinQualifiers.Streaming),
connectivityObserver = get(),
)
}
single<DraftRepository> {
DraftRepositoryImpl(
draftDao = get(),
ioDispatcher = get(KoinQualifiers.IO),
)
}
// --- Repositories (simple auto-wiring) ---
singleOf(::BalanceRepositoryImpl) bind BalanceRepository::class
singleOf(::ConfigRepositoryImpl) bind ConfigRepository::class
singleOf(::ConversationRepositoryImpl) bind ConversationRepository::class
singleOf(::MessageRepositoryImpl) bind MessageRepository::class
singleOf(::FileRepositoryImpl) bind FileRepository::class
singleOf(::AgentRepositoryImpl) bind AgentRepository::class
singleOf(::TagRepositoryImpl) bind TagRepository::class
singleOf(::SearchRepositoryImpl) bind SearchRepository::class
singleOf(::KeyRepositoryImpl) bind KeyRepository::class
singleOf(::ApiKeyRepositoryImpl) bind ApiKeyRepository::class
singleOf(::McpRepositoryImpl) bind McpRepository::class
singleOf(::MemoryRepositoryImpl) bind MemoryRepository::class
singleOf(::PresetRepositoryImpl) bind PresetRepository::class
singleOf(::PromptRepositoryImpl) bind PromptRepository::class
singleOf(::ShareRepositoryImpl) bind ShareRepository::class
singleOf(::SpeechRepositoryImpl) bind SpeechRepository::class
singleOf(::UserRepositoryImpl) bind UserRepository::class
singleOf(::BannerRepositoryImpl) bind BannerRepository::class
}

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.di package com.garfiec.librechat.core.data.di
/** /**
* The base name used for the DataStore preferences file on all platforms. * The base name used for the DataStore preferences file on all platforms.

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.mapper package com.garfiec.librechat.core.data.mapper
import com.librechat.android.core.data.db.entity.ConversationEntity import com.garfiec.librechat.core.data.db.entity.ConversationEntity
import com.librechat.android.core.model.Conversation import com.garfiec.librechat.core.model.Conversation
import com.librechat.android.core.model.EModelEndpoint import com.garfiec.librechat.core.model.EModelEndpoint
import kotlin.time.Clock import kotlin.time.Clock
import kotlin.time.Instant import kotlin.time.Instant
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.mapper package com.garfiec.librechat.core.data.mapper
import com.librechat.android.core.data.db.entity.MessageEntity import com.garfiec.librechat.core.data.db.entity.MessageEntity
import com.librechat.android.core.model.Attachment import com.garfiec.librechat.core.model.Attachment
import com.librechat.android.core.model.Feedback import com.garfiec.librechat.core.model.Feedback
import com.librechat.android.core.model.FileReference import com.garfiec.librechat.core.model.FileReference
import com.librechat.android.core.model.Message import com.garfiec.librechat.core.model.Message
import com.librechat.android.core.model.MessageContentPart import com.garfiec.librechat.core.model.MessageContentPart
import kotlin.time.Clock import kotlin.time.Clock
import kotlin.time.Instant import kotlin.time.Instant
import kotlinx.serialization.builtins.ListSerializer import kotlinx.serialization.builtins.ListSerializer

View file

@ -1,20 +1,20 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.Agent import com.garfiec.librechat.core.model.Agent
import com.librechat.android.core.model.AgentAction import com.garfiec.librechat.core.model.AgentAction
import com.librechat.android.core.model.AgentCategory import com.garfiec.librechat.core.model.AgentCategory
import com.librechat.android.core.model.AgentExpanded import com.garfiec.librechat.core.model.AgentExpanded
import com.librechat.android.core.model.AgentTool import com.garfiec.librechat.core.model.AgentTool
import com.librechat.android.core.model.PaginatedAgents import com.garfiec.librechat.core.model.PaginatedAgents
import com.librechat.android.core.model.ToolAuthStatus import com.garfiec.librechat.core.model.ToolAuthStatus
import com.librechat.android.core.model.ToolCallRecord import com.garfiec.librechat.core.model.ToolCallRecord
import com.librechat.android.core.model.ToolCallResult import com.garfiec.librechat.core.model.ToolCallResult
import com.librechat.android.core.model.request.CreateActionRequest import com.garfiec.librechat.core.model.request.CreateActionRequest
import com.librechat.android.core.model.request.CreateAgentRequest import com.garfiec.librechat.core.model.request.CreateAgentRequest
import com.librechat.android.core.model.request.RevertAgentRequest import com.garfiec.librechat.core.model.request.RevertAgentRequest
import com.librechat.android.core.model.request.ToolCallRequest import com.garfiec.librechat.core.model.request.ToolCallRequest
import com.librechat.android.core.model.request.UpdateAgentRequest import com.garfiec.librechat.core.model.request.UpdateAgentRequest
interface AgentRepository { interface AgentRepository {

View file

@ -1,22 +1,22 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.model.Agent import com.garfiec.librechat.core.model.Agent
import com.librechat.android.core.model.AgentAction import com.garfiec.librechat.core.model.AgentAction
import com.librechat.android.core.model.AgentCategory import com.garfiec.librechat.core.model.AgentCategory
import com.librechat.android.core.model.AgentExpanded import com.garfiec.librechat.core.model.AgentExpanded
import com.librechat.android.core.model.AgentTool import com.garfiec.librechat.core.model.AgentTool
import com.librechat.android.core.model.PaginatedAgents import com.garfiec.librechat.core.model.PaginatedAgents
import com.librechat.android.core.model.ToolAuthStatus import com.garfiec.librechat.core.model.ToolAuthStatus
import com.librechat.android.core.model.ToolCallRecord import com.garfiec.librechat.core.model.ToolCallRecord
import com.librechat.android.core.model.ToolCallResult import com.garfiec.librechat.core.model.ToolCallResult
import com.librechat.android.core.model.request.CreateActionRequest import com.garfiec.librechat.core.model.request.CreateActionRequest
import com.librechat.android.core.model.request.CreateAgentRequest import com.garfiec.librechat.core.model.request.CreateAgentRequest
import com.librechat.android.core.model.request.RevertAgentRequest import com.garfiec.librechat.core.model.request.RevertAgentRequest
import com.librechat.android.core.model.request.ToolCallRequest import com.garfiec.librechat.core.model.request.ToolCallRequest
import com.librechat.android.core.model.request.UpdateAgentRequest import com.garfiec.librechat.core.model.request.UpdateAgentRequest
import com.librechat.android.core.network.api.AgentsApi import com.garfiec.librechat.core.network.api.AgentsApi
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
class AgentRepositoryImpl( class AgentRepositoryImpl(

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.ApiKey import com.garfiec.librechat.core.model.ApiKey
import com.librechat.android.core.model.request.CreateApiKeyRequest import com.garfiec.librechat.core.model.request.CreateApiKeyRequest
interface ApiKeyRepository { interface ApiKeyRepository {
suspend fun createApiKey(request: CreateApiKeyRequest): Result<ApiKey> suspend fun createApiKey(request: CreateApiKeyRequest): Result<ApiKey>

View file

@ -1,10 +1,10 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.model.ApiKey import com.garfiec.librechat.core.model.ApiKey
import com.librechat.android.core.model.request.CreateApiKeyRequest import com.garfiec.librechat.core.model.request.CreateApiKeyRequest
import com.librechat.android.core.network.api.ApiKeysApi import com.garfiec.librechat.core.network.api.ApiKeysApi
class ApiKeyRepositoryImpl( class ApiKeyRepositoryImpl(
private val apiKeysApi: ApiKeysApi, private val apiKeysApi: ApiKeysApi,

View file

@ -1,9 +1,9 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.LoginOutcome import com.garfiec.librechat.core.model.LoginOutcome
import com.librechat.android.core.model.User import com.garfiec.librechat.core.model.User
import com.librechat.android.core.model.response.TwoFactorSetupResponse import com.garfiec.librechat.core.model.response.TwoFactorSetupResponse
interface AuthRepository { interface AuthRepository {
suspend fun login(email: String, password: String): Result<LoginOutcome> suspend fun login(email: String, password: String): Result<LoginOutcome>

View file

@ -1,13 +1,13 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.model.LoginOutcome import com.garfiec.librechat.core.model.LoginOutcome
import com.librechat.android.core.model.User import com.garfiec.librechat.core.model.User
import com.librechat.android.core.model.response.TwoFactorSetupResponse import com.garfiec.librechat.core.model.response.TwoFactorSetupResponse
import com.librechat.android.core.network.api.AuthApi import com.garfiec.librechat.core.network.api.AuthApi
import com.librechat.android.core.network.api.UserApi import com.garfiec.librechat.core.network.api.UserApi
import com.librechat.android.core.network.client.TokenManager import com.garfiec.librechat.core.network.client.TokenManager
class AuthRepositoryImpl( class AuthRepositoryImpl(
private val authApi: AuthApi, private val authApi: AuthApi,

View file

@ -0,0 +1,8 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.Balance
interface BalanceRepository {
suspend fun getBalance(): Result<Balance>
}

View file

@ -0,0 +1,15 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.Balance
import com.garfiec.librechat.core.network.api.BalanceApi
class BalanceRepositoryImpl(
private val balanceApi: BalanceApi,
) : BalanceRepository {
override suspend fun getBalance(): Result<Balance> = safeApiCall {
balanceApi.getBalance()
}
}

View file

@ -0,0 +1,9 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.model.Banner
/** Fetches server-configured banners for display in the app. */
interface BannerRepository {
suspend fun getBanners(): Result<List<Banner>>
}

View file

@ -0,0 +1,14 @@
package com.garfiec.librechat.core.data.repository
import com.garfiec.librechat.core.common.result.Result
import com.garfiec.librechat.core.common.result.safeApiCall
import com.garfiec.librechat.core.model.Banner
import com.garfiec.librechat.core.network.api.BannerApi
class BannerRepositoryImpl(
private val bannerApi: BannerApi,
) : BannerRepository {
override suspend fun getBanners(): Result<List<Banner>> =
safeApiCall { bannerApi.getBanners() }
}

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import co.touchlab.kermit.Logger import co.touchlab.kermit.Logger

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.model.EModelEndpoint import com.garfiec.librechat.core.model.EModelEndpoint
import com.librechat.android.core.model.FileReference import com.garfiec.librechat.core.model.FileReference
import com.librechat.android.core.model.request.AddedConversation import com.garfiec.librechat.core.model.request.AddedConversation
import com.librechat.android.core.model.request.ChatRequest import com.garfiec.librechat.core.model.request.ChatRequest
import com.librechat.android.core.model.request.EphemeralAgent import com.garfiec.librechat.core.model.request.EphemeralAgent
import com.librechat.android.core.model.request.NO_PARENT import com.garfiec.librechat.core.model.request.NO_PARENT
object ChatPayloadBuilder { object ChatPayloadBuilder {

View file

@ -1,11 +1,11 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.FileReference import com.garfiec.librechat.core.model.FileReference
import com.librechat.android.core.model.StreamEvent import com.garfiec.librechat.core.model.StreamEvent
import com.librechat.android.core.model.request.AddedConversation import com.garfiec.librechat.core.model.request.AddedConversation
import com.librechat.android.core.model.request.EphemeralAgent import com.garfiec.librechat.core.model.request.EphemeralAgent
import com.librechat.android.core.model.response.ChatStatusResponse import com.garfiec.librechat.core.model.response.ChatStatusResponse
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
interface ChatRepository { interface ChatRepository {

View file

@ -1,15 +1,15 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.network.ConnectivityObserver import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.model.FileReference import com.garfiec.librechat.core.model.FileReference
import com.librechat.android.core.model.StreamEvent import com.garfiec.librechat.core.model.StreamEvent
import com.librechat.android.core.model.request.AddedConversation import com.garfiec.librechat.core.model.request.AddedConversation
import com.librechat.android.core.model.request.EphemeralAgent import com.garfiec.librechat.core.model.request.EphemeralAgent
import com.librechat.android.core.model.response.ChatStatusResponse import com.garfiec.librechat.core.model.response.ChatStatusResponse
import com.librechat.android.core.network.api.ChatApi import com.garfiec.librechat.core.network.api.ChatApi
import com.librechat.android.core.network.sse.SseClient import com.garfiec.librechat.core.network.sse.SseClient
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.emitAll import kotlinx.coroutines.flow.emitAll

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.EndpointConfig import com.garfiec.librechat.core.model.EndpointConfig
import com.librechat.android.core.model.StartupConfig import com.garfiec.librechat.core.model.StartupConfig
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
/** /**

View file

@ -1,13 +1,13 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.BackendVersion import com.garfiec.librechat.core.common.BackendVersion
import com.librechat.android.core.common.result.ApiException import com.garfiec.librechat.core.common.result.ApiException
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.data.datastore.ConfigCacheDataStore import com.garfiec.librechat.core.data.datastore.ConfigCacheDataStore
import com.librechat.android.core.model.EndpointConfig import com.garfiec.librechat.core.model.EndpointConfig
import com.librechat.android.core.model.StartupConfig import com.garfiec.librechat.core.model.StartupConfig
import com.librechat.android.core.network.api.ConfigApi import com.garfiec.librechat.core.network.api.ConfigApi
import io.ktor.client.plugins.HttpRequestTimeoutException import io.ktor.client.plugins.HttpRequestTimeoutException
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.Conversation import com.garfiec.librechat.core.model.Conversation
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
interface ConversationRepository { interface ConversationRepository {

View file

@ -1,14 +1,14 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.data.db.dao.ConversationDao import com.garfiec.librechat.core.data.db.dao.ConversationDao
import com.librechat.android.core.data.mapper.toEntity import com.garfiec.librechat.core.data.mapper.toEntity
import com.librechat.android.core.data.mapper.toModel import com.garfiec.librechat.core.data.mapper.toModel
import com.librechat.android.core.data.mapper.toModels import com.garfiec.librechat.core.data.mapper.toModels
import com.librechat.android.core.model.Conversation import com.garfiec.librechat.core.model.Conversation
import com.librechat.android.core.model.request.ForkConversationRequest import com.garfiec.librechat.core.model.request.ForkConversationRequest
import com.librechat.android.core.network.api.ConversationsApi import com.garfiec.librechat.core.network.api.ConversationsApi
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlin.time.Clock import kotlin.time.Clock

View file

@ -1,4 +1,4 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow

View file

@ -1,7 +1,7 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.data.db.dao.DraftDao import com.garfiec.librechat.core.data.db.dao.DraftDao
import com.librechat.android.core.data.db.entity.DraftEntity import com.garfiec.librechat.core.data.db.entity.DraftEntity
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job import kotlinx.coroutines.Job

View file

@ -1,8 +1,8 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.model.FileObject import com.garfiec.librechat.core.model.FileObject
import com.librechat.android.core.model.request.DeleteFileEntry import com.garfiec.librechat.core.model.request.DeleteFileEntry
interface FileRepository { interface FileRepository {
suspend fun getFiles(): Result<List<FileObject>> suspend fun getFiles(): Result<List<FileObject>>

View file

@ -1,12 +1,12 @@
package com.librechat.android.core.data.repository package com.garfiec.librechat.core.data.repository
import com.librechat.android.core.common.result.Result import com.garfiec.librechat.core.common.result.Result
import com.librechat.android.core.common.result.safeApiCall import com.garfiec.librechat.core.common.result.safeApiCall
import com.librechat.android.core.model.FileObject import com.garfiec.librechat.core.model.FileObject
import com.librechat.android.core.model.request.DeleteFileEntry import com.garfiec.librechat.core.model.request.DeleteFileEntry
import com.librechat.android.core.model.request.DeleteFilesRequest import com.garfiec.librechat.core.model.request.DeleteFilesRequest
import com.librechat.android.core.network.api.FilesApi import com.garfiec.librechat.core.network.api.FilesApi
import com.librechat.android.core.network.api.FilesExtApi import com.garfiec.librechat.core.network.api.FilesExtApi
import kotlin.uuid.ExperimentalUuidApi import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid import kotlin.uuid.Uuid

Some files were not shown because too many files have changed in this diff Show more