Skip to content

Commit b6788d7

Browse files
Move some api from AweryLifecycle.kt,
Use external safeargsnext to fix broken builds, Updated target sdk to 35 Signed-off-by: MrBoom <github@mrboomdev.ru>
1 parent d4658af commit b6788d7

File tree

104 files changed

+1282
-396
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+1282
-396
lines changed

androidApp/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ val releaseVersion = properties["awery.app.version"].toString()
1919
val packageName = "com.mrboomdev.awery"
2020

2121
room {
22-
schemaDirectory("$projectDir/schemas")
22+
schemaDirectory("${projectDir}/../schemas")
2323
}
2424

2525
android {
@@ -130,8 +130,6 @@ dependencies {
130130
implementation(libs.androidx.fragment)
131131
implementation(libs.androidx.shortcuts)
132132
implementation(libs.androidx.preference)
133-
implementation(libs.xcrash)
134-
implementation(libs.retrostreams)
135133
implementation(libs.bundles.aniyomi)
136134
implementation(projects.ext)
137135
implementation(projects.resources)
@@ -192,7 +190,7 @@ dependencies {
192190
implementation(libs.coil.network.okhttp)
193191

194192
// Serialization
195-
implementation(files("../libs/safe-args-next.aar"))
193+
implementation(libs.safeargsnext)
196194
implementation(libs.kotlinx.serialization.json)
197195
implementation(libs.kotlinx.serialization.json.okio)
198196
implementation(libs.kotlinx.serialization.protobuf)
@@ -204,9 +202,11 @@ dependencies {
204202
implementation(libs.glide)
205203
implementation(libs.glide.okhttp3)
206204
implementation(libs.bundles.okhttp)
205+
implementation(libs.retrostreams)
207206

208207
// Debugging
209208
implementation(libs.androidx.compose.ui.tooling)
209+
implementation(libs.xcrash)
210210
debugImplementation(libs.leakcanary)
211211
}
212212

androidApp/mobile/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ plugins {
66

77
android {
88
namespace = "com.mrboomdev.awery.mobile"
9-
compileSdk = 34
9+
compileSdk = 35
1010

1111
defaultConfig {
1212
applicationId = "com.mrboomdev.awery.mobile"
1313
minSdk = 24
14-
targetSdk = 34
14+
targetSdk = 35
1515
versionCode = 1
1616
versionName = "1.0"
1717

androidApp/src/main/AndroidManifest.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -217,11 +217,6 @@
217217
android:windowSoftInputMode="adjustPan"
218218
android:exported="true" />
219219

220-
<activity
221-
android:name=".ui.mobile.screens.ReaderActivity"
222-
android:windowSoftInputMode="adjustPan"
223-
android:exported="false" />
224-
225220
<activity
226221
android:name=".ui.mobile.screens.settings.SettingsActivity"
227222
android:windowSoftInputMode="adjustPan"

androidApp/src/main/assets/app_settings.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,13 @@
512512
"title": "Remastered settings",
513513
"type": "boolean",
514514
"value": false
515+
},
516+
517+
{
518+
"key": "experiment_compose_ui",
519+
"title": "Compose UI",
520+
"type": "boolean",
521+
"value": false
515522
}
516523
]
517524
},

androidApp/src/main/java/com/mrboomdev/awery/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.mrboomdev.awery.app.App.Companion.database
1818
import com.mrboomdev.awery.app.App.Companion.getMoshi
1919
import com.mrboomdev.awery.app.App.Companion.isLandscape
2020
import com.mrboomdev.awery.app.App.Companion.navigationStyle
21-
import com.mrboomdev.awery.app.App.Companion.toast
2221
import com.mrboomdev.awery.app.AweryLifecycle.Companion.runDelayed
2322
import com.mrboomdev.awery.app.theme.ThemeManager.applyTheme
2423
import com.mrboomdev.awery.app.update.UpdatesManager
@@ -28,6 +27,7 @@ import com.mrboomdev.awery.data.settings.SettingsList
2827
import com.mrboomdev.awery.databinding.LayoutHeaderHomeBinding
2928
import com.mrboomdev.awery.databinding.ScreenMainBinding
3029
import com.mrboomdev.awery.generated.*
30+
import com.mrboomdev.awery.platform.android.AndroidGlobals.toast
3131
import com.mrboomdev.awery.platform.i18n
3232
import com.mrboomdev.awery.ui.mobile.components.EmptyStateView
3333
import com.mrboomdev.awery.ui.mobile.screens.catalog.feeds.FeedsFragment

androidApp/src/main/java/com/mrboomdev/awery/app/App.kt

Lines changed: 12 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@ import androidx.activity.OnBackPressedCallback
3131
import androidx.activity.OnBackPressedDispatcherOwner
3232
import androidx.activity.enableEdgeToEdge
3333
import androidx.annotation.AttrRes
34-
import androidx.annotation.StringRes
3534
import androidx.appcompat.app.AppCompatActivity
3635
import androidx.appcompat.widget.LinearLayoutCompat
3736
import androidx.browser.customtabs.CustomTabsIntent
3837
import androidx.core.app.ShareCompat.IntentBuilder
39-
import androidx.core.content.ContextCompat
4038
import androidx.core.content.getSystemService
4139
import androidx.core.content.pm.ShortcutInfoCompat
4240
import androidx.core.content.pm.ShortcutManagerCompat
@@ -52,7 +50,6 @@ import com.google.android.material.snackbar.Snackbar
5250
import com.mrboomdev.awery.BuildConfig
5351
import com.mrboomdev.awery.R
5452
import com.mrboomdev.awery.app.AweryLifecycle.Companion.anyContext
55-
import com.mrboomdev.awery.app.AweryLifecycle.Companion.appContext
5653
import com.mrboomdev.awery.app.AweryLifecycle.Companion.getAnyActivity
5754
import com.mrboomdev.awery.app.AweryLifecycle.Companion.runOnUiThread
5855
import com.mrboomdev.awery.app.AweryNotifications.registerNotificationChannels
@@ -64,6 +61,10 @@ import com.mrboomdev.awery.data.db.AweryDB
6461
import com.mrboomdev.awery.data.db.item.DBCatalogList
6562
import com.mrboomdev.awery.extensions.data.CatalogList
6663
import com.mrboomdev.awery.generated.*
64+
import com.mrboomdev.awery.platform.CrashHandler
65+
import com.mrboomdev.awery.platform.android.AndroidGlobals
66+
import com.mrboomdev.awery.platform.android.AndroidGlobals.isTv
67+
import com.mrboomdev.awery.platform.android.AndroidGlobals.toast
6768
import com.mrboomdev.awery.platform.i18n
6869
import com.mrboomdev.awery.ui.mobile.screens.BrowserActivity
6970
import com.mrboomdev.awery.ui.mobile.screens.IntentHandlerActivity
@@ -86,21 +87,21 @@ import kotlinx.coroutines.DelicateCoroutinesApi
8687
import kotlinx.coroutines.Dispatchers
8788
import kotlinx.coroutines.GlobalScope
8889
import kotlinx.coroutines.launch
89-
import org.jetbrains.compose.resources.StringResource
90-
import org.jetbrains.compose.resources.stringResource
9190
import java.util.WeakHashMap
9291

92+
private const val TAG = "App"
93+
private val backPressedCallbacks = WeakHashMap<Runnable, Any>()
94+
9395
class App : Application() {
9496

9597
override fun attachBaseContext(base: Context) {
96-
appContext = this
98+
AndroidGlobals.applicationContext = this
9799
super.attachBaseContext(base)
98-
CrashHandler.setupCrashListener(this)
100+
CrashHandler.setup()
99101
}
100102

101103
@OptIn(DelicateCoroutinesApi::class)
102104
override fun onCreate() {
103-
AndroidGlobals.applicationContext = this
104105
applyTheme()
105106
super.onCreate()
106107
setupStrictMode()
@@ -181,9 +182,6 @@ class App : Application() {
181182
}
182183

183184
companion object {
184-
private val backPressedCallbacks = WeakHashMap<Runnable, Any>()
185-
private const val TAG = "App"
186-
187185
var didInit = false
188186
private set
189187

@@ -194,7 +192,7 @@ class App : Application() {
194192
}
195193

196194
val database: AweryDB by lazy {
197-
databaseBuilder(appContext, AweryDB::class.java, "db")
195+
databaseBuilder(AndroidGlobals.applicationContext, AweryDB::class.java, "db")
198196
.addMigrations(AweryDB.MIGRATION_2_3, AweryDB.MIGRATION_3_4)
199197
.build()
200198
}
@@ -239,7 +237,7 @@ class App : Application() {
239237
}
240238

241239
fun copyToClipboard(clipData: ClipData) {
242-
appContext.getSystemService<ClipboardManager>()!!.setPrimaryClip(clipData)
240+
AndroidGlobals.applicationContext.getSystemService<ClipboardManager>()!!.setPrimaryClip(clipData)
243241

244242
// Android 13 and higher shows a visual confirmation of copied contents
245243
// https://developer.android.com/about/versions/13/features/copy-paste
@@ -281,16 +279,6 @@ class App : Application() {
281279
}
282280
}
283281

284-
private fun toastImpl(context: Context?, text: Any?, duration: Int = 0) {
285-
runOnUiThread { Toast.makeText(context, text.toString(), duration).show() }
286-
}
287-
288-
@JvmStatic
289-
@JvmOverloads
290-
fun toast(text: Any?, duration: Int = 0) {
291-
toastImpl(appContext, text, duration)
292-
}
293-
294282
/**
295283
* There is a bug in an appcompat library which sometimes throws an [NullPointerException].
296284
* This method tries to do it without throwing any exceptions.
@@ -388,18 +376,7 @@ class App : Application() {
388376

389377
@JvmStatic
390378
val isLandscape: Boolean
391-
get() = isLandscape(appContext)
392-
393-
@Suppress("DEPRECATION")
394-
@JvmStatic
395-
val isTv by lazy {
396-
with(appContext) {
397-
packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)
398-
|| packageManager.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
399-
|| getSystemService<UiModeManager>()!!.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION
400-
|| !packageManager.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN)
401-
}
402-
}
379+
get() = isLandscape(AndroidGlobals.applicationContext)
403380

404381
@JvmStatic
405382
@JvmOverloads

androidApp/src/main/java/com/mrboomdev/awery/app/AweryLifecycle.kt

Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import androidx.annotation.MainThread
1414
import androidx.fragment.app.Fragment
1515
import androidx.fragment.app.FragmentActivity
1616
import androidx.recyclerview.widget.RecyclerView
17-
import com.mrboomdev.awery.app.App.Companion.toast
1817
import com.mrboomdev.awery.platform.PlatformResources
18+
import com.mrboomdev.awery.platform.android.AndroidGlobals
19+
import com.mrboomdev.awery.platform.android.AndroidGlobals.toast
1920
import com.mrboomdev.awery.utils.UniqueIdGenerator
2021
import org.jetbrains.annotations.Contract
2122
import java.lang.ref.WeakReference
@@ -138,28 +139,6 @@ open class AweryLifecycle private constructor() : ActivityLifecycleCallbacks {
138139
private const val TAG = "AweryLifecycle"
139140
private var handler: Handler? = null
140141

141-
@JvmStatic
142-
fun restartApp() {
143-
Log.i(TAG, "restartApp() has been invoked!")
144-
145-
app!!.startActivity(Intent.makeRestartActivityTask(
146-
app!!.packageManager.getLaunchIntentForPackage(app!!.packageName)!!.component
147-
).apply {
148-
setPackage(app!!.packageName)
149-
})
150-
151-
app = null
152-
exitProcess(0)
153-
}
154-
155-
fun exitApp() {
156-
val activity = getAnyActivity(Activity::class.java)
157-
app = null
158-
159-
if(activity != null) activity.finishAffinity()
160-
else Runtime.getRuntime().exit(0)
161-
}
162-
163142
@JvmStatic
164143
@Deprecated(message = "Java")
165144
fun getActivity(context: Context): Activity? {
@@ -322,7 +301,7 @@ open class AweryLifecycle private constructor() : ActivityLifecycleCallbacks {
322301
if(activity != null) return activity
323302
} catch(ignored: IndexOutOfBoundsException) { }
324303

325-
return appContext
304+
return AndroidGlobals.applicationContext
326305
}
327306

328307
@get:SuppressLint("PrivateApi", "DiscouragedPrivateApi")
@@ -362,32 +341,6 @@ open class AweryLifecycle private constructor() : ActivityLifecycleCallbacks {
362341
}
363342
}
364343

365-
private var app: App? = null
366-
367-
@JvmStatic
368-
var appContext: App
369-
get() {
370-
contextUsingPrivateApi.let {
371-
if(it != null) {
372-
app = it
373-
return it
374-
}
375-
}
376-
377-
getAnyActivity(Activity::class.java)?.let {
378-
app = it.applicationContext as App
379-
return app!!
380-
}
381-
382-
return app!!
383-
}
384-
385-
set(value) {
386-
app = value
387-
value.registerActivityLifecycleCallbacks(AweryLifecycle())
388-
handler = Handler(Looper.getMainLooper())
389-
}
390-
391344
@JvmStatic
392345
fun cancelDelayed(runnable: Runnable?) {
393346
handler!!.removeCallbacks(runnable!!)

0 commit comments

Comments
 (0)