Skip to content

Commit

Permalink
Implemented disabled plug-in list
Browse files Browse the repository at this point in the history
  • Loading branch information
zhufucdev committed Jul 24, 2023
1 parent e7332cd commit 8cebb76
Show file tree
Hide file tree
Showing 53 changed files with 509 additions and 115 deletions.
11 changes: 10 additions & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
18 changes: 18 additions & 0 deletions api/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
plugins {
id 'java-library'
id 'org.jetbrains.kotlin.jvm'
}

java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}

kotlin {
jvmToolchain(11)
}

dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:${kotlinx_serialization_version}"
implementation "io.ktor:ktor-client-core-jvm:${ktor_version}"
}
50 changes: 50 additions & 0 deletions api/src/main/java/com/zhufucdev/api/Extension.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.zhufucdev.api

import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.parameter
import io.ktor.client.request.url
import io.ktor.http.isSuccess

suspend fun HttpClient.getReleaseAsset(
apiUri: String,
product: String,
current: String,
architect: String?
): ReleaseAsset? {
val req = get {
url(apiUri)
parameter("product", product)
parameter("current", current)
if (architect != null) {
parameter("arch", architect)
}
}
if (!req.status.isSuccess()) {
return null
}
return req.body<ReleaseAsset>()
}

suspend fun HttpClient.findAsset(
apiUri: String,
vararg category: String,
current: String? = null,
architect: String? = null
): List<ProductQuery> {
val req = get {
url(apiUri)
parameter("category", category.joinToString(","))
if (current != null) {
parameter("current", current)
}
if (architect != null) {
parameter("arch", architect)
}
}
if (!req.status.isSuccess()) {
return emptyList()
}
return req.body<List<ProductQuery>>()
}
6 changes: 6 additions & 0 deletions api/src/main/java/com/zhufucdev/api/ProductQuery.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.zhufucdev.api

import kotlinx.serialization.Serializable

@Serializable
data class ProductQuery(val name: String, val key: String, val category: List<String>)
6 changes: 6 additions & 0 deletions api/src/main/java/com/zhufucdev/api/ReleaseAsset.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.zhufucdev.api

import kotlinx.serialization.Serializable

@Serializable
data class ReleaseAsset(val versionName: String, val productName: String, val url: String)
3 changes: 2 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ android {
dependencies {
// Internal
implementation project(':stub')
implementation project(':api')
implementation project(':update')
// Ktor
implementation "io.ktor:ktor-client-core-jvm:${ktor_version}"
Expand All @@ -99,7 +100,7 @@ dependencies {
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:${corotinues_version}"
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:${kotlinx_serialization_version}"
implementation "androidx.work:work-runtime-ktx:2.8.1"
// Compose
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_runtime_version"
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/com/zhufucdev/motion_emulator/Constants.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@ import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.drawscope.DrawScope
import com.amap.api.maps.AMapUtils
import com.amap.api.maps.CoordinateConverter
import com.google.maps.android.SphericalUtil
import com.zhufucdev.stub.MapProjector
import com.zhufucdev.stub.Projector
import com.zhufucdev.stub.Vector2D
import com.zhufucdev.stub.lenTo
import com.zhufucdev.motion_emulator.toAmapLatLng
import com.zhufucdev.motion_emulator.toGoogleLatLng
import com.zhufucdev.motion_emulator.extension.toAmapLatLng
import com.zhufucdev.motion_emulator.ui.manager.FactorCanvas
import kotlin.math.pow
import kotlin.math.sqrt
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package com.zhufucdev.motion_emulator
package com.zhufucdev.motion_emulator.extension

import android.content.Context
import com.amap.api.maps.MapsInitializer
import com.amap.api.maps.model.LatLng
import com.amap.api.services.core.LatLonPoint
import com.zhufucdev.motion_emulator.BuildConfig
import com.zhufucdev.motion_emulator.data.AMapProjector
import com.zhufucdev.stub.*
import io.ktor.client.call.*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.zhufucdev.motion_emulator.extension

import com.zhufucdev.motion_emulator.BuildConfig

const val FILE_PROVIDER_AUTHORITY = "${BuildConfig.APPLICATION_ID}.file_provider"
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.zhufucdev.motion_emulator
package com.zhufucdev.motion_emulator.extension

import android.content.Context
import android.location.Geocoder
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.zhufucdev.motion_emulator.extension

import android.content.Context
import com.zhufucdev.motion_emulator.BuildConfig
import java.io.File

fun Updater(product: String, context: Context) = com.zhufucdev.update.Updater(
BuildConfig.SERVER_URI,
product,
context,
File(context.externalCacheDir, "update")
)

fun Updater(context: Context) = Updater(BuildConfig.PRODUCT, context)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.zhufucdev.motion_emulator
package com.zhufucdev.motion_emulator.extension

import android.app.Activity
import android.content.Context
Expand All @@ -21,22 +21,18 @@ import androidx.preference.PreferenceManager
import com.zhufucdev.stub.*
import com.zhufucdev.stub.Emulation
import com.zhufucdev.motion_emulator.provider.EmulationRef
import com.zhufucdev.update.Updater
import io.ktor.client.*
import io.ktor.client.engine.android.*
import io.ktor.client.plugins.*
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.serialization.kotlinx.json.*
import java.io.File
import java.math.RoundingMode
import java.text.DateFormat
import java.text.DecimalFormat
import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.pow
import kotlin.math.sqrt
import kotlin.time.Duration
import kotlin.time.Duration.Companion.seconds

Expand Down Expand Up @@ -201,6 +197,3 @@ fun Context.lazySharedPreferences() = lazy { this.sharedPreferences() }

fun Fragment.lazySharedPreferences() = lazy { requireContext().sharedPreferences() }

fun Context.updater() = updater(BuildConfig.PRODUCT)

fun Context.updater(product: String) = Updater(BuildConfig.SERVER_URI, product, this, File(externalCacheDir, "update"))
21 changes: 21 additions & 0 deletions app/src/main/java/com/zhufucdev/motion_emulator/plugin/Plugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ package com.zhufucdev.motion_emulator.plugin
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import androidx.compose.runtime.Stable
import com.zhufucdev.stub.BROADCAST_AUTHORITY

@Stable
class Plugin(val packageName: String, val name: String, val description: String) {

private fun Context.broadcast(message: String) {
Expand All @@ -25,4 +27,23 @@ class Plugin(val packageName: String, val name: String, val description: String)
fun notifySettingsChanged(context: Context) {
context.broadcast("SETTINGS_CHANGED")
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false

other as Plugin

if (packageName != other.packageName) return false
if (name != other.name) return false
return description == other.description
}

override fun hashCode(): Int {
var result = packageName.hashCode()
result = 31 * result + name.hashCode()
result = 31 * result + description.hashCode()
return result
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import android.content.Context
import android.content.SharedPreferences
import android.content.pm.PackageManager
import androidx.core.content.edit
import com.zhufucdev.motion_emulator.sharedPreferences
import com.zhufucdev.motion_emulator.extension.sharedPreferences

/**
* The plug-in manager
Expand All @@ -13,7 +13,8 @@ import com.zhufucdev.motion_emulator.sharedPreferences
* means it's got global lifespan
*/
object Plugins {
private lateinit var available: List<Plugin>
lateinit var available: List<Plugin>
private set
private lateinit var prefs: SharedPreferences
fun init(context: Context) {
prefs = context.sharedPreferences()
Expand All @@ -23,7 +24,11 @@ object Plugins {
it.enabled && it.metaData?.getBoolean("me_plugin") == true
}
.map {
Plugin(it.packageName, it.name, it.metaData.getString("me_description", ""))
Plugin(
it.packageName,
context.packageManager.getApplicationLabel(it).toString(),
it.metaData.getString("me_description", "")
)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
package com.zhufucdev.motion_emulator.provider

import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.core.content.edit
import com.aventrix.jnanoid.jnanoid.NanoIdUtils
import com.zhufucdev.stub.BROADCAST_AUTHORITY
import com.zhufucdev.stub.Emulation
import com.zhufucdev.stub.EmulationInfo
import com.zhufucdev.stub.Intermediate
import com.zhufucdev.motion_emulator.lazySharedPreferences
import com.zhufucdev.motion_emulator.plugin.Plugin
import com.zhufucdev.motion_emulator.extension.lazySharedPreferences
import com.zhufucdev.motion_emulator.plugin.Plugins
import io.ktor.http.*
import io.ktor.serialization.kotlinx.*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import android.content.UriMatcher
import android.database.Cursor
import android.database.MatrixCursor
import android.net.Uri
import com.zhufucdev.motion_emulator.sharedPreferences
import com.zhufucdev.motion_emulator.extension.sharedPreferences
import com.zhufucdev.stub.Method
import com.zhufucdev.stub.SETTINGS_PROVIDER_AUTHORITY

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import com.zhufucdev.motion_emulator.data.Cells
import com.zhufucdev.motion_emulator.data.Motions
import com.zhufucdev.motion_emulator.data.Traces
import com.zhufucdev.motion_emulator.databinding.ActivityEmulateBinding
import com.zhufucdev.motion_emulator.initializeToolbar
import com.zhufucdev.motion_emulator.setUpStatusBar
import com.zhufucdev.motion_emulator.extension.initializeToolbar
import com.zhufucdev.motion_emulator.extension.setUpStatusBar

class EmulateActivity : AppCompatActivity() {
private lateinit var binding: ActivityEmulateBinding
Expand Down
16 changes: 5 additions & 11 deletions app/src/main/java/com/zhufucdev/motion_emulator/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,12 @@ import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.lifecycle.lifecycleScope
import com.zhufucdev.motion_emulator.lazySharedPreferences
import com.zhufucdev.motion_emulator.extension.Updater
import com.zhufucdev.motion_emulator.extension.lazySharedPreferences
import com.zhufucdev.motion_emulator.plugin.Plugins
import com.zhufucdev.motion_emulator.setUpStatusBar
import com.zhufucdev.motion_emulator.extension.setUpStatusBar
import com.zhufucdev.motion_emulator.ui.home.AppHome
import com.zhufucdev.motion_emulator.ui.theme.MotionEmulatorTheme
import com.zhufucdev.motion_emulator.updater
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
private val preferences by lazySharedPreferences()
Expand All @@ -26,13 +23,10 @@ class MainActivity : AppCompatActivity() {
MotionEmulatorTheme {
val plugins = remember { Plugins.enabled.size }
val updater = remember {
updater()
Updater(this)
}
val coroutine = rememberCoroutineScope()
LaunchedEffect(Unit) {
coroutine.launch {
updater.check()
}
updater.check()
}

AppHome(updater = updater, enabledPlugins = plugins) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import androidx.activity.compose.setContent
import androidx.compose.runtime.CompositionLocalProvider
import androidx.lifecycle.ViewModelProvider
import com.zhufucdev.motion_emulator.data.*
import com.zhufucdev.motion_emulator.setUpStatusBar
import com.zhufucdev.motion_emulator.extension.setUpStatusBar
import com.zhufucdev.motion_emulator.ui.manager.*
import com.zhufucdev.motion_emulator.ui.theme.MotionEmulatorTheme

Expand Down
Loading

0 comments on commit 8cebb76

Please sign in to comment.