diff --git a/app/src/main/kotlin/com/aliucord/manager/network/models/Developer.kt b/app/src/main/kotlin/com/aliucord/manager/network/models/Developer.kt new file mode 100644 index 0000000..2d05626 --- /dev/null +++ b/app/src/main/kotlin/com/aliucord/manager/network/models/Developer.kt @@ -0,0 +1,18 @@ +package com.aliucord.manager.network.models + +import kotlinx.serialization.Serializable + +@Serializable +data class Developer( + val username: String, + val avatarUrl: String, + val commits: Int, + val repositories: List, + val role: String? = null +) { + @Serializable + data class Repository( + val name: String, + val commits: Int + ) +} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/components/Developers.kt b/app/src/main/kotlin/com/aliucord/manager/ui/components/Developers.kt index eb0abcd..0b7d3db 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/components/Developers.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/components/Developers.kt @@ -17,7 +17,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage -import com.aliucord.manager.network.models.Contributor +import com.aliucord.manager.network.models.Developer import com.valentinilk.shimmer.shimmer import dev.goon.manager.R diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt deleted file mode 100644 index 72cd062..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/dialogs/UninstallPluginDialogPreview.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.aliucord.manager.ui.previews.dialogs - -import android.content.res.Configuration -import androidx.compose.runtime.Composable -import androidx.compose.ui.tooling.preview.Preview -import com.aliucord.manager.ui.screens.plugins.components.dialogs.UninstallPluginDialog -import com.aliucord.manager.ui.theme.ManagerTheme - -@Composable -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) -private fun UninstallPluginDialogPreview() { - ManagerTheme { - UninstallPluginDialog( - pluginName = "FakeNitro", - onConfirm = {}, - onDismiss = {}, - ) - } -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadedPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadedPreview.kt deleted file mode 100644 index bc4c3b2..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/about/AboutScreenLoadedPreview.kt +++ /dev/null @@ -1,52 +0,0 @@ -package com.aliucord.manager.ui.previews.screens.about - -import android.content.res.Configuration -import androidx.compose.runtime.* -import androidx.compose.ui.tooling.preview.* -import com.aliucord.manager.network.models.Contributor -import com.aliucord.manager.ui.screens.about.AboutScreenContent -import com.aliucord.manager.ui.screens.about.AboutScreenState -import com.aliucord.manager.ui.theme.ManagerTheme -import com.aliucord.manager.ui.util.emptyImmutableList -import com.aliucord.manager.util.serialization.ImmutableListSerializer -import kotlinx.collections.immutable.* -import kotlinx.serialization.json.Json - -// This preview has scrollable content that cannot be properly viewed from an IDE preview - -@Composable -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) -private fun AboutScreenLoadedPreview( - @PreviewParameter(ContributorsProvider::class) contributors: ImmutableList, -) { - ManagerTheme { - AboutScreenContent( - state = remember { mutableStateOf(AboutScreenState.Loaded(contributors)) }, - ) - } -} - -private class ContributorsProvider : PreviewParameterProvider> { - private val realDataRaw = - "[{\"username\":\"maisymoe\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/61095277?v=4\",\"repositories\":]" - private val realData = - Json.decodeFromString(ImmutableListSerializer(Contributor.serializer()), realDataRaw) - - override val values = - sequenceOf( - emptyImmutableList(), - persistentListOf( - Contributor( - username = - "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", - avatarUrl = "UNUSED", - commits = Int.MAX_VALUE, - repositories = - (realData[0].repositories + realData[0].repositories) - .toImmutableList(), - ) - ), - realData, - ) -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenFailedPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenFailedPreview.kt deleted file mode 100644 index 2463b1d..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenFailedPreview.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.aliucord.manager.ui.previews.screens.plugins - -import android.content.res.Configuration -import androidx.compose.runtime.* -import androidx.compose.ui.tooling.preview.Preview -import com.aliucord.manager.ui.screens.plugins.PluginsScreenContent -import com.aliucord.manager.ui.theme.ManagerTheme -import com.aliucord.manager.ui.util.emptyImmutableList - -// This preview has interactable content that cannot be tested from an IDE preview - -@Composable -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) -private fun PluginsScreenFailedPreview() { - val filterState = remember { mutableStateOf("") } - - ManagerTheme { - PluginsScreenContent( - searchText = filterState, - setSearchText = filterState::value::set, - isError = true, - plugins = emptyImmutableList(), - onPluginUninstall = {}, - onPluginChangelog = {}, - onPluginToggle = { name, enabled -> }, - ) - } -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenLoadedPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenLoadedPreview.kt deleted file mode 100644 index 57bf31f..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenLoadedPreview.kt +++ /dev/null @@ -1,92 +0,0 @@ -package com.aliucord.manager.ui.previews.screens.plugins - -import android.content.res.Configuration -import androidx.compose.runtime.* -import androidx.compose.ui.tooling.preview.Preview -import com.aliucord.manager.ui.screens.plugins.PluginsScreenContent -import com.aliucord.manager.ui.screens.plugins.model.PluginItem -import com.aliucord.manager.ui.screens.plugins.model.PluginManifest -import com.aliucord.manager.ui.theme.ManagerTheme -import kotlinx.collections.immutable.ImmutableList -import kotlinx.collections.immutable.persistentListOf -import java.util.UUID - -// This preview has scrollable/interactable content that cannot be tested from an IDE preview - -@Composable -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) -private fun PluginsScreenLoadedPreview() { - val filterState = remember { mutableStateOf("test") } - - ManagerTheme { - PluginsScreenContent( - searchText = filterState, - setSearchText = filterState::value::set, - isError = false, - plugins = plugins, - onPluginUninstall = {}, - onPluginChangelog = {}, - onPluginToggle = { name, enabled -> }, - ) - } -} - -private val plugins: ImmutableList = persistentListOf( - PluginItem( - path = UUID.randomUUID().toString(), - manifest = PluginManifest( - name = "CloseDMs", - authors = persistentListOf( - PluginManifest.Author(name = "Diamond", id = 0L), - ), - description = "Shortcut to close DMs in the DM context menu.", - version = "1.0.0", - updateUrl = "", - changelog = "", - changelogMedia = null, - ) - ), - PluginItem( - path = UUID.randomUUID().toString(), - manifest = PluginManifest( - name = "ConfigurableStickerSizes", - authors = persistentListOf( - PluginManifest.Author(name = "rushii", id = 0L, hyperlink = false), - ), - description = "Makes sticker sizes configurable.", - version = "1.1.5", - updateUrl = "", - changelog = "", - changelogMedia = null, - ) - ), - PluginItem( - path = UUID.randomUUID().toString(), - manifest = PluginManifest( - name = "AudioPlayer", - authors = persistentListOf( - PluginManifest.Author(name = "rushii", id = 0L, hyperlink = false), - ), - description = "Makes audio files playable.", - version = "0.0.1", - updateUrl = "", - changelog = "", - changelogMedia = null, - ) - ), - PluginItem( - path = UUID.randomUUID().toString(), - manifest = PluginManifest( - name = "TypingIndicators", - authors = persistentListOf( - PluginManifest.Author(name = "rushii", id = 0L, hyperlink = false), - ), - description = "Adds typing indicators to channels that people are currently typing in.", - version = "1.1.0", - updateUrl = "", - changelog = "", - changelogMedia = null, - ) - ), -) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenNonePreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenNonePreview.kt deleted file mode 100644 index fde4c00..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/plugins/PluginsScreenNonePreview.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.aliucord.manager.ui.previews.screens.plugins - -import android.content.res.Configuration -import androidx.compose.runtime.* -import androidx.compose.ui.tooling.preview.Preview -import com.aliucord.manager.ui.screens.plugins.PluginsScreenContent -import com.aliucord.manager.ui.theme.ManagerTheme -import com.aliucord.manager.ui.util.emptyImmutableList - -// This preview has interactable content that cannot be tested from an IDE preview - -@Composable -@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES) -@Preview(uiMode = Configuration.UI_MODE_NIGHT_NO) -private fun PluginsScreenNonePreview() { - val filterState = remember { mutableStateOf("") } - - ManagerTheme { - PluginsScreenContent( - searchText = filterState, - setSearchText = filterState::value::set, - isError = false, - plugins = emptyImmutableList(), - onPluginUninstall = {}, - onPluginChangelog = {}, - onPluginToggle = { name, enabled -> }, - ) - } -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/plugins/model/PluginItem.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/plugins/model/PluginItem.kt deleted file mode 100644 index 3d764f3..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/plugins/model/PluginItem.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.aliucord.manager.ui.screens.plugins.model - -import androidx.compose.runtime.* - -@Stable -data class PluginItem( - val manifest: PluginManifest, - val path: String, -) { - // Plugins are enabled by default unless disabled - var enabled by mutableStateOf(true) -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/plugins/model/PluginManifest.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/plugins/model/PluginManifest.kt deleted file mode 100644 index 9687bdf..0000000 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/plugins/model/PluginManifest.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.aliucord.manager.ui.screens.plugins.model - -import androidx.compose.runtime.Immutable -import com.aliucord.manager.util.serialization.ImmutableListSerializer -import kotlinx.collections.immutable.ImmutableList -import kotlinx.serialization.Serializable - -@Immutable -@Serializable -data class PluginManifest( - val name: String, - @Serializable(with = ImmutableListSerializer::class) - val authors: ImmutableList, - val description: String, - val version: String, - val updateUrl: String, - val changelog: String?, - val changelogMedia: String?, -) { - val repositoryUrl: String - get() = updateUrl - .replace("raw.githubusercontent.com", "github.com") - .replaceFirst("/builds.*".toRegex(), "") - - @Immutable - @Serializable - data class Author( - val name: String, - val id: Long, - val hyperlink: Boolean = true, - ) { - val discordUrl: String - get() = "https://discord.com/users/$id" - } -} diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt index c87907a..d931761 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/SettingsScreen.kt @@ -159,8 +159,8 @@ class SettingsScreen : Screen, Parcelable { painter = painterResource( when (preferences.installer) { InstallerSetting.PM -> R.drawable.ic_android - InstallerSetting.ROOT -> R.drawable.ic_code - InstallerSetting.Shizuku -> R.drawable.ic_tools + InstallerSetting.ROOT -> R.drawable.ic_hashtag + InstallerSetting.Shizuku -> R.drawable.ic_shizuku } ), contentDescription = null, diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/components/InstallerDialog.kt b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/components/InstallerDialog.kt index 79fe31b..1c6aaf1 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/components/InstallerDialog.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/screens/settings/components/InstallerDialog.kt @@ -56,8 +56,8 @@ fun InstallerDialog( painter = painterResource( when (installer) { InstallerSetting.PM -> R.drawable.ic_android - InstallerSetting.ROOT -> R.drawable.ic_code - InstallerSetting.Shizuku -> R.drawable.ic_tools + InstallerSetting.ROOT -> R.drawable.ic_hashtag + InstallerSetting.Shizuku -> R.drawable.ic_shizuku } ), contentDescription = null, diff --git a/app/src/main/res/drawable/ic_shizuku.xml b/app/src/main/res/drawable/ic_shizuku.xml new file mode 100644 index 0000000..280aebe --- /dev/null +++ b/app/src/main/res/drawable/ic_shizuku.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 79ed829..05fd600 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -73,28 +73,19 @@ Dark Light - Plugins - View changelog - Uninstall %s - Are you sure you want to uninstall the %s plugin? - No plugins installed! - Changelog Media - An error occurred while processing plugins! - Back About About Manager Open logs Settings - Lead Developers + %d contributions + Contributors Kettu - Creator GoonCord - Creator Bunny - Creator Creator of Vendetta Original Manager Creator - Other Developers - %s contributions Failed to load Metered network