mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
v4.3.2 - Implemented Swipe-to-Focus behavior, minor fixes
This commit is contained in:
1 parent
ad0ff6859e
commit
22607e7710
8 files changed
+75
-27
No files matched your search
@@ -33,7 +33,7 @@ jobs:
|
|||||||
- name: Sign APK
|
- name: Sign APK
|
||||||
run: |
|
run: |
|
||||||
echo "${{ secrets.KEY_STORE }}" | base64 -d > keystore.jks
|
echo "${{ secrets.KEY_STORE }}" | base64 -d > keystore.jks
|
||||||
APK=$(find app/build/outputs/apk/release -name "*.apk" -not -name "*unsigned*" | head -1)
|
APK=$(find app/build/outputs/apk/release -name "*.apk" | head -1)
|
||||||
BUILD_TOOLS=$(ls -d ${ANDROID_HOME}/build-tools/*/ | sort -V | tail -1)
|
BUILD_TOOLS=$(ls -d ${ANDROID_HOME}/build-tools/*/ | sort -V | tail -1)
|
||||||
${BUILD_TOOLS}apksigner sign \
|
${BUILD_TOOLS}apksigner sign \
|
||||||
--ks keystore.jks \
|
--ks keystore.jks \
|
||||||
@@ -44,6 +44,17 @@ jobs:
|
|||||||
"$APK"
|
"$APK"
|
||||||
rm keystore.jks
|
rm keystore.jks
|
||||||
|
|
||||||
|
- name: Sign Bundle
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.KEY_STORE }}" | base64 -d > keystore.jks
|
||||||
|
AAB=$(find app/build/outputs/bundle/release -name "*.aab" | head -1)
|
||||||
|
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \
|
||||||
|
-keystore keystore.jks \
|
||||||
|
-storepass ${{ secrets.KEY_STORE_PASSWORD }} \
|
||||||
|
-keypass ${{ secrets.KEY_PASSWORD }} \
|
||||||
|
"$AAB" ${{ secrets.KEY_ALIAS }}
|
||||||
|
rm keystore.jks
|
||||||
|
|
||||||
- name: Setup Ruby
|
- name: Setup Ruby
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
@@ -59,7 +70,8 @@ jobs:
|
|||||||
--json_key service_account.json \
|
--json_key service_account.json \
|
||||||
--package_name com.rtbishop.look4sat \
|
--package_name com.rtbishop.look4sat \
|
||||||
--track production \
|
--track production \
|
||||||
--metadata_path fastlane/metadata/android
|
--skip_upload_images true \
|
||||||
|
--skip_upload_screenshots true \
|
||||||
rm service_account.json
|
rm service_account.json
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
|
|||||||
@@ -14,9 +14,11 @@
|
|||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".MainApplication"
|
android:name=".MainApplication"
|
||||||
|
android:allowBackup="false"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round">
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
|
android:usesCleartextTraffic="true">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ import com.rtbishop.look4sat.feature.settings.SettingsDestination
|
|||||||
fun MainScreen() {
|
fun MainScreen() {
|
||||||
val backStack = rememberNavBackStack(Screen.Passes)
|
val backStack = rememberNavBackStack(Screen.Passes)
|
||||||
val currentKey = backStack.lastOrNull()
|
val currentKey = backStack.lastOrNull()
|
||||||
val navigateBack: () -> Unit = { backStack.removeAt(backStack.size - 1) }
|
val navigateBack: () -> Unit = { if (backStack.size > 1) backStack.removeAt(backStack.size - 1) }
|
||||||
val fadeTransition = fadeIn(animationSpec = tween(350)) togetherWith fadeOut(animationSpec = tween(350))
|
val fadeTransition = fadeIn(animationSpec = tween(350)) togetherWith fadeOut(animationSpec = tween(350))
|
||||||
// val slideInTransition = slideInHorizontally(initialOffsetX = { it }) togetherWith scaleOut(targetScale = 0.9f)
|
// val slideInTransition = slideInHorizontally(initialOffsetX = { it }) togetherWith scaleOut(targetScale = 0.9f)
|
||||||
// val slideOutTransition = scaleIn(initialScale = 0.9f) togetherWith slideOutHorizontally(targetOffsetX = { it })
|
// val slideOutTransition = scaleIn(initialScale = 0.9f) togetherWith slideOutHorizontally(targetOffsetX = { it })
|
||||||
|
|||||||
@@ -49,10 +49,9 @@
|
|||||||
\n\nPlease update the database at least weekly to get accurate predictions.</string>
|
\n\nPlease update the database at least weekly to get accurate predictions.</string>
|
||||||
<string name="pass_whatsnew_title" translatable="false">What\'s new in Look4Sat</string>
|
<string name="pass_whatsnew_title" translatable="false">What\'s new in Look4Sat</string>
|
||||||
<string name="pass_whatsnew_message" translatable="false">
|
<string name="pass_whatsnew_message" translatable="false">
|
||||||
* Added fixes for Chinese translation, by Mubi-Baihua (#216)
|
* Implemented Swipe-to-Focus behavior for passes - swipe right on a pass to focus it, and left - to unfocus
|
||||||
\n* Added zipped data sources handling to DatabaseRepo
|
\n\n* Implemented preserving the pass selection between the Radar and Map screens. Not every satellite has
|
||||||
\n* Tweaked Passes list to show DeepSpace ones at the top
|
a pass overhead every day, so this should make it only slightly easier to keep track of certain satellites.
|
||||||
\n* Tweaked RadarView to display sun/moon positions correctly
|
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<!-- Radar screen -->
|
<!-- Radar screen -->
|
||||||
|
|||||||
@@ -1,4 +1,2 @@
|
|||||||
* Added fixes for Chinese translation, by Mubi-Baihua (#216)
|
* Implemented Swipe-to-Focus behavior for passes - swipe right on a pass to focus it, and left - to unfocus
|
||||||
* Added zipped data sources handling to DatabaseRepo
|
* Implemented preserving the pass selection between the Radar and Map screens. Not every satellite has a pass overhead every day, so this should make it only slightly easier to keep track of certain satellites.
|
||||||
* Tweaked Passes list to show DeepSpace ones at the top
|
|
||||||
* Tweaked RadarView to display sun/moon positions correctly
|
|
||||||
@@ -127,10 +127,16 @@ class MapViewModel(
|
|||||||
val dateNow = Date()
|
val dateNow = Date()
|
||||||
getStationPosition()
|
getStationPosition()
|
||||||
getSatTrack(orbitalObject, stationPos, dateNow)
|
getSatTrack(orbitalObject, stationPos, dateNow)
|
||||||
|
// Scale update interval based on satellite count to avoid excessive CPU usage
|
||||||
|
val effectiveRate = when {
|
||||||
|
allSatellites.size > 5000 -> maxOf(updateFreq, 3000L)
|
||||||
|
allSatellites.size > 1000 -> maxOf(updateFreq, 2000L)
|
||||||
|
else -> updateFreq
|
||||||
|
}
|
||||||
while (isActive) {
|
while (isActive) {
|
||||||
dateNow.time = System.currentTimeMillis()
|
dateNow.time = System.currentTimeMillis()
|
||||||
updateMapState(orbitalObject, allSatellites, stationPos, dateNow)
|
updateMapState(orbitalObject, allSatellites, stationPos, dateNow)
|
||||||
delay(updateFreq)
|
delay(effectiveRate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-12
@@ -185,32 +185,63 @@ private fun SettingsScreen(uiState: SettingsState, onAction: (SettingsAction) ->
|
|||||||
val gitHubUrl = stringResource(R.string.prefs_github_url)
|
val gitHubUrl = stringResource(R.string.prefs_github_url)
|
||||||
val licenseUrl = stringResource(R.string.prefs_license_url)
|
val licenseUrl = stringResource(R.string.prefs_license_url)
|
||||||
val privacyUrl = stringResource(R.string.prefs_privacy_url)
|
val privacyUrl = stringResource(R.string.prefs_privacy_url)
|
||||||
|
val safeOpenUri: (String) -> Unit = { url ->
|
||||||
|
try { uriHandler.openUri(url) } catch (_: Exception) {}
|
||||||
|
}
|
||||||
|
|
||||||
ScreenColumn(
|
ScreenColumn(
|
||||||
topBar = { isVerticalLayout ->
|
topBar = { isVerticalLayout ->
|
||||||
if (isVerticalLayout) {
|
if (isVerticalLayout) {
|
||||||
TopBar {
|
TopBar {
|
||||||
TopCard(onClick = { uriHandler.openUri(appUrl) }, version = uiState.appVersionName, modifier = Modifier.weight(1f))
|
TopCard(
|
||||||
PrimaryIconCard(onClick = { uriHandler.openUri(donateUrl) }, resId = R.drawable.ic_pound)
|
onClick = { safeOpenUri(appUrl) },
|
||||||
|
version = uiState.appVersionName,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
|
)
|
||||||
|
PrimaryIconCard(onClick = { safeOpenUri(donateUrl) }, resId = R.drawable.ic_pound)
|
||||||
}
|
}
|
||||||
TopBar {
|
TopBar {
|
||||||
Row(modifier = Modifier.weight(1f), horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
Row(modifier = Modifier.weight(1f), horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
BotCard(onClick = { uriHandler.openUri(fdroidUrl) }, R.drawable.ic_fdroid, fdroidTitle, modifier = Modifier.weight(1f))
|
BotCard(
|
||||||
BotCard(onClick = { uriHandler.openUri(gitHubUrl) }, R.drawable.ic_github, gitHubTitle, modifier = Modifier.weight(1f))
|
onClick = { safeOpenUri(fdroidUrl) },
|
||||||
|
resId = R.drawable.ic_fdroid,
|
||||||
|
text = fdroidTitle,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
|
)
|
||||||
|
BotCard(
|
||||||
|
onClick = { safeOpenUri(gitHubUrl) },
|
||||||
|
resId = R.drawable.ic_github,
|
||||||
|
text = gitHubTitle,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
IconCard(action = { uriHandler.openUri(licenseUrl) }, resId = R.drawable.ic_license)
|
IconCard(action = { safeOpenUri(licenseUrl) }, resId = R.drawable.ic_license)
|
||||||
IconCard(action = { uriHandler.openUri(privacyUrl) }, resId = R.drawable.ic_policy)
|
IconCard(action = { safeOpenUri(privacyUrl) }, resId = R.drawable.ic_policy)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
TopBar {
|
TopBar {
|
||||||
PrimaryIconCard(onClick = { uriHandler.openUri(donateUrl) }, resId = R.drawable.ic_pound)
|
PrimaryIconCard(onClick = { safeOpenUri(donateUrl) }, resId = R.drawable.ic_pound)
|
||||||
TopCard(onClick = { uriHandler.openUri(appUrl) }, version = uiState.appVersionName, modifier = Modifier.weight(1f))
|
TopCard(
|
||||||
|
onClick = { safeOpenUri(appUrl) },
|
||||||
|
version = uiState.appVersionName,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
|
)
|
||||||
Row(modifier = Modifier.weight(1f), horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
Row(modifier = Modifier.weight(1f), horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
BotCard(onClick = { uriHandler.openUri(fdroidUrl) }, R.drawable.ic_fdroid, fdroidTitle, modifier = Modifier.weight(1f))
|
BotCard(
|
||||||
BotCard(onClick = { uriHandler.openUri(gitHubUrl) }, R.drawable.ic_github, gitHubTitle, modifier = Modifier.weight(1f))
|
onClick = { safeOpenUri(fdroidUrl) },
|
||||||
|
resId = R.drawable.ic_fdroid,
|
||||||
|
text = fdroidTitle,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
|
)
|
||||||
|
BotCard(
|
||||||
|
onClick = { safeOpenUri(gitHubUrl) },
|
||||||
|
resId = R.drawable.ic_github,
|
||||||
|
text = gitHubTitle,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
IconCard(action = { uriHandler.openUri(licenseUrl) }, resId = R.drawable.ic_license)
|
IconCard(action = { safeOpenUri(licenseUrl) }, resId = R.drawable.ic_license)
|
||||||
IconCard(action = { uriHandler.openUri(privacyUrl) }, resId = R.drawable.ic_policy)
|
IconCard(action = { safeOpenUri(privacyUrl) }, resId = R.drawable.ic_policy)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
[versions]
|
[versions]
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
appVersionCode = "431"
|
appVersionCode = "432"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
appVersionName = "4.3.1"
|
appVersionName = "4.3.2"
|
||||||
#noinspection GradleDependency,UnusedVersionCatalogEntry
|
#noinspection GradleDependency,UnusedVersionCatalogEntry
|
||||||
compileSdk = "36"
|
compileSdk = "36"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
|
|||||||
Reference in new issue
Block a user