diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index b8032a0..eeb593c 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -267,3 +267,4 @@ jobs: uses: sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} + description: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/README.md b/README.md index 76e9f8f..267ed94 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ [![GitHub Downloads](https://img.shields.io/github/downloads/cssnr/zipline-android/total?logo=android)](https://github.com/cssnr/zipline-android/releases/latest/download/app-release.apk) [![GitHub Release Version](https://img.shields.io/github/v/release/cssnr/zipline-android?logo=github&label=latest)](https://github.com/cssnr/zipline-android/releases/latest) +[![APK Size](https://badges.cssnr.com/gh/release/cssnr/zipline-android/latest/asset/app-release.apk/size?label=apk&color=darkgreen)](https://github.com/cssnr/zipline-android/releases/latest/download/app-release.apk) +[![AGP Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fraw.githubusercontent.com%2Fcssnr%2Fzipline-android%2Frefs%2Fheads%2Fmaster%2Fgradle%2Flibs.versions.toml&query=%24.versions.agp&logo=gradle&label=gradle)](https://github.com/cssnr/zipline-android/blob/master/gradle/libs.versions.toml#L2) [![Workflow Lint](https://img.shields.io/github/actions/workflow/status/cssnr/zipline-android/lint.yaml?logo=norton&logoColor=white&label=lint)](https://github.com/cssnr/zipline-android/actions/workflows/lint.yaml) [![Workflow Release](https://img.shields.io/github/actions/workflow/status/cssnr/zipline-android/release.yaml?logo=norton&logoColor=white&label=release)](https://github.com/cssnr/zipline-android/actions/workflows/release.yaml) -[![AGP Version](https://img.shields.io/badge/dynamic/toml?logo=gradle&label=agp&query=%24.versions.agp&url=https%3A%2F%2Fraw.githubusercontent.com%2Fcssnr%2Fzipline-android%2Frefs%2Fheads%2Fmaster%2Fgradle%2Flibs.versions.toml)](https://github.com/cssnr/zipline-android/blob/master/gradle/libs.versions.toml#L2) -[![GitHub Docs Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android-docs?logo=vitepress&logoColor=white&label=docs)](https://zipline-android.cssnr.com/) +[![GitHub Docs Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android-docs?logo=vitepress&logoColor=white&label=docs)](https://github.com/cssnr/zipline-android-docs) [![GitHub Last Commit](https://img.shields.io/github/last-commit/cssnr/zipline-android?logo=listenhub&label=updated)](https://github.com/cssnr/zipline-android/pulse) [![GitHub Repo Size](https://img.shields.io/github/repo-size/cssnr/zipline-android?logo=buffer&label=repo%20size)](https://github.com/cssnr/zipline-android?tab=readme-ov-file#readme) [![GitHub Top Language](https://img.shields.io/github/languages/top/cssnr/zipline-android?logo=devbox)](https://github.com/cssnr/zipline-android?tab=readme-ov-file#readme) @@ -64,8 +65,8 @@ _We are also developing a browser addon for all major browsers including Firefox -[![Latest Release](https://img.shields.io/github/v/release/cssnr/zipline-android?style=for-the-badge&logo=github&label=latest%20release)](https://github.com/cssnr/zipline-android/releases/latest) -[![Latest Pre-Release](https://img.shields.io/github/v/release/cssnr/zipline-android?style=for-the-badge&logo=github&include_prereleases&label=pre-release)](https://github.com/cssnr/zipline-android/releases) +[![Latest Release](https://img.shields.io/github/v/release/cssnr/zipline-android?style=for-the-badge&logo=github&label=latest%20release&color=34A853)](https://github.com/cssnr/zipline-android/releases/latest) +[![Latest Pre-Release](https://img.shields.io/github/v/release/cssnr/zipline-android?style=for-the-badge&logo=github&include_prereleases&label=pre-release&color=blue)](https://github.com/cssnr/zipline-android/releases) _Note: If installing directly, you may need to allow installation of apps from unknown sources. For more information, see [Release through a website](https://developer.android.com/studio/publish#publishing-website)._ @@ -151,7 +152,7 @@ The User Page can be used to edit your profile, avatar, and execute server actio If you are having trouble using the app, support is available via [GitHub](#support) or [Discord](https://discord.gg/wXy6m2X8wY). -[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://zipline-android.cssnr.com/faq) +[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=quicklook)](https://zipline-android.cssnr.com/faq) ## Screenshots @@ -196,18 +197,19 @@ A slideshow is available [on the website](https://zipline-android.cssnr.com/guid ## Support -[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=googledocs&logoColor=white)](https://zipline-android.cssnr.com/support) +[![View Documentation](https://img.shields.io/badge/view_documentation-blue?style=for-the-badge&logo=quicklook)](https://zipline-android.cssnr.com/support) -For general help or to request a feature, see: +If you run into any issues or need help getting started, please do one of the following: -- Q&A Discussion: https://github.com/cssnr/zipline-android/discussions/categories/q-a -- Request a Feature: https://github.com/cssnr/zipline-android/discussions/categories/feature-requests +- Report an Issue: +- Q&A Discussion: +- Request a Feature: +- Chat with us on Discord: -If you are experiencing an issue/bug or getting unexpected results, you can: - -- Report an Issue: https://github.com/cssnr/zipline-android/issues -- Chat with us on Discord: https://discord.gg/wXy6m2X8wY -- Provide General Feedback: [https://cssnr.github.io/feedback/](https://cssnr.github.io/feedback/?app=Zipline%20Android%20App) +[![Features](https://img.shields.io/badge/features-brightgreen?style=for-the-badge&logo=rocket&logoColor=white)](https://github.com/cssnr/zipline-android/issues/new?template=1-feature.yaml) +[![Issues](https://img.shields.io/badge/issues-red?style=for-the-badge&logo=southwestairlines&logoColor=white)](https://github.com/cssnr/zipline-android/issues) +[![Discussions](https://img.shields.io/badge/discussions-blue?style=for-the-badge&logo=livechat&logoColor=white)](https://github.com/cssnr/zipline-android/discussions) +[![Discord](https://img.shields.io/badge/discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/wXy6m2X8wY) # Development @@ -344,8 +346,8 @@ For a full list of current projects visit: [https://cssnr.github.io/](https://cs - - - Star History Chart + + + Star History Chart diff --git a/Taskfile.yml b/Taskfile.yml index 3519170..999b5e4 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -13,8 +13,8 @@ tasks: format: desc: Format aliases: [fmt] - cmd: | - prettier --write . + cmds: + - prettier --write . build: desc: Build (recommended android studio) diff --git a/app/src/main/java/org/cssnr/zipline/MainActivity.kt b/app/src/main/java/org/cssnr/zipline/MainActivity.kt index eb70bc2..fdfa8dd 100644 --- a/app/src/main/java/org/cssnr/zipline/MainActivity.kt +++ b/app/src/main/java/org/cssnr/zipline/MainActivity.kt @@ -231,10 +231,8 @@ class MainActivity : AppCompatActivity() { // Update Header Image val headerImage = headerView.findViewById(R.id.header_image) val radius = resources.getDimension(R.dimen.avatar_radius) - headerImage.setShapeAppearanceModel( - headerImage.shapeAppearanceModel.toBuilder() - .setAllCorners(CornerFamily.ROUNDED, radius).build() - ) + headerImage.shapeAppearanceModel = headerImage.shapeAppearanceModel.toBuilder() + .setAllCorners(CornerFamily.ROUNDED, radius).build() val file = File(filesDir, "avatar.png") if (file.exists()) { Log.i(LOG_TAG, "GLIDE LOAD - MainActivity - file.name: ${file.name}") diff --git a/app/src/main/java/org/cssnr/zipline/api/ServerApi.kt b/app/src/main/java/org/cssnr/zipline/api/ServerApi.kt index 5586a3f..1954944 100644 --- a/app/src/main/java/org/cssnr/zipline/api/ServerApi.kt +++ b/app/src/main/java/org/cssnr/zipline/api/ServerApi.kt @@ -820,7 +820,7 @@ class ServerApi(private val context: Context, url: String? = null) { @JsonClass(generateAdapter = true) data class StatusResponse(val status: String) - inner class SimpleCookieJar : CookieJar { + class SimpleCookieJar : CookieJar { private val cookieStore = mutableMapOf>() override fun saveFromResponse(url: HttpUrl, cookies: List) { diff --git a/app/src/main/java/org/cssnr/zipline/ui/files/FilesBottomSheet.kt b/app/src/main/java/org/cssnr/zipline/ui/files/FilesBottomSheet.kt index 20948a3..aa2fb6c 100644 --- a/app/src/main/java/org/cssnr/zipline/ui/files/FilesBottomSheet.kt +++ b/app/src/main/java/org/cssnr/zipline/ui/files/FilesBottomSheet.kt @@ -70,12 +70,10 @@ class FilesBottomSheet : BottomSheetDialogFragment() { val ctx = requireContext() val radius = ctx.resources.getDimension(R.dimen.image_preview_large) - binding.imagePreview.setShapeAppearanceModel( - binding.imagePreview.shapeAppearanceModel - .toBuilder() - .setAllCorners(CornerFamily.ROUNDED, radius) - .build() - ) + binding.imagePreview.shapeAppearanceModel = binding.imagePreview.shapeAppearanceModel + .toBuilder() + .setAllCorners(CornerFamily.ROUNDED, radius) + .build() viewModel.activeFile.observe(viewLifecycleOwner) { file -> Log.i("activeFile.observe", "file: $file") diff --git a/app/src/main/java/org/cssnr/zipline/ui/files/FilesViewAdapter.kt b/app/src/main/java/org/cssnr/zipline/ui/files/FilesViewAdapter.kt index 6b4168f..58bd2d0 100644 --- a/app/src/main/java/org/cssnr/zipline/ui/files/FilesViewAdapter.kt +++ b/app/src/main/java/org/cssnr/zipline/ui/files/FilesViewAdapter.kt @@ -154,12 +154,10 @@ class FilesViewAdapter( // Image - Holder val radius = context.resources.getDimension(R.dimen.image_preview_small) - viewHolder.fileImage.setShapeAppearanceModel( - viewHolder.fileImage.shapeAppearanceModel - .toBuilder() - .setAllCorners(CornerFamily.ROUNDED, radius) - .build() - ) + viewHolder.fileImage.shapeAppearanceModel = viewHolder.fileImage.shapeAppearanceModel + .toBuilder() + .setAllCorners(CornerFamily.ROUNDED, radius) + .build() // Image - Glide Listener val glideListener = object : RequestListener { diff --git a/app/src/main/java/org/cssnr/zipline/ui/home/HomeFragment.kt b/app/src/main/java/org/cssnr/zipline/ui/home/HomeFragment.kt index 83dbc95..894d061 100644 --- a/app/src/main/java/org/cssnr/zipline/ui/home/HomeFragment.kt +++ b/app/src/main/java/org/cssnr/zipline/ui/home/HomeFragment.kt @@ -19,13 +19,9 @@ import android.webkit.WebView import android.webkit.WebViewClient import androidx.activity.OnBackPressedCallback import androidx.activity.result.contract.ActivityResultContracts -import androidx.core.content.edit import androidx.core.net.toUri -import androidx.core.os.bundleOf import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.NavOptions -import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceManager import org.cssnr.zipline.R import org.cssnr.zipline.databinding.FragmentHomeBinding diff --git a/app/src/main/java/org/cssnr/zipline/ui/home/HomeViewModel.kt b/app/src/main/java/org/cssnr/zipline/ui/home/HomeViewModel.kt index 3e96513..018d1ac 100644 --- a/app/src/main/java/org/cssnr/zipline/ui/home/HomeViewModel.kt +++ b/app/src/main/java/org/cssnr/zipline/ui/home/HomeViewModel.kt @@ -13,7 +13,7 @@ class HomeViewModel : ViewModel() { _urlToLoad.value = Event(url) } - inner class Event(private val content: T) { + class Event(private val content: T) { private var hasBeenHandled = false fun getContentIfNotHandled(): T? { diff --git a/app/src/main/java/org/cssnr/zipline/ui/setup/SetupFragment.kt b/app/src/main/java/org/cssnr/zipline/ui/setup/SetupFragment.kt index 854d136..82e52c5 100644 --- a/app/src/main/java/org/cssnr/zipline/ui/setup/SetupFragment.kt +++ b/app/src/main/java/org/cssnr/zipline/ui/setup/SetupFragment.kt @@ -108,10 +108,8 @@ class SetupFragment : Fragment() { binding.appVersion.text = getString(R.string.version_string, versionName) val radius = ctx.resources.getDimension(R.dimen.avatar_radius) - binding.appIcon.setShapeAppearanceModel( - binding.appIcon.shapeAppearanceModel.toBuilder() - .setAllCorners(CornerFamily.ROUNDED, radius).build() - ) + binding.appIcon.shapeAppearanceModel = binding.appIcon.shapeAppearanceModel.toBuilder() + .setAllCorners(CornerFamily.ROUNDED, radius).build() val avatarFile = File(ctx.filesDir, "avatar.png") Log.d(UserFragment.LOG_TAG, "avatarFile: $avatarFile") diff --git a/app/src/main/java/org/cssnr/zipline/ui/user/UserFragment.kt b/app/src/main/java/org/cssnr/zipline/ui/user/UserFragment.kt index 3e7d9a7..51f8032 100644 --- a/app/src/main/java/org/cssnr/zipline/ui/user/UserFragment.kt +++ b/app/src/main/java/org/cssnr/zipline/ui/user/UserFragment.kt @@ -202,10 +202,8 @@ class UserFragment : Fragment() { //} val radius = ctx.resources.getDimension(R.dimen.avatar_radius) - binding.appIcon.setShapeAppearanceModel( - binding.appIcon.shapeAppearanceModel.toBuilder() - .setAllCorners(CornerFamily.ROUNDED, radius).build() - ) + binding.appIcon.shapeAppearanceModel = binding.appIcon.shapeAppearanceModel.toBuilder() + .setAllCorners(CornerFamily.ROUNDED, radius).build() val avatarFile = File(ctx.filesDir, "avatar.png") Log.d(LOG_TAG, "avatarFile: $avatarFile") diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 0000000..500e909 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,13 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/ecd23fd7707c683afbcd6052998cb6a9/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/ecd23fd7707c683afbcd6052998cb6a9/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/10fc3bf1ee0001078a473afe6e43cfdb/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/9c55677aff3966382f3d853c0959bfb2/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/ecd23fd7707c683afbcd6052998cb6a9/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248ffb1098f61659502d0c09aa348294/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ac151d55def6b6a9a159dc4cb4642851/redirect +toolchainVendor=JETBRAINS +toolchainVersion=21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 93a3765..dbe0254 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,10 +21,6 @@ webkit = "1.15.0" room = "2.8.4" media3 = "1.9.2" -googleServices = "4.4.4" -firebaseBom = "34.9.0" -crashlyticsPlugin = "3.0.6" - okhttp = "5.3.2" retrofit = "3.0.0" moshiKotlinCodegen = "1.15.2" @@ -34,6 +30,10 @@ konfettiXml = "2.0.5" photoview = "1.0.3" androidImageCropper = "4.7.0" +googleServices = "4.4.4" +firebaseBom = "34.9.0" +crashlyticsPlugin = "3.0.6" + [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } junit = { group = "junit", name = "junit", version.ref = "junit" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3e2d79a..857812e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Mon Apr 07 23:08:29 PDT 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle.kts b/settings.gradle.kts index 3d72072..b121936 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,5 @@ +@file:Suppress("UnstableApiUsage") + pluginManagement { repositories { google { @@ -11,6 +13,9 @@ pluginManagement { gradlePluginPortal() } } +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories {