show notification in forward compatibility

This commit is contained in:
Chloe committed 2026-02-06 14:04:49 -07:00
1 parent 1adae94859
commit 4c0d9b88d2
3 files changed
+55 -21

No files matched your search

@@ -218,12 +218,32 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
setupPostLibraryLoad(gdPackageInfo)
try {
val geodeFailed = try {
loadGeodeLibrary()
false
} catch (e: UnsatisfiedLinkError) {
handleGeodeException(e)
true
} catch (e: Exception) {
handleGeodeException(e)
true
}
setupNotificationView(baseView, geodeFailed)
}
private fun setupNotificationView(baseView: FrameLayout, geodeFailed: Boolean) {
val disableNotification = PreferenceUtils.get(this).getBoolean(PreferenceUtils.Key.DISABLE_REDESIGN)
if (!disableNotification) {
val cards = determineDisplayedCards(this, geodeFailed)
if (cards.isNotEmpty()) {
val notificationView = ComposeView(this)
baseView.addView(notificationView)
notificationView.setContent {
LaunchNotification(cards)
}
}
}
}
@@ -444,19 +464,6 @@ class GeometryDashActivity : AppCompatActivity(), Cocos2dxHelper.Cocos2dxHelperL
this.mGLSurfaceView = glSurfaceView
frameLayout.addView(this.mGLSurfaceView)
val disableNotification = PreferenceUtils.get(this).getBoolean(PreferenceUtils.Key.DISABLE_REDESIGN)
if (!disableNotification) {
val hasCards = determineDisplayedCards(this)
if (hasCards.isNotEmpty()) {
val notificationView = ComposeView(this)
frameLayout.addView(notificationView)
notificationView.setContent {
LaunchNotification()
}
}
}
glSurfaceView.setEGLContextClientVersion(2)
glSurfaceView.setEGLConfigChooser(EGLConfigChooser())
@@ -43,10 +43,10 @@ import com.geode.launcher.utils.PreferenceUtils
import kotlinx.coroutines.delay
enum class LaunchNotificationType {
GEODE_UPDATED, LAUNCHER_UPDATE_AVAILABLE, UPDATE_FAILED, UNSUPPORTED_VERSION;
GEODE_UPDATED, LAUNCHER_UPDATE_AVAILABLE, UPDATE_FAILED, UNSUPPORTED_VERSION, FAILED_LOAD;
}
fun determineDisplayedCards(context: Context): List<LaunchNotificationType> {
fun determineDisplayedCards(context: Context, geodeFailed: Boolean = false): List<LaunchNotificationType> {
val cards = mutableListOf<LaunchNotificationType>()
if (GamePackageUtils.getGameVersionCode(context.packageManager) < Constants.SUPPORTED_VERSION_CODE_MIN_WARNING) {
@@ -71,6 +71,10 @@ fun determineDisplayedCards(context: Context): List<LaunchNotificationType> {
cards.add(LaunchNotificationType.UPDATE_FAILED)
}
if (geodeFailed) {
cards.add(LaunchNotificationType.FAILED_LOAD)
}
return cards
}
@@ -105,21 +109,22 @@ fun NotificationCardFromType(type: LaunchNotificationType) {
OutdatedVersionContent()
}
}
LaunchNotificationType.FAILED_LOAD -> {
AnimatedNotificationCard {
ForwardCompatibilityContent()
}
}
else -> {}
}
}
@Composable
fun LaunchNotification() {
val context = LocalContext.current
fun LaunchNotification(cards: List<LaunchNotificationType>) {
val themeOption by PreferenceUtils.useIntPreference(PreferenceUtils.Key.THEME)
val theme = Theme.fromInt(themeOption)
val backgroundOption by PreferenceUtils.useBooleanPreference(PreferenceUtils.Key.BLACK_BACKGROUND)
val cards = determineDisplayedCards(context)
CompositionLocalProvider(LocalTheme provides theme) {
GeodeLauncherTheme(theme = theme, blackBackground = backgroundOption) {
// surface is not in use, so this is unfortunately not provided
@@ -257,4 +262,23 @@ fun UpdateFailedContent(modifier: Modifier = Modifier) {
},
modifier = modifier.width(IntrinsicSize.Max)
)
}
@Composable
fun ForwardCompatibilityContent(modifier: Modifier = Modifier) {
ListItem(
headlineContent = {
Text(text = stringResource(id = R.string.launcher_notification_forwards_compatibility))
},
leadingContent = {
Icon(
painterResource(R.drawable.icon_warning),
contentDescription = null,
)
},
supportingContent = {
Text(text = stringResource(id = R.string.launcher_notification_forwards_compatibility_description))
},
modifier = modifier.width(IntrinsicSize.Max)
)
}
+3
View File
@@ -62,6 +62,9 @@
<string name="launcher_notification_update_success">Geode updated!</string>
<string name="launcher_notification_compatibility">Unsupported Geometry Dash version.</string>
<string name="launcher_notification_compatibility_description">An update is required to receive Geode updates.</string>
<string name="launcher_notification_forwards_compatibility_description">Geode failed to load.</string>
<string name="launcher_notification_forwards_compatibility">Unsupported Geometry Dash version.</string>
<string name="launcher_notification_update_cta">Tap for more information.</string>
<string name="launcher_self_update_failed_title">Update failed</string>