refactor: Enhance application structure and improve code organization

This commit refactors various components across the application to improve maintainability and readability.

- Updated `AndroidManifest.xml` to streamline activity declarations and intent filters.
- Refined `build.gradle.kts` for better dependency management and project configuration.
- Improved proguard rules for better code obfuscation and optimization.
- Enhanced documentation in `README.md` and `README_APP_LINKS.md` for clarity on app links and setup.
- Refactored multiple Kotlin files to adhere to clean architecture principles, ensuring better separation of concerns and modularity.
- Optimized imports and removed unused code across various files to reduce clutter and improve performance.
- Updated UI components to align with Material 3 design guidelines, enhancing the overall user experience.
This commit is contained in:
AbronStudio 2025-08-10 15:10:52 +03:30
parent 73bb8b2b58
commit 7346bc393f
277 changed files with 1802 additions and 1546 deletions

View File

@ -8,7 +8,7 @@ API.
| Module | Package | Description |
|--------|---------------|----------------------|
| `:app` | `chat.revolt` | The main app module. |
| `:app` | `chat.peptide` | The main app module. |
The API library is part of the `app` module, and is not intended to be used as a standalone library,
as it makes liberal use of Android-specific APIs for reactivity.

View File

@ -153,7 +153,7 @@ android {
androidResources {
generateLocaleConfig = true
}
namespace = "chat.revolt"
namespace = "chat.peptide"
externalNativeBuild {
cmake {
path(file("src/main/cpp/CMakeLists.txt"))
@ -337,7 +337,7 @@ aboutLibraries {
sqldelight {
databases {
create("Database") {
packageName.set("chat.revolt.persistence")
packageName.set("chat.peptide.persistence")
}
}
}

View File

@ -109,4 +109,4 @@
public <fields>;
}
-keep class chat.revolt.ndk.AstNode { *; }
-keep class chat.peptide.ndk.AstNode { *; }

View File

@ -90,7 +90,7 @@
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="app.revolt.chat" />
<data android:host="app.peptide.chat" />
<data android:pathPrefix="/invite/" />
</intent-filter>

View File

@ -32,7 +32,7 @@ Open the `assetlinks.json` file in this directory and replace the placeholder wi
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "chat.revolt",
"package_name": "chat.peptide",
"sha256_cert_fingerprints": [
"YOUR_SHA256_FINGERPRINT_HERE"
]
@ -56,7 +56,7 @@ Make sure the file is accessible via HTTPS and returns with Content-Type: applic
Use the Android Debug Bridge (ADB) to test your App Links:
```bash
adb shell am start -a android.intent.action.VIEW -d "https://revolt.chat/channels/CHANNEL_ID" chat.revolt
adb shell am start -a android.intent.action.VIEW -d "https://revolt.chat/channels/CHANNEL_ID" chat.peptide
```
## Troubleshooting

View File

@ -32,7 +32,7 @@ namespace Stendal {
constructArrayListMethod = env->GetMethodID(localArrayListClass, "<init>", "(I)V");
addArrayListMethod = env->GetMethodID(localArrayListClass, "add", "(Ljava/lang/Object;)Z");
jclass localAstNodeClass = env->FindClass("chat/revolt/ndk/AstNode");
jclass localAstNodeClass = env->FindClass("chat/peptide/ndk/AstNode");
astNodeClass = (jclass) env->NewGlobalRef(localAstNodeClass);
astNodeConstructor = env->GetMethodID(localAstNodeClass, "<init>",
STENDAL_ASTNODE_CONSTRUCTOR_SIGNATURE);
@ -141,12 +141,12 @@ namespace Stendal {
extern "C"
JNIEXPORT void JNICALL
Java_chat_revolt_ndk_Stendal_init(JNIEnv *env, [[maybe_unused]] jobject thiz) {
Java_chat_peptide_ndk_Stendal_init(JNIEnv *env, [[maybe_unused]] jobject thiz) {
Stendal::init(env);
}
extern "C" JNIEXPORT jobject JNICALL
Java_chat_revolt_ndk_Stendal_render(JNIEnv *env, [[maybe_unused]] jobject thiz, jstring input) {
Java_chat_peptide_ndk_Stendal_render(JNIEnv *env, [[maybe_unused]] jobject thiz, jstring input) {
const char *inputStr = env->GetStringUTFChars(input, nullptr);
cmark_node *doc = cmark_parse_document(inputStr, strlen(inputStr),
CMARK_OPT_DEFAULT | CMARK_OPT_HARDBREAKS |

View File

@ -1,8 +1,8 @@
package chat.revolt
package chat.peptide
import android.app.Application
import chat.revolt.api.RevoltHttp
import chat.revolt.persistence.KVStorage
import chat.peptide.api.RevoltHttp
import chat.peptide.persistence.KVStorage
import com.google.android.material.color.DynamicColors
import dagger.hilt.android.HiltAndroidApp
import logcat.AndroidLogcatLogger

View File

@ -1,4 +1,4 @@
package chat.revolt.activities
package chat.peptide.activities
import android.content.Intent
import android.net.Uri
@ -6,8 +6,8 @@ import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import chat.revolt.persistence.KVStorage
import chat.revolt.utils.DeepLinkUtils
import chat.peptide.persistence.KVStorage
import chat.peptide.utils.DeepLinkUtils
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import javax.inject.Inject

View File

@ -1,4 +1,4 @@
package chat.revolt.activities
package chat.peptide.activities
import android.os.Bundle
import androidx.activity.ComponentActivity
@ -46,19 +46,19 @@ import androidx.core.view.WindowCompat
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.routes.invites.fetchInviteByCode
import chat.revolt.api.routes.invites.joinInviteByCode
import chat.revolt.api.schemas.Invite
import chat.revolt.api.schemas.InviteJoined
import chat.revolt.api.schemas.RsResult
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.composables.generic.IconPlaceholder
import chat.revolt.composables.generic.RemoteImage
import chat.revolt.ui.theme.RevoltTheme
import chat.peptide.R
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltError
import chat.peptide.api.routes.invites.fetchInviteByCode
import chat.peptide.api.routes.invites.joinInviteByCode
import chat.peptide.api.schemas.Invite
import chat.peptide.api.schemas.InviteJoined
import chat.peptide.api.schemas.RsResult
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.api.settings.SyncedSettings
import chat.peptide.composables.generic.IconPlaceholder
import chat.peptide.composables.generic.RemoteImage
import chat.peptide.ui.theme.RevoltTheme
import com.bumptech.glide.integration.compose.ExperimentalGlideComposeApi
import com.bumptech.glide.integration.compose.GlideImage
import kotlinx.coroutines.launch

View File

@ -1,4 +1,4 @@
package chat.revolt.activities
package chat.peptide.activities
import android.annotation.SuppressLint
import android.content.Context
@ -73,62 +73,62 @@ import androidx.lifecycle.viewModelScope
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import chat.revolt.BuildConfig
import chat.revolt.R
import chat.revolt.RevoltApplication
import chat.revolt.api.ApplicationPlatform
import chat.revolt.api.HitRateLimitException
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltAPI.setPlatform
import chat.revolt.api.RevoltHttp
import chat.revolt.api.UrlsStorageKeys
import chat.revolt.api.api
import chat.revolt.api.routes.microservices.geo.queryGeo
import chat.revolt.api.routes.microservices.health.healthCheck
import chat.revolt.api.routes.onboard.needsOnboarding
import chat.revolt.api.schemas.HealthNotice
import chat.revolt.api.settings.Experiments
import chat.revolt.api.settings.GeoStateProvider
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.composables.generic.HealthAlert
import chat.revolt.composables.voice.VoicePermissionSwitch
import chat.revolt.composables.voice.VoiceSheet
import chat.revolt.material.EasingTokens
import chat.revolt.ndk.NativeLibraries
import chat.revolt.persistence.KVStorage
import chat.revolt.screens.DefaultDestinationScreen
import chat.revolt.screens.about.AboutScreen
import chat.revolt.screens.about.AttributionScreen
import chat.revolt.screens.chat.ChatRouterScreen
import chat.revolt.screens.chat.views.channel.ChannelScreen
import chat.revolt.screens.chooseplatform.ChoosePlatformScreen
import chat.revolt.screens.create.CreateGroupScreen
import chat.revolt.screens.labs.LabsRootScreen
import chat.revolt.screens.login.LoginGreetingScreen
import chat.revolt.screens.login.LoginScreen
import chat.revolt.screens.login.MfaScreen
import chat.revolt.screens.login2.InitScreen
import chat.revolt.screens.main.MainScreen
import chat.revolt.screens.register.OnboardingScreen
import chat.revolt.screens.register.RegisterDetailsScreen
import chat.revolt.screens.register.RegisterGreetingScreen
import chat.revolt.screens.register.RegisterVerifyScreen
import chat.revolt.screens.services.DiscoverScreen
import chat.revolt.screens.settings.AppearanceSettingsScreen
import chat.revolt.screens.settings.ChangelogsSettingsScreen
import chat.revolt.screens.settings.ChatSettingsScreen
import chat.revolt.screens.settings.DebugSettingsScreen
import chat.revolt.screens.settings.ExperimentsSettingsScreen
import chat.revolt.screens.settings.LanguagePickerSettingsScreen
import chat.revolt.screens.settings.ProfileSettingsScreen
import chat.revolt.screens.settings.SessionSettingsScreen
import chat.revolt.screens.settings.SettingsScreen
import chat.revolt.screens.settings.channel.ChannelSettingsHome
import chat.revolt.screens.settings.channel.ChannelSettingsOverview
import chat.revolt.screens.settings.channel.ChannelSettingsPermissions
import chat.revolt.ui.theme.RevoltTheme
import chat.revolt.utils.DeepLinkHandler
import chat.peptide.BuildConfig
import chat.peptide.R
import chat.peptide.RevoltApplication
import chat.peptide.api.ApplicationPlatform
import chat.peptide.api.HitRateLimitException
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltAPI.setPlatform
import chat.peptide.api.RevoltHttp
import chat.peptide.api.UrlsStorageKeys
import chat.peptide.api.api
import chat.peptide.api.routes.microservices.geo.queryGeo
import chat.peptide.api.routes.microservices.health.healthCheck
import chat.peptide.api.routes.onboard.needsOnboarding
import chat.peptide.api.schemas.HealthNotice
import chat.peptide.api.settings.Experiments
import chat.peptide.api.settings.GeoStateProvider
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.api.settings.SyncedSettings
import chat.peptide.composables.generic.HealthAlert
import chat.peptide.composables.voice.VoicePermissionSwitch
import chat.peptide.composables.voice.VoiceSheet
import chat.peptide.material.EasingTokens
import chat.peptide.ndk.NativeLibraries
import chat.peptide.persistence.KVStorage
import chat.peptide.screens.DefaultDestinationScreen
import chat.peptide.screens.about.AboutScreen
import chat.peptide.screens.about.AttributionScreen
import chat.peptide.screens.chat.ChatRouterScreen
import chat.peptide.screens.chat.views.channel.ChannelScreen
import chat.peptide.screens.chooseplatform.ChoosePlatformScreen
import chat.peptide.screens.create.CreateGroupScreen
import chat.peptide.screens.labs.LabsRootScreen
import chat.peptide.screens.login.LoginGreetingScreen
import chat.peptide.screens.login.LoginScreen
import chat.peptide.screens.login.MfaScreen
import chat.peptide.screens.login2.InitScreen
import chat.peptide.screens.main.MainScreen
import chat.peptide.screens.register.OnboardingScreen
import chat.peptide.screens.register.RegisterDetailsScreen
import chat.peptide.screens.register.RegisterGreetingScreen
import chat.peptide.screens.register.RegisterVerifyScreen
import chat.peptide.screens.services.DiscoverScreen
import chat.peptide.screens.settings.AppearanceSettingsScreen
import chat.peptide.screens.settings.ChangelogsSettingsScreen
import chat.peptide.screens.settings.ChatSettingsScreen
import chat.peptide.screens.settings.DebugSettingsScreen
import chat.peptide.screens.settings.ExperimentsSettingsScreen
import chat.peptide.screens.settings.LanguagePickerSettingsScreen
import chat.peptide.screens.settings.ProfileSettingsScreen
import chat.peptide.screens.settings.SessionSettingsScreen
import chat.peptide.screens.settings.SettingsScreen
import chat.peptide.screens.settings.channel.ChannelSettingsHome
import chat.peptide.screens.settings.channel.ChannelSettingsOverview
import chat.peptide.screens.settings.channel.ChannelSettingsPermissions
import chat.peptide.ui.theme.RevoltTheme
import chat.peptide.utils.DeepLinkHandler
import com.google.android.material.color.DynamicColors
import dagger.hilt.android.AndroidEntryPoint
import dagger.hilt.android.lifecycle.HiltViewModel

View File

@ -1,4 +1,4 @@
package chat.revolt.activities
package chat.peptide.activities
import android.content.Intent
import android.net.Uri
@ -50,25 +50,25 @@ import androidx.documentfile.provider.DocumentFile
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.ChannelUtils
import chat.revolt.api.routes.channel.sendMessage
import chat.revolt.api.routes.microservices.autumn.FileArgs
import chat.revolt.api.routes.microservices.autumn.MAX_ATTACHMENTS_PER_MESSAGE
import chat.revolt.api.routes.microservices.autumn.uploadToAutumn
import chat.revolt.api.schemas.ChannelType
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.composables.chat.MessageField
import chat.revolt.composables.emoji.EmojiPicker
import chat.revolt.composables.screens.chat.AttachmentManager
import chat.revolt.composables.screens.chat.drawer.ChannelItem
import chat.revolt.composables.screens.chat.drawer.ChannelItemIconType
import chat.revolt.composables.screens.chat.drawer.DMOrGroupItem
import chat.revolt.persistence.KVStorage
import chat.revolt.screens.chat.views.channel.ChannelScreenActivePane
import chat.revolt.ui.theme.RevoltTheme
import chat.peptide.R
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.ChannelUtils
import chat.peptide.api.routes.channel.sendMessage
import chat.peptide.api.routes.microservices.autumn.FileArgs
import chat.peptide.api.routes.microservices.autumn.MAX_ATTACHMENTS_PER_MESSAGE
import chat.peptide.api.routes.microservices.autumn.uploadToAutumn
import chat.peptide.api.schemas.ChannelType
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.api.settings.SyncedSettings
import chat.peptide.composables.chat.MessageField
import chat.peptide.composables.emoji.EmojiPicker
import chat.peptide.composables.screens.chat.AttachmentManager
import chat.peptide.composables.screens.chat.drawer.ChannelItem
import chat.peptide.composables.screens.chat.drawer.ChannelItemIconType
import chat.peptide.composables.screens.chat.drawer.DMOrGroupItem
import chat.peptide.persistence.KVStorage
import chat.peptide.screens.chat.views.channel.ChannelScreenActivePane
import chat.peptide.ui.theme.RevoltTheme
import dagger.hilt.android.AndroidEntryPoint
import dagger.hilt.android.lifecycle.HiltViewModel
import io.ktor.http.ContentType

View File

@ -1,4 +1,4 @@
package chat.revolt.activities.media
package chat.peptide.activities.media
import android.content.ContentValues
import android.content.Intent
@ -40,14 +40,14 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.core.view.WindowCompat
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.schemas.AutumnResource
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.providers.getAttachmentContentUri
import chat.revolt.ui.theme.RevoltTheme
import chat.peptide.R
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltHttp
import chat.peptide.api.schemas.AutumnResource
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.api.settings.SyncedSettings
import chat.peptide.providers.getAttachmentContentUri
import chat.peptide.ui.theme.RevoltTheme
import io.ktor.client.request.get
import io.ktor.client.statement.readBytes
import kotlinx.coroutines.launch

View File

@ -1,4 +1,4 @@
package chat.revolt.activities.media
package chat.peptide.activities.media
import android.content.ContentValues
import android.content.Intent
@ -18,12 +18,12 @@ import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import androidx.media3.common.MediaItem
import androidx.media3.exoplayer.ExoPlayer
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.schemas.AutumnResource
import chat.revolt.databinding.ActivityVideoplayerBinding
import chat.revolt.providers.getAttachmentContentUri
import chat.peptide.R
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltHttp
import chat.peptide.api.schemas.AutumnResource
import chat.peptide.databinding.ActivityVideoplayerBinding
import chat.peptide.providers.getAttachmentContentUri
import com.google.android.material.color.MaterialColors
import com.google.android.material.snackbar.Snackbar
import io.ktor.client.request.get

View File

@ -1,26 +1,26 @@
package chat.revolt.api
package chat.peptide.api
import android.os.Handler
import android.os.Looper
import android.util.Log
import androidx.compose.runtime.mutableStateMapOf
import chat.revolt.BuildConfig
import chat.revolt.RevoltApplication
import chat.revolt.api.RevoltAPI.initialize
import chat.revolt.api.internals.Members
import chat.revolt.api.realtime.DisconnectionState
import chat.revolt.api.realtime.RealtimeSocket
import chat.revolt.api.routes.user.fetchSelf
import chat.revolt.api.schemas.AutumnResource
import chat.revolt.api.schemas.ChannelType
import chat.revolt.api.schemas.Emoji
import chat.revolt.api.schemas.Message
import chat.revolt.api.schemas.Server
import chat.revolt.api.schemas.User
import chat.revolt.api.unreads.Unreads
import chat.revolt.getKVStorage
import chat.revolt.persistence.Database
import chat.revolt.persistence.SqlStorage
import chat.peptide.BuildConfig
import chat.peptide.RevoltApplication
import chat.peptide.api.RevoltAPI.initialize
import chat.peptide.api.internals.Members
import chat.peptide.api.realtime.DisconnectionState
import chat.peptide.api.realtime.RealtimeSocket
import chat.peptide.api.routes.user.fetchSelf
import chat.peptide.api.schemas.AutumnResource
import chat.peptide.api.schemas.ChannelType
import chat.peptide.api.schemas.Emoji
import chat.peptide.api.schemas.Message
import chat.peptide.api.schemas.Server
import chat.peptide.api.schemas.User
import chat.peptide.api.unreads.Unreads
import chat.peptide.getKVStorage
import chat.peptide.persistence.Database
import chat.peptide.persistence.SqlStorage
import com.chuckerteam.chucker.api.ChuckerCollector
import com.chuckerteam.chucker.api.ChuckerInterceptor
import com.chuckerteam.chucker.api.RetentionManager
@ -52,7 +52,7 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.cbor.Cbor
import kotlinx.serialization.json.Json
import java.net.SocketException
import chat.revolt.api.schemas.Channel as ChannelSchema
import chat.peptide.api.schemas.Channel as ChannelSchema
/**
* Enum representing available platforms in the application.

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import android.util.Log
import androidx.compose.material3.LocalContentColor
@ -9,7 +9,7 @@ import androidx.compose.ui.graphics.Brush.Companion.linearGradient
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.core.graphics.toColorInt
import chat.revolt.api.internals.colour.CSSColours
import chat.peptide.api.internals.colour.CSSColours
fun Brush.Companion.solidColor(colour: Color) = SolidColor(colour)

View File

@ -1,13 +1,13 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import chat.revolt.api.RevoltAPI
import chat.revolt.api.schemas.Channel
import chat.revolt.api.schemas.Server
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.schemas.Channel
import chat.peptide.api.schemas.Server
import chat.peptide.api.schemas.User
sealed class CategorisedChannelList {
data class Channel(val channel: chat.revolt.api.schemas.Channel) : CategorisedChannelList()
data class Category(val category: chat.revolt.api.schemas.Category) : CategorisedChannelList()
data class Channel(val channel: chat.peptide.api.schemas.Channel) : CategorisedChannelList()
data class Category(val category: chat.peptide.api.schemas.Category) : CategorisedChannelList()
}
object ChannelUtils {

View File

@ -1,9 +1,9 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.SpecialUsers.PLATFORM_MODERATION_USER
import chat.revolt.api.schemas.Channel
import chat.revolt.api.schemas.ChannelType
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.SpecialUsers.PLATFORM_MODERATION_USER
import chat.peptide.api.schemas.Channel
import chat.peptide.api.schemas.ChannelType
object DirectMessages {
fun unreadDMs(): List<Channel> {

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import android.content.Context
import android.content.ContextWrapper

View File

@ -1,7 +1,7 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import chat.revolt.api.RevoltAPI
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.schemas.User
object FriendRequests {
fun getIncoming(): List<User> {

View File

@ -1,6 +1,6 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import chat.revolt.api.schemas.Member
import chat.peptide.api.schemas.Member
class Members {
// memberCache (mapping of serverId to userId to member)

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
/**
* Flags for messages that can be set to modify their behavior.

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
enum class PermissionBit(val value: Long) {
// * Generic permissions

View File

@ -1,8 +1,8 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import chat.revolt.api.RevoltAPI
import chat.revolt.api.api
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.api
import chat.peptide.api.schemas.User
object ResourceLocations {
fun userAvatarUrl(user: User?): String {

View File

@ -1,13 +1,13 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import chat.revolt.api.RevoltAPI
import chat.revolt.api.schemas.Channel
import chat.revolt.api.schemas.ChannelType
import chat.revolt.api.schemas.Member
import chat.revolt.api.schemas.PermissionDescription
import chat.revolt.api.schemas.Role
import chat.revolt.api.schemas.Server
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.schemas.Channel
import chat.peptide.api.schemas.ChannelType
import chat.peptide.api.schemas.Member
import chat.peptide.api.schemas.PermissionDescription
import chat.peptide.api.schemas.Role
import chat.peptide.api.schemas.Server
import chat.peptide.api.schemas.User
import kotlinx.datetime.Clock
object Roles {

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import android.content.Context
import android.graphics.RuntimeShader

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import android.graphics.LinearGradient
import android.graphics.Shader
@ -6,7 +6,7 @@ import android.util.Log
import android.widget.TextView
import androidx.compose.ui.graphics.toArgb
import androidx.core.graphics.toColorInt
import chat.revolt.api.internals.colour.CSSColours
import chat.peptide.api.internals.colour.CSSColours
import com.google.android.material.color.MaterialColors
import com.google.android.material.elevation.SurfaceColors

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import kotlin.experimental.and
import kotlin.random.Random

View File

@ -1,8 +1,8 @@
package chat.revolt.api.internals
package chat.peptide.api.internals
import androidx.core.net.toUri
import chat.revolt.api.RevoltCbor
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltCbor
import chat.peptide.api.schemas.User
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.Serializable
import kotlin.io.encoding.Base64

View File

@ -1,4 +1,4 @@
package chat.revolt.api.internals.colour
package chat.peptide.api.internals.colour
import androidx.compose.ui.graphics.Color

View File

@ -1,48 +1,48 @@
package chat.revolt.api.realtime
package chat.peptide.api.realtime
import android.util.Log
import androidx.compose.runtime.mutableStateOf
import chat.revolt.RevoltApplication
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.realtime.frames.receivable.AnyFrame
import chat.revolt.api.realtime.frames.receivable.BulkFrame
import chat.revolt.api.realtime.frames.receivable.ChannelAckFrame
import chat.revolt.api.realtime.frames.receivable.ChannelDeleteFrame
import chat.revolt.api.realtime.frames.receivable.ChannelStartTypingFrame
import chat.revolt.api.realtime.frames.receivable.ChannelStopTypingFrame
import chat.revolt.api.realtime.frames.receivable.ChannelUpdateFrame
import chat.revolt.api.realtime.frames.receivable.MessageAppendFrame
import chat.revolt.api.realtime.frames.receivable.MessageDeleteFrame
import chat.revolt.api.realtime.frames.receivable.MessageFrame
import chat.revolt.api.realtime.frames.receivable.MessageReactFrame
import chat.revolt.api.realtime.frames.receivable.MessageUpdateFrame
import chat.revolt.api.realtime.frames.receivable.PongFrame
import chat.revolt.api.realtime.frames.receivable.ReadyFrame
import chat.revolt.api.realtime.frames.receivable.ServerCreateFrame
import chat.revolt.api.realtime.frames.receivable.ServerDeleteFrame
import chat.revolt.api.realtime.frames.receivable.ServerMemberJoinFrame
import chat.revolt.api.realtime.frames.receivable.ServerMemberLeaveFrame
import chat.revolt.api.realtime.frames.receivable.ServerMemberUpdateFrame
import chat.revolt.api.realtime.frames.receivable.ServerRoleDeleteFrame
import chat.revolt.api.realtime.frames.receivable.ServerRoleUpdateFrame
import chat.revolt.api.realtime.frames.receivable.ServerUpdateFrame
import chat.revolt.api.realtime.frames.receivable.UserRelationshipFrame
import chat.revolt.api.realtime.frames.receivable.UserUpdateFrame
import chat.revolt.api.realtime.frames.sendable.AuthorizationFrame
import chat.revolt.api.realtime.frames.sendable.BeginTypingFrame
import chat.revolt.api.realtime.frames.sendable.EndTypingFrame
import chat.revolt.api.realtime.frames.sendable.PingFrame
import chat.revolt.api.routes.server.fetchMember
import chat.revolt.api.schemas.Channel
import chat.revolt.api.schemas.ChannelType
import chat.revolt.api.schemas.Role
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.api.settings.SyncedSettings
import chat.revolt.c2dm.ChannelRegistrator
import chat.revolt.persistence.Database
import chat.revolt.persistence.SqlStorage
import chat.peptide.RevoltApplication
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.realtime.frames.receivable.AnyFrame
import chat.peptide.api.realtime.frames.receivable.BulkFrame
import chat.peptide.api.realtime.frames.receivable.ChannelAckFrame
import chat.peptide.api.realtime.frames.receivable.ChannelDeleteFrame
import chat.peptide.api.realtime.frames.receivable.ChannelStartTypingFrame
import chat.peptide.api.realtime.frames.receivable.ChannelStopTypingFrame
import chat.peptide.api.realtime.frames.receivable.ChannelUpdateFrame
import chat.peptide.api.realtime.frames.receivable.MessageAppendFrame
import chat.peptide.api.realtime.frames.receivable.MessageDeleteFrame
import chat.peptide.api.realtime.frames.receivable.MessageFrame
import chat.peptide.api.realtime.frames.receivable.MessageReactFrame
import chat.peptide.api.realtime.frames.receivable.MessageUpdateFrame
import chat.peptide.api.realtime.frames.receivable.PongFrame
import chat.peptide.api.realtime.frames.receivable.ReadyFrame
import chat.peptide.api.realtime.frames.receivable.ServerCreateFrame
import chat.peptide.api.realtime.frames.receivable.ServerDeleteFrame
import chat.peptide.api.realtime.frames.receivable.ServerMemberJoinFrame
import chat.peptide.api.realtime.frames.receivable.ServerMemberLeaveFrame
import chat.peptide.api.realtime.frames.receivable.ServerMemberUpdateFrame
import chat.peptide.api.realtime.frames.receivable.ServerRoleDeleteFrame
import chat.peptide.api.realtime.frames.receivable.ServerRoleUpdateFrame
import chat.peptide.api.realtime.frames.receivable.ServerUpdateFrame
import chat.peptide.api.realtime.frames.receivable.UserRelationshipFrame
import chat.peptide.api.realtime.frames.receivable.UserUpdateFrame
import chat.peptide.api.realtime.frames.sendable.AuthorizationFrame
import chat.peptide.api.realtime.frames.sendable.BeginTypingFrame
import chat.peptide.api.realtime.frames.sendable.EndTypingFrame
import chat.peptide.api.realtime.frames.sendable.PingFrame
import chat.peptide.api.routes.server.fetchMember
import chat.peptide.api.schemas.Channel
import chat.peptide.api.schemas.ChannelType
import chat.peptide.api.schemas.Role
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.api.settings.SyncedSettings
import chat.peptide.c2dm.ChannelRegistrator
import chat.peptide.persistence.Database
import chat.peptide.persistence.SqlStorage
import io.ktor.client.plugins.websocket.ws
import io.ktor.websocket.CloseReason
import io.ktor.websocket.Frame

View File

@ -1,15 +1,15 @@
package chat.revolt.api.realtime.frames.receivable
package chat.peptide.api.realtime.frames.receivable
import chat.revolt.api.schemas.Channel
import chat.revolt.api.schemas.ChannelVoiceState
import chat.revolt.api.schemas.Embed
import chat.revolt.api.schemas.Emoji
import chat.revolt.api.schemas.Member
import chat.revolt.api.schemas.Message
import chat.revolt.api.schemas.Role
import chat.revolt.api.schemas.Server
import chat.revolt.api.schemas.ServerUserChoice
import chat.revolt.api.schemas.User
import chat.peptide.api.schemas.Channel
import chat.peptide.api.schemas.ChannelVoiceState
import chat.peptide.api.schemas.Embed
import chat.peptide.api.schemas.Emoji
import chat.peptide.api.schemas.Member
import chat.peptide.api.schemas.Message
import chat.peptide.api.schemas.Role
import chat.peptide.api.schemas.Server
import chat.peptide.api.schemas.ServerUserChoice
import chat.peptide.api.schemas.User
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonObject

View File

@ -1,4 +1,4 @@
package chat.revolt.api.realtime.frames.sendable
package chat.peptide.api.realtime.frames.sendable
import kotlinx.serialization.Serializable

View File

@ -1,11 +1,11 @@
package chat.revolt.api.routes.account
package chat.peptide.api.routes.account
import android.os.Build
import android.util.Log
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.statement.HttpResponse

View File

@ -1,10 +1,10 @@
package chat.revolt.api.routes.account
package chat.peptide.api.routes.account
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.schemas.RsResult
import chat.revolt.api.api
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.schemas.RsResult
import chat.peptide.api.api
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.statement.bodyAsText

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.auth
package chat.peptide.api.routes.auth
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Session
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Session
import io.ktor.client.request.delete
import io.ktor.client.request.get
import io.ktor.client.request.parameter

View File

@ -1,15 +1,15 @@
package chat.revolt.api.routes.channel
package chat.peptide.api.routes.channel
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.internals.ULID
import chat.revolt.api.schemas.Channel
import chat.revolt.api.schemas.Message
import chat.revolt.api.schemas.MessagesInChannel
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.internals.ULID
import chat.peptide.api.schemas.Channel
import chat.peptide.api.schemas.Message
import chat.peptide.api.schemas.MessagesInChannel
import chat.peptide.api.schemas.User
import io.ktor.client.request.delete
import io.ktor.client.request.get
import io.ktor.client.request.header

View File

@ -1,11 +1,11 @@
package chat.revolt.api.routes.channel
package chat.peptide.api.routes.channel
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Channel
import chat.revolt.screens.create.MAX_ADDABLE_PEOPLE_IN_GROUP
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Channel
import chat.peptide.screens.create.MAX_ADDABLE_PEOPLE_IN_GROUP
import io.ktor.client.request.delete
import io.ktor.client.request.post
import io.ktor.client.request.put

View File

@ -1,7 +1,7 @@
package chat.revolt.api.routes.channel
package chat.peptide.api.routes.channel
import chat.revolt.api.RevoltHttp
import chat.revolt.api.api
import chat.peptide.api.RevoltHttp
import chat.peptide.api.api
import io.ktor.client.request.delete
import io.ktor.client.request.put

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.custom
package chat.peptide.api.routes.custom
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Emoji
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Emoji
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText

View File

@ -1,7 +1,7 @@
package chat.revolt.api.routes.googlesheets
package chat.peptide.api.routes.googlesheets
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import kotlinx.coroutines.Dispatchers

View File

@ -1,4 +1,4 @@
package chat.revolt.api.routes.googlesheets
package chat.peptide.api.routes.googlesheets
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow

View File

@ -1,12 +1,12 @@
package chat.revolt.api.routes.invites
package chat.peptide.api.routes.invites
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Invite
import chat.revolt.api.schemas.InviteJoined
import chat.revolt.api.schemas.RsResult
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Invite
import chat.peptide.api.schemas.InviteJoined
import chat.peptide.api.schemas.RsResult
import io.ktor.client.request.get
import io.ktor.client.request.post
import io.ktor.client.statement.bodyAsText

View File

@ -1,11 +1,11 @@
package chat.revolt.api.routes.microservices.autumn
package chat.peptide.api.routes.microservices.autumn
import chat.revolt.api.HitRateLimitException
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.schemas.AutumnError
import chat.revolt.api.schemas.AutumnId
import chat.peptide.api.HitRateLimitException
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.schemas.AutumnError
import chat.peptide.api.schemas.AutumnId
import io.ktor.client.plugins.onUpload
import io.ktor.client.request.forms.MultiPartFormDataContent
import io.ktor.client.request.forms.formData

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.microservices.geo
package chat.peptide.api.routes.microservices.geo
import chat.revolt.api.HitRateLimitException
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.buildUserAgent
import chat.peptide.api.HitRateLimitException
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.buildUserAgent
import io.ktor.client.request.get
import io.ktor.client.request.header
import io.ktor.client.statement.bodyAsText

View File

@ -1,8 +1,8 @@
package chat.revolt.api.routes.microservices.health
package chat.peptide.api.routes.microservices.health
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.schemas.HealthNotice
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.schemas.HealthNotice
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText

View File

@ -1,6 +1,6 @@
package chat.revolt.api.routes.microservices.january
package chat.peptide.api.routes.microservices.january
import chat.revolt.api.RevoltAPI
import chat.peptide.api.RevoltAPI
import java.net.URLEncoder
fun asJanuaryProxyUrl(url: String): String {

View File

@ -1,7 +1,7 @@
package chat.revolt.api.routes.misc
package chat.peptide.api.routes.misc
import chat.revolt.api.RevoltHttp
import chat.revolt.api.api
import chat.peptide.api.RevoltHttp
import chat.peptide.api.api
import io.ktor.client.call.body
import io.ktor.client.request.get
import kotlinx.serialization.SerialName

View File

@ -1,12 +1,12 @@
package chat.revolt.api.routes.onboard
package chat.peptide.api.routes.onboard
import chat.revolt.api.RateLimitResponse
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.RsResult
import chat.peptide.api.RateLimitResponse
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.RsResult
import io.ktor.client.request.get
import io.ktor.client.request.header
import io.ktor.client.request.post

View File

@ -1,8 +1,8 @@
package chat.revolt.api.routes.push
package chat.peptide.api.routes.push
import chat.revolt.api.RevoltHttp
import chat.revolt.api.routes.account.WebPushData
import chat.revolt.api.api
import chat.peptide.api.RevoltHttp
import chat.peptide.api.routes.account.WebPushData
import chat.peptide.api.api
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.http.ContentType

View File

@ -1,17 +1,17 @@
package chat.revolt.api.routes.safety
package chat.peptide.api.routes.safety
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.schemas.ContentReportReason
import chat.revolt.api.schemas.FullMessageReport
import chat.revolt.api.schemas.FullServerReport
import chat.revolt.api.schemas.FullUserReport
import chat.revolt.api.schemas.MessageReport
import chat.revolt.api.schemas.ServerReport
import chat.revolt.api.schemas.UserReport
import chat.revolt.api.schemas.UserReportReason
import chat.revolt.api.api
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.schemas.ContentReportReason
import chat.peptide.api.schemas.FullMessageReport
import chat.peptide.api.schemas.FullServerReport
import chat.peptide.api.schemas.FullUserReport
import chat.peptide.api.schemas.MessageReport
import chat.peptide.api.schemas.ServerReport
import chat.peptide.api.schemas.UserReport
import chat.peptide.api.schemas.UserReportReason
import chat.peptide.api.api
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.statement.bodyAsText

View File

@ -1,13 +1,13 @@
package chat.revolt.api.routes.server
package chat.peptide.api.routes.server
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Member
import chat.revolt.api.schemas.ServerWithChannelObjects
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Member
import chat.peptide.api.schemas.ServerWithChannelObjects
import chat.peptide.api.schemas.User
import io.ktor.client.request.delete
import io.ktor.client.request.get
import io.ktor.client.request.parameter

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.sync
package chat.peptide.api.routes.sync
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import io.ktor.client.request.parameter
import io.ktor.client.request.post
import io.ktor.client.request.setBody

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.sync
package chat.peptide.api.routes.sync
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.ChannelUnreadResponse
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.ChannelUnreadResponse
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.builtins.ListSerializer

View File

@ -1,10 +1,10 @@
package chat.revolt.api.routes.user
package chat.peptide.api.routes.user
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Channel
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Channel
import io.ktor.client.request.get
import io.ktor.client.statement.bodyAsText
import kotlinx.serialization.SerializationException

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.user
package chat.peptide.api.routes.user
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import io.ktor.client.request.delete
import io.ktor.client.request.post
import io.ktor.client.request.put

View File

@ -1,13 +1,13 @@
package chat.revolt.api.routes.user
package chat.peptide.api.routes.user
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.revolt.api.schemas.Profile
import chat.revolt.api.schemas.Status
import chat.revolt.api.schemas.User
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import chat.peptide.api.schemas.Profile
import chat.peptide.api.schemas.Status
import chat.peptide.api.schemas.User
import io.ktor.client.request.get
import io.ktor.client.request.patch
import io.ktor.client.request.setBody

View File

@ -1,9 +1,9 @@
package chat.revolt.api.routes.voice
package chat.peptide.api.routes.voice
import chat.revolt.api.RevoltError
import chat.revolt.api.RevoltHttp
import chat.revolt.api.RevoltJson
import chat.revolt.api.api
import chat.peptide.api.RevoltError
import chat.peptide.api.RevoltHttp
import chat.peptide.api.RevoltJson
import chat.peptide.api.api
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.statement.bodyAsText

View File

@ -1,6 +1,6 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import chat.revolt.api.RevoltAPI
import chat.peptide.api.RevoltAPI
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import kotlinx.datetime.Instant
import kotlinx.serialization.KSerializer
@ -111,7 +111,7 @@ enum class ChannelType(val value: String) {
override val descriptor: SerialDescriptor
get() {
return PrimitiveSerialDescriptor(
"chat.revolt.api.schemas.ChannelType",
"chat.peptide.api.schemas.ChannelType",
PrimitiveKind.STRING
)
}

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import android.os.Parcelable
import kotlinx.parcelize.Parcelize

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -1,8 +1,8 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import android.net.Uri
import androidx.core.net.toUri
import chat.revolt.api.RevoltAPI
import chat.peptide.api.RevoltAPI
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -1,6 +1,6 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import chat.revolt.api.RevoltAPI
import chat.peptide.api.RevoltAPI
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@ -24,7 +24,7 @@ data class Message(
val interactions: InteractionsDescription? = null,
val pinned: Boolean? = null,
/**
* See [chat.revolt.api.internals.MessageFlag]
* See [chat.peptide.api.internals.MessageFlag]
*/
val flags: Int? = null,
val type: String? = null, // this is _only_ used for websocket events!

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
@ -29,7 +29,7 @@ enum class ContentReportReason(val value: String) {
override val descriptor: SerialDescriptor
get() {
return PrimitiveSerialDescriptor(
"chat.revolt.api.schemas.ContentReportReason",
"chat.peptide.api.schemas.ContentReportReason",
PrimitiveKind.STRING
)
}
@ -73,7 +73,7 @@ enum class UserReportReason(val value: String) {
override val descriptor: SerialDescriptor
get() {
return PrimitiveSerialDescriptor(
"chat.revolt.api.schemas.UserReportReason",
"chat.peptide.api.schemas.UserReportReason",
PrimitiveKind.STRING
)
}

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -1,6 +1,6 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import chat.revolt.ui.theme.OverridableColourScheme
import chat.peptide.ui.theme.OverridableColourScheme
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import android.os.Parcelable
import kotlinx.parcelize.Parcelize

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
// Result class similar to Rust std::result::Result
data class RsResult<V, E>(val value: V?, val error: E?) {

View File

@ -1,4 +1,4 @@
package chat.revolt.api.schemas
package chat.peptide.api.schemas
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@ -1,11 +1,11 @@
package chat.revolt.api.settings
package chat.peptide.api.settings
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import chat.revolt.BuildConfig
import chat.revolt.RevoltApplication
import chat.revolt.persistence.KVStorage
import chat.peptide.BuildConfig
import chat.peptide.RevoltApplication
import chat.peptide.persistence.KVStorage
class ExperimentInstance(default: Boolean) {
private var _isEnabled by mutableStateOf(default)

View File

@ -1,10 +1,10 @@
package chat.revolt.api.settings
package chat.peptide.api.settings
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.SpecialUsers
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.SpecialUsers
annotation class FeatureFlag(val name: String)
annotation class Treatment(val description: String)

View File

@ -1,9 +1,9 @@
package chat.revolt.api.settings
package chat.peptide.api.settings
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import chat.revolt.api.routes.microservices.geo.GeoResponse
import chat.peptide.api.routes.microservices.geo.GeoResponse
object GeoStateProvider {
var geoState by mutableStateOf<GeoResponse?>(null)

View File

@ -1,12 +1,12 @@
package chat.revolt.api.settings
package chat.peptide.api.settings
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import chat.revolt.api.schemas.AndroidSpecificSettingsSpecialEmbedSettings
import chat.revolt.ui.theme.Theme
import chat.revolt.ui.theme.getDefaultTheme
import chat.peptide.api.schemas.AndroidSpecificSettingsSpecialEmbedSettings
import chat.peptide.ui.theme.Theme
import chat.peptide.ui.theme.getDefaultTheme
enum class MessageReplyStyle {
None,

View File

@ -1,4 +1,4 @@
package chat.revolt.api.settings
package chat.peptide.api.settings
object NotificationSettingsProvider {
fun isChannelMuted(channelId: String, serverId: String?): Boolean {

View File

@ -1,14 +1,14 @@
package chat.revolt.api.settings
package chat.peptide.api.settings
import androidx.compose.runtime.mutableStateOf
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltJson
import chat.revolt.api.routes.sync.getKeys
import chat.revolt.api.routes.sync.setKey
import chat.revolt.api.schemas.AndroidSpecificSettings
import chat.revolt.api.schemas.NotificationSettings
import chat.revolt.api.schemas.OrderingSettings
import chat.revolt.api.schemas._NotificationSettingsToParse
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltJson
import chat.peptide.api.routes.sync.getKeys
import chat.peptide.api.routes.sync.setKey
import chat.peptide.api.schemas.AndroidSpecificSettings
import chat.peptide.api.schemas.NotificationSettings
import chat.peptide.api.schemas.OrderingSettings
import chat.peptide.api.schemas._NotificationSettingsToParse
import kotlinx.serialization.json.JsonPrimitive
import kotlinx.serialization.json.jsonPrimitive
import logcat.LogPriority

View File

@ -1,16 +1,16 @@
package chat.revolt.api.unreads
package chat.peptide.api.unreads
import android.util.Log
import androidx.compose.runtime.mutableStateMapOf
import androidx.compose.runtime.mutableStateOf
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.ULID
import chat.revolt.api.routes.channel.ackChannel
import chat.revolt.api.routes.server.ackServer
import chat.revolt.api.routes.sync.syncUnreads
import chat.revolt.api.schemas.ChannelType
import chat.revolt.api.schemas.ChannelUnread
import chat.revolt.api.settings.NotificationSettingsProvider
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.ULID
import chat.peptide.api.routes.channel.ackChannel
import chat.peptide.api.routes.server.ackServer
import chat.peptide.api.routes.sync.syncUnreads
import chat.peptide.api.schemas.ChannelType
import chat.peptide.api.schemas.ChannelUnread
import chat.peptide.api.settings.NotificationSettingsProvider
class Unreads {
private val hasLoaded = mutableStateOf(false)

View File

@ -1,11 +1,11 @@
package chat.revolt.c2dm
package chat.peptide.c2dm
import android.app.NotificationChannel
import android.app.NotificationChannelGroup
import android.app.NotificationManager
import android.content.Context
import androidx.core.content.ContextCompat.getSystemService
import chat.revolt.R
import chat.peptide.R
// TODO
// * Add the remaining groups.
@ -15,10 +15,10 @@ import chat.revolt.R
class ChannelRegistrator(val context: Context) {
companion object {
const val CHANNEL_ID_GROUP_CONVERSATIONS = "chat.revolt.c2dm.conversations"
const val CHANNEL_ID_GROUP_CONVERSATIONS = "chat.peptide.c2dm.conversations"
const val CHANNEL_ID_GROUP_SOCIAL = "chat.revolt.c2dm.social"
const val CHANNEL_ID_GROUP_SOCIAL_FRIENDREQUESTS = "chat.revolt.c2dm.social.friendrequests"
const val CHANNEL_ID_GROUP_SOCIAL = "chat.peptide.c2dm.social"
const val CHANNEL_ID_GROUP_SOCIAL_FRIENDREQUESTS = "chat.peptide.c2dm.social.friendrequests"
}
private val notificationManager =

View File

@ -1,4 +1,4 @@
package chat.revolt.c2dm
package chat.peptide.c2dm
import android.app.PendingIntent
import android.content.Intent
@ -10,17 +10,17 @@ import androidx.core.app.NotificationManagerCompat
import androidx.core.app.Person
import androidx.core.app.RemoteInput
import androidx.core.graphics.drawable.IconCompat
import chat.revolt.R
import chat.revolt.activities.MainActivity
import chat.revolt.api.RevoltAPI
import chat.revolt.api.RevoltJson
import chat.revolt.api.internals.ULID
import chat.revolt.api.routes.push.subscribePush
import chat.revolt.api.schemas.Message
import chat.revolt.api.schemas.User
import chat.revolt.c2dm.ChannelRegistrator.Companion.CHANNEL_ID_GROUP_SOCIAL_FRIENDREQUESTS
import chat.revolt.persistence.Database
import chat.revolt.persistence.SqlStorage
import chat.peptide.R
import chat.peptide.activities.MainActivity
import chat.peptide.api.RevoltAPI
import chat.peptide.api.RevoltJson
import chat.peptide.api.internals.ULID
import chat.peptide.api.routes.push.subscribePush
import chat.peptide.api.schemas.Message
import chat.peptide.api.schemas.User
import chat.peptide.c2dm.ChannelRegistrator.Companion.CHANNEL_ID_GROUP_SOCIAL_FRIENDREQUESTS
import chat.peptide.persistence.Database
import chat.peptide.persistence.SqlStorage
import com.bumptech.glide.Glide
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage

View File

@ -1,6 +1,6 @@
package chat.revolt.callbacks
package chat.peptide.callbacks
import chat.revolt.screens.chat.ChatRouterDestination
import chat.peptide.screens.chat.ChatRouterDestination
import kotlinx.coroutines.channels.Channel
sealed class Action {

View File

@ -1,4 +1,4 @@
package chat.revolt.callbacks
package chat.peptide.callbacks
import kotlinx.coroutines.flow.MutableSharedFlow

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import android.icu.text.DateFormat
import android.text.format.DateUtils

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -28,10 +28,10 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import chat.revolt.R
import chat.revolt.api.realtime.DisconnectionState
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.ui.theme.Theme
import chat.peptide.R
import chat.peptide.api.realtime.DisconnectionState
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.ui.theme.Theme
private val NON_MATERIAL_COLOURS = mapOf(
DisconnectionState.Disconnected to (Color(0xff4E0C0C) to Color(0xffff1744)),

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -23,14 +23,14 @@ import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import chat.revolt.api.internals.BrushCompat
import chat.revolt.api.internals.solidColor
import chat.revolt.api.routes.microservices.january.asJanuaryProxyUrl
import chat.revolt.api.schemas.Embed
import chat.revolt.composables.chat.specialembeds.SpecialEmbedSwitch
import chat.revolt.composables.generic.RemoteImage
import chat.revolt.composables.markdown.RichMarkdown
import chat.revolt.api.schemas.Embed as EmbedSchema
import chat.peptide.api.internals.BrushCompat
import chat.peptide.api.internals.solidColor
import chat.peptide.api.routes.microservices.january.asJanuaryProxyUrl
import chat.peptide.api.schemas.Embed
import chat.peptide.composables.chat.specialembeds.SpecialEmbedSwitch
import chat.peptide.composables.generic.RemoteImage
import chat.peptide.composables.markdown.RichMarkdown
import chat.peptide.api.schemas.Embed as EmbedSchema
@Composable
fun RegularEmbed(

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import android.util.Log
import androidx.compose.foundation.clickable
@ -26,16 +26,16 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.solidColor
import chat.revolt.api.routes.channel.fetchSingleMessage
import chat.revolt.api.schemas.User
import chat.revolt.api.settings.Experiments
import chat.revolt.composables.generic.UserAvatar
import chat.revolt.markdown.jbm.JBM
import chat.revolt.markdown.jbm.JBMRenderer
import chat.revolt.markdown.jbm.LocalJBMarkdownTreeState
import chat.peptide.R
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.solidColor
import chat.peptide.api.routes.channel.fetchSingleMessage
import chat.peptide.api.schemas.User
import chat.peptide.api.settings.Experiments
import chat.peptide.composables.generic.UserAvatar
import chat.peptide.markdown.jbm.JBM
import chat.peptide.markdown.jbm.JBMRenderer
import chat.peptide.markdown.jbm.LocalJBMarkdownTreeState
import java.util.concurrent.CancellationException
@OptIn(JBM::class)

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
@ -9,7 +9,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import chat.revolt.R
import chat.peptide.R
enum class InlineBadge {
Bot,

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.material3.ListItem
import androidx.compose.material3.LocalContentColor
@ -8,15 +8,15 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.text.style.TextOverflow
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.BrushCompat
import chat.revolt.api.internals.Roles
import chat.revolt.api.internals.solidColor
import chat.revolt.api.schemas.Member
import chat.revolt.api.schemas.User
import chat.revolt.composables.generic.UserAvatar
import chat.revolt.composables.generic.presenceFromStatus
import chat.revolt.internals.extensions.TransparentListItemColours
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.BrushCompat
import chat.peptide.api.internals.Roles
import chat.peptide.api.internals.solidColor
import chat.peptide.api.schemas.Member
import chat.peptide.api.schemas.User
import chat.peptide.composables.generic.UserAvatar
import chat.peptide.composables.generic.presenceFromStatus
import chat.peptide.internals.extensions.TransparentListItemColours
@Composable
fun MemberListItem(

View File

@ -1,10 +1,11 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import android.annotation.SuppressLint
import android.content.Intent
import android.icu.text.DateFormat
import android.net.Uri
import android.text.format.DateUtils
import android.util.Log
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
@ -59,40 +60,41 @@ import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.revolt.R
import chat.revolt.activities.media.ImageViewActivity
import chat.revolt.activities.media.VideoViewActivity
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.BrushCompat
import chat.revolt.api.internals.MessageFlag
import chat.revolt.api.internals.Roles
import chat.revolt.api.internals.SpecialUsers
import chat.revolt.api.internals.ULID
import chat.revolt.api.internals.has
import chat.revolt.api.internals.solidColor
import chat.revolt.api.routes.channel.react
import chat.revolt.api.routes.channel.unreact
import chat.revolt.api.routes.microservices.january.asJanuaryProxyUrl
import chat.revolt.api.schemas.AutumnResource
import chat.revolt.api.schemas.User
import chat.revolt.api.settings.Experiments
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.api.settings.MessageReplyStyle
import chat.revolt.callbacks.Action
import chat.revolt.callbacks.ActionChannel
import chat.revolt.composables.generic.RemoteImage
import chat.revolt.composables.generic.UserAvatar
import chat.revolt.composables.generic.UserAvatarWidthPlaceholder
import chat.revolt.composables.markdown.LocalMarkdownTreeConfig
import chat.revolt.composables.markdown.RichMarkdown
import chat.revolt.internals.text.Gigamoji
import chat.revolt.internals.text.MessageProcessor
import chat.revolt.markdown.jbm.JBM
import chat.revolt.markdown.jbm.JBMRenderer
import chat.revolt.markdown.jbm.LocalJBMarkdownTreeState
import chat.revolt.persistence.KVStorage
import chat.peptide.R
import chat.peptide.activities.media.ImageViewActivity
import chat.peptide.activities.media.VideoViewActivity
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.BrushCompat
import chat.peptide.api.internals.MessageFlag
import chat.peptide.api.internals.Roles
import chat.peptide.api.internals.SpecialUsers
import chat.peptide.api.internals.ULID
import chat.peptide.api.internals.has
import chat.peptide.api.internals.solidColor
import chat.peptide.api.routes.channel.react
import chat.peptide.api.routes.channel.unreact
import chat.peptide.api.routes.microservices.january.asJanuaryProxyUrl
import chat.peptide.api.schemas.AutumnResource
import chat.peptide.api.schemas.User
import chat.peptide.api.settings.Experiments
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.api.settings.MessageReplyStyle
import chat.peptide.callbacks.Action
import chat.peptide.callbacks.ActionChannel
import chat.peptide.utils.InternalLinkHandler
import chat.peptide.composables.generic.RemoteImage
import chat.peptide.composables.generic.UserAvatar
import chat.peptide.composables.generic.UserAvatarWidthPlaceholder
import chat.peptide.composables.markdown.LocalMarkdownTreeConfig
import chat.peptide.composables.markdown.RichMarkdown
import chat.peptide.internals.text.Gigamoji
import chat.peptide.internals.text.MessageProcessor
import chat.peptide.markdown.jbm.JBM
import chat.peptide.markdown.jbm.JBMRenderer
import chat.peptide.markdown.jbm.LocalJBMarkdownTreeState
import chat.peptide.persistence.KVStorage
import kotlinx.coroutines.launch
import chat.revolt.api.schemas.Message as MessageSchema
import chat.peptide.api.schemas.Message as MessageSchema
@Composable
fun authorColour(message: MessageSchema): Brush {
@ -145,14 +147,44 @@ fun authorAvatarUrl(message: MessageSchema): String? {
}
fun viewUrlInBrowser(ctx: android.content.Context, url: String) {
val customTab = CustomTabsIntent
.Builder()
.build()
customTab.launchUrl(ctx, Uri.parse(url))
Log.d("Message", "viewUrlInBrowser called with url: $url")
// Check if this is an internal link that should be handled by the app
if (InternalLinkHandler.isInternalLink(url)) {
Log.d("Message", "URL is an internal link, attempting to handle internally")
// Try to handle the link internally
val handled = InternalLinkHandler.handleInternalLink(ctx, url, true)
Log.d("Message", "Internal link handled: $handled")
if (handled) {
// Link was handled internally
Log.d("Message", "Link was handled internally, returning")
return
} else {
Log.d("Message", "Failed to handle link internally, falling back to browser")
}
} else {
Log.d("Message", "URL is not an internal link, opening in browser")
}
// If not an internal link or couldn't be handled internally, open in browser
try {
Log.d("Message", "Opening URL in browser")
val customTab = CustomTabsIntent
.Builder()
.build()
customTab.launchUrl(ctx, Uri.parse(url))
Log.d("Message", "URL opened in browser successfully")
} catch (e: Exception) {
Log.e("Message", "Error opening URL in browser", e)
}
}
fun viewAttachmentInBrowser(ctx: android.content.Context, attachment: AutumnResource) {
val url = "${RevoltAPI.getCurrentFilesUrl()}/attachments/${attachment.id}/${attachment.filename}"
val url =
"${RevoltAPI.getCurrentFilesUrl()}/attachments/${attachment.id}/${attachment.filename}"
viewUrlInBrowser(ctx, url)
}
@ -186,6 +218,7 @@ fun formatLongAsTime(time: Long): String {
@OptIn(ExperimentalFoundationApi::class, ExperimentalLayoutApi::class, JBM::class)
@Composable
fun Message(
modifier: Modifier = Modifier,
message: MessageSchema,
onMessageContextMenu: () -> Unit = {},
onAvatarClick: () -> Unit = {},
@ -195,7 +228,6 @@ fun Message(
onAddReaction: () -> Unit = {},
fromWebhook: Boolean = false,
webhookName: String? = null,
modifier: Modifier = Modifier
) {
val author = RevoltAPI.userCache[message.author] ?: return CircularProgressIndicator()
val context = LocalContext.current
@ -516,9 +548,12 @@ fun Message(
}
Spacer(modifier = Modifier.height(8.dp))
Embed(embed = embed, onLinkClick = {
viewUrlInBrowser(context, it)
})
Embed(
embed = embed,
onLinkClick = {
viewUrlInBrowser(context, it)
}
)
Spacer(modifier = Modifier.height(8.dp))
}

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import android.annotation.SuppressLint
import android.text.format.Formatter
@ -32,11 +32,11 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import chat.revolt.R
import chat.revolt.api.RevoltAPI
import chat.revolt.api.schemas.AutumnResource
import chat.revolt.composables.generic.RemoteImage
import chat.revolt.composables.media.AudioPlayer
import chat.peptide.R
import chat.peptide.api.RevoltAPI
import chat.peptide.api.schemas.AutumnResource
import chat.peptide.composables.generic.RemoteImage
import chat.peptide.composables.media.AudioPlayer
import dev.chrisbanes.haze.hazeEffect
import dev.chrisbanes.haze.hazeSource
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import android.net.Uri
import androidx.compose.animation.AnimatedVisibility
@ -79,17 +79,17 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.IntSize
import androidx.compose.ui.unit.dp
import chat.revolt.R
import chat.revolt.activities.RevoltTweenFloat
import chat.revolt.activities.RevoltTweenInt
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.BrushCompat
import chat.revolt.api.schemas.ChannelType
import chat.revolt.api.schemas.Member
import chat.revolt.composables.generic.RemoteImage
import chat.revolt.composables.generic.UserAvatar
import chat.revolt.composables.screens.chat.ChannelIcon
import chat.revolt.internals.Autocomplete
import chat.peptide.R
import chat.peptide.activities.RevoltTweenFloat
import chat.peptide.activities.RevoltTweenInt
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.BrushCompat
import chat.peptide.api.schemas.ChannelType
import chat.peptide.api.schemas.Member
import chat.peptide.composables.generic.RemoteImage
import chat.peptide.composables.generic.UserAvatar
import chat.peptide.composables.screens.chat.ChannelIcon
import chat.peptide.internals.Autocomplete
import kotlinx.coroutines.launch
fun Pair<Int, Int>.asTextRange(): TextRange {
@ -111,25 +111,25 @@ private fun CharSequence.lastWordStartsAt(): Int {
sealed class AutocompleteSuggestion {
data class User(
val user: chat.revolt.api.schemas.User,
val user: chat.peptide.api.schemas.User,
val member: Member?,
val query: String
) : AutocompleteSuggestion()
data class Channel(
val channel: chat.revolt.api.schemas.Channel,
val channel: chat.peptide.api.schemas.Channel,
val query: String
) : AutocompleteSuggestion()
data class Emoji(
val shortcode: String,
val unicode: String?,
val custom: chat.revolt.api.schemas.Emoji?,
val custom: chat.peptide.api.schemas.Emoji?,
val query: String
) : AutocompleteSuggestion()
data class Role(
val role: chat.revolt.api.schemas.Role,
val role: chat.peptide.api.schemas.Role,
val id: String,
val query: String
) : AutocompleteSuggestion()

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.animateColorAsState
@ -28,9 +28,9 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.revolt.api.RevoltAPI
import chat.revolt.api.internals.isUlid
import chat.revolt.composables.generic.RemoteImage
import chat.peptide.api.RevoltAPI
import chat.peptide.api.internals.isUlid
import chat.peptide.composables.generic.RemoteImage
@OptIn(ExperimentalFoundationApi::class)
@Composable

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
@ -28,9 +28,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import chat.revolt.R
import chat.revolt.api.schemas.Message
import chat.revolt.composables.markdown.RichMarkdown
import chat.peptide.R
import chat.peptide.api.schemas.Message
import chat.peptide.composables.markdown.RichMarkdown
enum class SystemMessageType(val type: String) {
CHANNEL_OWNERSHIP_CHANGED("channel_ownership_changed"),

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@ -19,7 +19,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.revolt.R
import chat.peptide.R
@Composable
fun TimeRift(modifier: Modifier = Modifier, onMessageLoad: () -> Unit) {

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat
package chat.peptide.composables.chat
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
@ -17,9 +17,9 @@ import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import chat.revolt.R
import chat.revolt.api.schemas.UserBadges
import chat.revolt.api.schemas.has
import chat.peptide.R
import chat.peptide.api.schemas.UserBadges
import chat.peptide.api.schemas.has
@Composable
fun BadgeListEntryTemplate(

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat.specialembeds
package chat.peptide.composables.chat.specialembeds
import android.annotation.SuppressLint
import android.net.Uri
@ -11,9 +11,9 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import chat.revolt.api.schemas.Special
import chat.revolt.api.settings.LoadedSettings
import chat.revolt.ui.theme.isThemeDark
import chat.peptide.api.schemas.Special
import chat.peptide.api.settings.LoadedSettings
import chat.peptide.ui.theme.isThemeDark
@SuppressLint("SetJavaScriptEnabled")
@Composable

View File

@ -1,9 +1,9 @@
package chat.revolt.composables.chat.specialembeds
package chat.peptide.composables.chat.specialembeds
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import chat.revolt.api.schemas.Special
import chat.revolt.api.settings.LoadedSettings
import chat.peptide.api.schemas.Special
import chat.peptide.api.settings.LoadedSettings
@Composable
fun SpecialEmbedSwitch(special: Special, modifier: Modifier = Modifier) {

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.chat.specialembeds
package chat.peptide.composables.chat.specialembeds
import android.annotation.SuppressLint
import android.webkit.WebView
@ -21,10 +21,10 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.viewinterop.AndroidView
import chat.revolt.R
import chat.revolt.api.schemas.Special
import chat.revolt.composables.chat.VideoPlayButton
import chat.revolt.composables.generic.RemoteImage
import chat.peptide.R
import chat.peptide.api.schemas.Special
import chat.peptide.composables.chat.VideoPlayButton
import chat.peptide.composables.generic.RemoteImage
import org.intellij.lang.annotations.Language
@Language("HTML")

View File

@ -1,4 +1,4 @@
package chat.revolt.composables.emoji
package chat.peptide.composables.emoji
import android.util.TypedValue
import android.view.HapticFeedbackConstants
@ -60,18 +60,18 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import chat.revolt.R
import chat.revolt.activities.RevoltTweenFloat
import chat.revolt.api.RevoltAPI
import chat.revolt.callbacks.Action
import chat.revolt.callbacks.ActionChannel
import chat.revolt.composables.generic.IconPlaceholder
import chat.revolt.composables.generic.RemoteImage
import chat.revolt.internals.Category
import chat.revolt.internals.EmojiImpl
import chat.revolt.internals.EmojiPickerItem
import chat.revolt.internals.FitzpatrickSkinTone
import chat.revolt.internals.UnicodeEmojiSection
import chat.peptide.R
import chat.peptide.activities.RevoltTweenFloat
import chat.peptide.api.RevoltAPI
import chat.peptide.callbacks.Action
import chat.peptide.callbacks.ActionChannel
import chat.peptide.composables.generic.IconPlaceholder
import chat.peptide.composables.generic.RemoteImage
import chat.peptide.internals.Category
import chat.peptide.internals.EmojiImpl
import chat.peptide.internals.EmojiPickerItem
import chat.peptide.internals.FitzpatrickSkinTone
import chat.peptide.internals.UnicodeEmojiSection
import kotlinx.coroutines.launch
@Composable

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